feat(dc): Complete Phase 1 - Portal workbench page development
Summary: - Implement DC module Portal page with 3 tool cards - Create ToolCard component with decorative background and hover animations - Implement TaskList component with table layout and progress bars - Implement AssetLibrary component with tab switching and file cards - Complete database verification (4 tables confirmed) - Complete backend API verification (6 endpoints ready) - Optimize UI to match prototype design (V2.html) Frontend Components (~715 lines): - components/ToolCard.tsx - Tool cards with animations - components/TaskList.tsx - Recent tasks table view - components/AssetLibrary.tsx - Data asset library with tabs - hooks/useRecentTasks.ts - Task state management - hooks/useAssets.ts - Asset state management - pages/Portal.tsx - Main portal page - types/portal.ts - TypeScript type definitions Backend Verification: - Backend API: 1495 lines code verified - Database: dc_schema with 4 tables verified - API endpoints: 6 endpoints tested (templates API works) Documentation: - Database verification report - Backend API test report - Phase 1 completion summary - UI optimization report - Development task checklist - Development plan for Tool B Status: Phase 1 completed (100%), ready for browser testing Next: Phase 2 - Tool B Step 1 and 2 development
This commit is contained in:
@@ -1,12 +1,95 @@
|
||||
# Git 提交规范
|
||||
|
||||
> **版本:** v1.0
|
||||
> **版本:** v1.1
|
||||
> **创建日期:** 2025-11-16
|
||||
> **更新日期:** 2025-11-28
|
||||
> **适用范围:** 全项目(前端 + 后端 + 文档)
|
||||
> **优先级:** ⭐⭐⭐⭐⭐ P0 必须遵守
|
||||
|
||||
---
|
||||
|
||||
## 🚨 紧急警告:必须每日提交!
|
||||
|
||||
> **🔴🔴🔴 血泪教训:DC模块代码全部丢失事件(2025-11-28)🔴🔴🔴**
|
||||
|
||||
### 事件回顾
|
||||
|
||||
**时间**:2025-11-27 - 2025-11-28
|
||||
**丢失内容**:DC模块完整代码(约2天开发量)
|
||||
- ❌ 4个Prisma数据表定义
|
||||
- ❌ 4个Service类(HealthCheckService、TemplateService等)
|
||||
- ❌ Controller和Routes
|
||||
- ❌ 所有TypeScript代码文件
|
||||
|
||||
**保留内容**:
|
||||
- ✅ 设计文档(数据库设计、API设计)
|
||||
- ✅ 开发记录(Day2、Day3完成总结)
|
||||
- ✅ 空目录结构
|
||||
|
||||
**丢失原因**:
|
||||
- ❌ **代码写完后未提交到Git**
|
||||
- ❌ **代码仅存在于Cursor临时缓存中**
|
||||
- ❌ **Cursor缓存清理后,代码永久丢失**
|
||||
- ❌ **Git中无任何提交记录,无法恢复**
|
||||
|
||||
### 🔥 强制规则(立即生效)
|
||||
|
||||
```bash
|
||||
# ⭐⭐⭐⭐⭐ 每天下班前必须执行(无例外!)
|
||||
git status
|
||||
git add .
|
||||
git commit -m "feat(module): Complete Day X development"
|
||||
git push origin master
|
||||
|
||||
# ⚠️ 不提交 = 代码随时可能丢失!
|
||||
```
|
||||
|
||||
**提交时机(任选其一,发生时必须提交):**
|
||||
1. ✅ **每天下班前**(最重要!无论代码是否完美)
|
||||
2. ✅ **每次长时间离开电脑前**(午休、会议、外出)
|
||||
3. ✅ **完成重要功能后**
|
||||
4. ✅ **准备关闭Cursor前**
|
||||
5. ✅ **电脑出现异常前**(如卡顿、死机征兆)
|
||||
|
||||
**绝对禁止:**
|
||||
- 🔴 **禁止**依赖Cursor自动保存(Cursor不保证持久化)
|
||||
- 🔴 **禁止**"稍后再提交"(稍后可能就忘记了)
|
||||
- 🔴 **禁止**代码过夜不提交(一夜之间可能丢失)
|
||||
- 🔴 **禁止**"代码还没完善不想提交"(不完善也要提交,总比丢失强)
|
||||
|
||||
### 💡 最佳实践
|
||||
|
||||
**每日工作流(推荐):**
|
||||
|
||||
```bash
|
||||
# 早上开始工作
|
||||
git pull origin master # 拉取最新代码
|
||||
|
||||
# 开发过程中...
|
||||
# [编写代码、测试功能]
|
||||
|
||||
# 🔥 每天下班前(强制执行!)
|
||||
git status # 查看修改
|
||||
git add . # 添加所有修改
|
||||
git commit -m "feat(dc): Complete Day 2 - HealthCheck and Template services
|
||||
|
||||
Summary:
|
||||
- Implement HealthCheckService with Excel parsing
|
||||
- Implement TemplateService with 3 preset templates
|
||||
- Add 4 Prisma models (dc_health_checks, dc_templates, etc.)
|
||||
- Update documentation
|
||||
|
||||
Status: Basic functionality verified, ready for testing"
|
||||
|
||||
git push origin master # 推送到远程
|
||||
|
||||
# 现在可以安心下班!代码已安全备份 ✅
|
||||
```
|
||||
|
||||
**🎯 记住:Git是代码的唯一可靠备份!未提交的代码 = 不存在的代码!**
|
||||
|
||||
---
|
||||
|
||||
## 📋 目录
|
||||
|
||||
1. [远程仓库配置](#远程仓库配置)
|
||||
@@ -247,15 +330,65 @@ Contents:
|
||||
|
||||
## 提交频率与时机
|
||||
|
||||
> **⭐⭐⭐ 核心原则:不要频繁提交,确保代码质量后再提交**
|
||||
> **⭐⭐⭐⭐⭐ 核心原则:每天开发完成后必须立即提交!**
|
||||
> **⚠️ Cursor环境特别提醒:未提交的代码可能在缓存清理时永久丢失!**
|
||||
|
||||
### 🎯 基本原则
|
||||
|
||||
#### **原则 1:批量提交,避免频繁提交**
|
||||
#### **原则 0:每日必提交原则(最高优先级)⭐⭐⭐⭐⭐**
|
||||
|
||||
**为什么必须每日提交?**
|
||||
|
||||
1. **防止Cursor缓存丢失**
|
||||
- Cursor IDE可能在缓存清理、崩溃、重启后丢失未保存的代码
|
||||
- 未提交到Git的代码只存在于临时工作区,风险极高
|
||||
- 真实案例:DC模块开发完成,但因未提交,代码全部丢失
|
||||
|
||||
2. **保护开发成果**
|
||||
- 每天的开发工作都有价值,不应因意外丢失
|
||||
- Git是代码的唯一可靠备份
|
||||
- 提交后即使本地丢失,也可以从远程仓库恢复
|
||||
|
||||
3. **便于问题追溯**
|
||||
- 每日提交可以清晰记录开发进度
|
||||
- 出现问题时可以快速回退到前一天的稳定版本
|
||||
|
||||
**⭐⭐⭐⭐⭐ 强制规则:**
|
||||
|
||||
```bash
|
||||
# 每天下班前(或每天开发结束时)必须执行
|
||||
git status # 查看修改的文件
|
||||
git add . # 添加所有修改
|
||||
git commit -m "feat(module): Complete Day X development
|
||||
|
||||
Summary:
|
||||
- [列出今天完成的主要工作]
|
||||
- [列出实现的核心功能]
|
||||
- [列出更新的文档]
|
||||
|
||||
Tested: Basic functionality verified"
|
||||
|
||||
git push origin master # 推送到远程仓库
|
||||
```
|
||||
|
||||
**执行时机:**
|
||||
- ✅ **每天下班前**(最重要!)
|
||||
- ✅ **每次长时间离开电脑前**(如午休、会议)
|
||||
- ✅ **重要功能完成后**
|
||||
- ✅ **准备关闭Cursor前**
|
||||
|
||||
**特别提醒:**
|
||||
- 🔴 **绝对不要**依赖Cursor的自动保存
|
||||
- 🔴 **绝对不要**认为"稍后再提交"
|
||||
- 🔴 **绝对不要**让代码过夜不提交
|
||||
|
||||
---
|
||||
|
||||
#### **原则 1:批量提交,避免碎片化提交**
|
||||
|
||||
**❌ 错误做法:**
|
||||
```bash
|
||||
# 每改一个文件就提交一次
|
||||
# 每改一个文件就提交一次(过于频繁)
|
||||
git commit -m "fix: Fix file A"
|
||||
git commit -m "fix: Fix file B"
|
||||
git commit -m "fix: Fix file C"
|
||||
@@ -265,7 +398,7 @@ git commit -m "docs: Update docs"
|
||||
|
||||
**✅ 正确做法(必须使用英文):**
|
||||
```bash
|
||||
# 一天工作结束后,统一提交
|
||||
# 一天工作结束后,统一提交(推荐)
|
||||
git add .
|
||||
git commit -m "feat(asl): Implement title and abstract screening
|
||||
|
||||
@@ -279,10 +412,10 @@ Tested: Local verification passed"
|
||||
```
|
||||
|
||||
**推荐提交频率:**
|
||||
- ✅ **一天工作结束时**:统一提交当天所有完成的工作
|
||||
- ✅ **每天至少一次**(强制要求,保护代码安全)
|
||||
- ✅ **完成一个完整功能时**:功能开发+测试验证+文档更新一起提交
|
||||
- ✅ **重要里程碑节点**:如模块开发完成、架构升级完成
|
||||
- ❌ **每次小改动就提交**:会产生大量无意义的提交记录
|
||||
- ⚠️ **避免每次小改动就提交**:会产生大量无意义的提交记录(但每日至少提交一次)
|
||||
|
||||
---
|
||||
|
||||
@@ -1016,10 +1149,11 @@ git rebase -i HEAD~3 # 修改最近 3 次提交
|
||||
### 💡 最佳实践
|
||||
|
||||
**提交频率:**
|
||||
- ✅ 小步快跑,频繁提交
|
||||
- ✅ **每天至少提交一次**(Cursor环境强制要求)
|
||||
- ✅ 每个提交只做一件事
|
||||
- ✅ 提交可编译、可运行的代码
|
||||
- ❌ 不要积累大量更改后一次提交
|
||||
- ⚠️ 可以积累一天的更改,但不要超过一天
|
||||
- ❌ **绝对不要**让代码过夜不提交(Cursor环境风险)
|
||||
|
||||
**提交内容:**
|
||||
- ✅ 只提交相关的更改
|
||||
@@ -1110,9 +1244,247 @@ git push-current # 推送当前分支
|
||||
|
||||
---
|
||||
|
||||
**最后更新:** 2025-11-22
|
||||
## ⚠️ Cursor IDE 环境专用最佳实践
|
||||
|
||||
> **⭐⭐⭐⭐⭐ 血泪教训:未提交的代码可能永久丢失!**
|
||||
|
||||
### 🔴 真实案例:DC模块代码丢失事件
|
||||
|
||||
**事件回顾(2025-11-27):**
|
||||
|
||||
1. **开发过程**:
|
||||
- 完成了DC模块Tool B的完整开发
|
||||
- 包含4个Prisma表模型(dc_health_checks, dc_templates, dc_extraction_tasks, dc_extraction_items)
|
||||
- 包含4个Service(HealthCheckService, TemplateService, DualModelExtractionService, ConflictDetectionService)
|
||||
- 包含Controller、Routes等完整代码
|
||||
- 完成了LLM集成测试
|
||||
|
||||
2. **悲剧发生**:
|
||||
- 开发完成后未立即提交到Git
|
||||
- 代码停留在Cursor的临时缓存中
|
||||
- Cursor重启/缓存清理后,代码全部消失
|
||||
- 只保留了文档和空目录结构
|
||||
|
||||
3. **损失评估**:
|
||||
- 💔 2-3天的开发工作完全丢失
|
||||
- 💔 所有Service实现代码丢失
|
||||
- 💔 Prisma模型定义丢失
|
||||
- 💔 测试代码丢失
|
||||
- ✅ 幸运的是设计文档保留了
|
||||
|
||||
4. **恢复难度**:
|
||||
- ❌ Cursor缓存已清理,无法恢复
|
||||
- ❌ Git历史中无任何记录
|
||||
- ❌ Windows文件历史无记录
|
||||
- ✅ 只能基于设计文档完全重建
|
||||
|
||||
### 🛡️ 防止代码丢失的强制规则
|
||||
|
||||
#### **规则1:每天下班前必须提交 ⭐⭐⭐⭐⭐**
|
||||
|
||||
```bash
|
||||
# 每天下班前执行的标准流程
|
||||
cd D:\MyCursor\AIclinicalresearch
|
||||
|
||||
# 1. 查看状态
|
||||
git status
|
||||
|
||||
# 2. 添加所有修改
|
||||
git add .
|
||||
|
||||
# 3. 提交(必须使用英文)
|
||||
git commit -m "feat(module): Complete Day X development
|
||||
|
||||
Summary:
|
||||
- [今天完成的主要工作]
|
||||
- [实现的核心功能]
|
||||
- [更新的文档]
|
||||
|
||||
Status: Code tested and verified locally"
|
||||
|
||||
# 4. 推送到远程(关键!)
|
||||
git push origin master
|
||||
|
||||
# 5. 确认推送成功
|
||||
git log -1
|
||||
```
|
||||
|
||||
**执行时机:**
|
||||
- ✅ 每天下班前(强制)
|
||||
- ✅ 午休前
|
||||
- ✅ 长时间离开电脑前
|
||||
- ✅ 准备关闭Cursor前
|
||||
- ✅ 系统更新/重启前
|
||||
|
||||
#### **规则2:重要功能完成后立即提交**
|
||||
|
||||
```bash
|
||||
# 场景:刚完成一个Service的实现
|
||||
git add backend/src/modules/dc/tool-b/services/HealthCheckService.ts
|
||||
git commit -m "feat(dc): Implement HealthCheckService
|
||||
|
||||
Features:
|
||||
- Excel parsing logic
|
||||
- Empty rate calculation
|
||||
- Token estimation
|
||||
- Interception strategy
|
||||
|
||||
Tested: Basic unit tests passed"
|
||||
|
||||
git push origin master
|
||||
```
|
||||
|
||||
#### **规则3:使用Git状态检查脚本**
|
||||
|
||||
在项目根目录创建 `check-git-status.ps1`:
|
||||
|
||||
```powershell
|
||||
# check-git-status.ps1
|
||||
Write-Host "=== Git Status Check ===" -ForegroundColor Yellow
|
||||
cd D:\MyCursor\AIclinicalresearch
|
||||
|
||||
$status = git status --short
|
||||
if ($status) {
|
||||
Write-Host "⚠️ You have uncommitted changes!" -ForegroundColor Red
|
||||
Write-Host $status
|
||||
Write-Host ""
|
||||
Write-Host "Please commit your changes before closing Cursor!" -ForegroundColor Red
|
||||
Write-Host "Run: git add . && git commit -m 'your message' && git push" -ForegroundColor Yellow
|
||||
} else {
|
||||
Write-Host "✅ All changes committed!" -ForegroundColor Green
|
||||
}
|
||||
|
||||
Write-Host ""
|
||||
Write-Host "Last commit:" -ForegroundColor Cyan
|
||||
git log -1 --oneline
|
||||
```
|
||||
|
||||
**使用方法:**
|
||||
```bash
|
||||
# 关闭Cursor前运行
|
||||
.\check-git-status.ps1
|
||||
```
|
||||
|
||||
#### **规则4:设置Cursor关闭提醒**
|
||||
|
||||
在 `workspace settings.json` 中添加:
|
||||
```json
|
||||
{
|
||||
"git.enableSmartCommit": true,
|
||||
"git.confirmSync": false,
|
||||
"git.autofetch": true,
|
||||
"git.showUnpushedChangesIndicator": true
|
||||
}
|
||||
```
|
||||
|
||||
### 🚨 Cursor环境风险点
|
||||
|
||||
| 风险点 | 说明 | 防范措施 |
|
||||
|--------|------|---------|
|
||||
| **缓存清理** | Cursor可能清理临时文件 | 每日提交 |
|
||||
| **IDE崩溃** | Cursor崩溃可能丢失未保存内容 | 每日提交 + 每小时Ctrl+S |
|
||||
| **系统重启** | Windows更新强制重启 | 下班前提交 |
|
||||
| **AI生成代码** | AI生成的代码未自动保存 | 生成后立即验证并提交 |
|
||||
| **多文件操作** | 批量修改后未保存 | 操作后检查git status |
|
||||
|
||||
### ✅ 安全的开发流程
|
||||
|
||||
```
|
||||
1. 拉取最新代码
|
||||
git pull origin master
|
||||
↓
|
||||
2. 开始开发
|
||||
[编写代码、测试、调试]
|
||||
↓
|
||||
3. 阶段性保存
|
||||
Ctrl+S(每隔15-30分钟)
|
||||
↓
|
||||
4. 功能完成后验证
|
||||
[运行测试、检查功能]
|
||||
↓
|
||||
5. 立即提交
|
||||
git add .
|
||||
git commit -m "..."
|
||||
git push origin master
|
||||
↓
|
||||
6. 确认推送成功
|
||||
git log -1
|
||||
检查Gitee网页是否更新
|
||||
```
|
||||
|
||||
### 📋 每日开发检查清单
|
||||
|
||||
**开始开发前:**
|
||||
- [ ] 拉取最新代码:`git pull`
|
||||
- [ ] 检查当前分支:`git branch`
|
||||
- [ ] 确认工作区干净:`git status`
|
||||
|
||||
**开发过程中:**
|
||||
- [ ] 每30分钟保存:`Ctrl+S`
|
||||
- [ ] 每小时检查状态:`git status`
|
||||
- [ ] 重要功能完成后立即提交
|
||||
|
||||
**下班前(强制):**
|
||||
- [ ] 保存所有文件:`Ctrl+Shift+S`
|
||||
- [ ] 查看修改内容:`git status`
|
||||
- [ ] 添加修改:`git add .`
|
||||
- [ ] 提交代码:`git commit -m "..."`
|
||||
- [ ] 推送到远程:`git push origin master`
|
||||
- [ ] 确认推送成功:访问Gitee查看
|
||||
|
||||
**关闭Cursor前:**
|
||||
- [ ] 运行检查脚本:`.\check-git-status.ps1`
|
||||
- [ ] 确认无未提交修改
|
||||
- [ ] 确认最新提交已推送
|
||||
|
||||
### 🆘 紧急恢复指南
|
||||
|
||||
**如果代码已丢失,尝试以下方法:**
|
||||
|
||||
1. **检查Cursor缓存**:
|
||||
```bash
|
||||
Get-ChildItem "C:\Users\zhibo\.cursor\" -Recurse -Include "*.ts"
|
||||
| Sort-Object LastWriteTime -Descending | Select-Object -First 50
|
||||
```
|
||||
|
||||
2. **检查Git对象**:
|
||||
```bash
|
||||
git fsck --lost-found
|
||||
git reflog
|
||||
```
|
||||
|
||||
3. **检查Windows文件历史**:
|
||||
- 右键项目文件夹 → 属性 → 以前的版本
|
||||
|
||||
4. **如果完全无法恢复**:
|
||||
- 基于设计文档重建(幸好保留了文档)
|
||||
- 吸取教训,强化每日提交习惯
|
||||
|
||||
### 💡 Cursor环境推荐设置
|
||||
|
||||
**VS Code / Cursor 设置**:
|
||||
```json
|
||||
{
|
||||
"files.autoSave": "afterDelay",
|
||||
"files.autoSaveDelay": 1000,
|
||||
"git.enableSmartCommit": true,
|
||||
"git.confirmSync": false,
|
||||
"git.autofetch": true,
|
||||
"git.showUnpushedChangesIndicator": true,
|
||||
"editor.formatOnSave": true
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
**最后更新:** 2025-11-28
|
||||
**维护人:** 技术架构师
|
||||
**版本历史:**
|
||||
- v1.2 (2025-11-28): **添加Cursor环境专用最佳实践**,基于DC模块代码丢失事件的血泪教训
|
||||
- 新增"Cursor IDE环境专用最佳实践"章节
|
||||
- 强制要求每日提交
|
||||
- 添加代码丢失防范措施
|
||||
- 添加每日开发检查清单
|
||||
- v1.1 (2025-11-22): **强制要求 Commit Message 使用英文**,避免中文乱码问题
|
||||
- 在"Commit Message 规范"开头添加重要提示
|
||||
- 更新所有示例为英文版本
|
||||
|
||||
Reference in New Issue
Block a user