Files
AIclinicalresearch/DC模块代码恢复指南.md
HaHafeng 66255368b7 feat(admin): Add user management and upgrade to module permission system
Features - User Management (Phase 4.1):
- Database: Add user_modules table for fine-grained module permissions
- Database: Add 4 user permissions (view/create/edit/delete) to role_permissions
- Backend: UserService (780 lines) - CRUD with tenant isolation
- Backend: UserController + UserRoutes (648 lines) - 13 API endpoints
- Backend: Batch import users from Excel
- Frontend: UserListPage (412 lines) - list/filter/search/pagination
- Frontend: UserFormPage (341 lines) - create/edit with module config
- Frontend: UserDetailPage (393 lines) - details/tenant/module management
- Frontend: 3 modal components (592 lines) - import/assign/configure
- API: GET/POST/PUT/DELETE /api/admin/users/* endpoints

Architecture Upgrade - Module Permission System:
- Backend: Add getUserModules() method in auth.service
- Backend: Login API returns modules array in user object
- Frontend: AuthContext adds hasModule() method
- Frontend: Navigation filters modules based on user.modules
- Frontend: RouteGuard checks requiredModule instead of requiredVersion
- Frontend: Remove deprecated version-based permission system
- UX: Only show accessible modules in navigation (clean UI)
- UX: Smart redirect after login (avoid 403 for regular users)

Fixes:
- Fix UTF-8 encoding corruption in ~100 docs files
- Fix pageSize type conversion in userService (String to Number)
- Fix authUser undefined error in TopNavigation
- Fix login redirect logic with role-based access check
- Update Git commit guidelines v1.2 with UTF-8 safety rules

Database Changes:
- CREATE TABLE user_modules (user_id, tenant_id, module_code, is_enabled)
- ADD UNIQUE CONSTRAINT (user_id, tenant_id, module_code)
- INSERT 4 permissions + role assignments
- UPDATE PUBLIC tenant with 8 module subscriptions

Technical:
- Backend: 5 new files (~2400 lines)
- Frontend: 10 new files (~2500 lines)
- Docs: 1 development record + 2 status updates + 1 guideline update
- Total: ~4900 lines of code

Status: User management 100% complete, module permission system operational
2026-01-16 13:42:10 +08:00

283 lines
6.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# DC模块代码恢复指南
> **目标**: 从Cursor缓存中恢复丢失的DC模块代码
> **数据库位置**: `C:\Users\zhibo\AppData\Roaming\Cursor\User\workspaceStorage\d5e3431d02cbaa0109f69d72300733da\state.vscdb`
---
## 📋 恢复方法汇总
### 方法1使用Cursor内置Timeline最简单⭐⭐⭐⭐⭐
**适用于**: 文件曾经保存到磁盘过(即使后来被删除)
#### 步骤:
1. **打开Cursor IDE**
2. **打开资源管理器Explorer**
- 左侧边栏点击"文件"图标
- 或按 `Ctrl+Shift+E`
3. **找到Timeline面板**
- 在Explorer底部找到"TIMELINE"(时间轴)折叠面板
- 如果没看到右键点击Explorer标题栏 → 勾选"Timeline"
4. **浏览文件历史**
- 在文件树中,尝试导航到这些路径:
```
backend/src/modules/dc/tool-b/services/HealthCheckService.ts
backend/src/modules/dc/tool-b/services/TemplateService.ts
backend/src/modules/dc/tool-b/services/DualModelExtractionService.ts
backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts
backend/src/modules/dc/tool-b/controllers/ExtractionController.ts
```
- 点击任一文件(即使文件不存在或为空)
- 查看Timeline面板会显示该文件的所有历史快照
5. **恢复文件**
- 在Timeline中找到最近的版本带有时间戳
- 右键点击历史版本 → 选择"Restore"(恢复)
- 文件内容会恢复到选定的版本
**重复以上步骤恢复所有DC模块文件**
---
### 方法2使用命令面板恢复已删除文件 ⭐⭐⭐⭐
**适用于**: 文件已被完全删除,但曾经保存过
#### 步骤:
1. **打开命令面板**
- Windows: `Ctrl+Shift+P`
- Mac: `Cmd+Shift+P`
2. **搜索恢复命令**
- 输入: `Local History: Find Entry to Restore`
- 选中该命令
3. **搜索文件**
- 输入文件路径,例如:
```
HealthCheckService
```
- 或更精确的路径:
```
backend/src/modules/dc/tool-b/services/HealthCheckService.ts
```
4. **选择版本并恢复**
- 从搜索结果中选择最近的版本
- 确认恢复
**重复以上步骤搜索并恢复所有DC模块文件**
---
### 方法3SQLite数据库直接提取 ⭐⭐⭐⭐⭐(终极方案)
**适用于**: 代码从未落盘只存在于Chat/Composer对话中
#### 准备工作:
1. **安装DB Browser for SQLite**
- 下载地址: https://sqlitebrowser.org/dl/
- 或直接下载: https://github.com/sqlitebrowser/sqlitebrowser/releases
2. **复制数据库文件(重要!)**
```powershell
# 在PowerShell中执行
$source = "C:\Users\zhibo\AppData\Roaming\Cursor\User\workspaceStorage\d5e3431d02cbaa0109f69d72300733da\state.vscdb"
$backup = "D:\MyCursor\AIclinicalresearch\state.vscdb.backup"
Copy-Item $source $backup
Write-Host "✅ 数据库已备份到: $backup"
```
#### 提取步骤:
1. **打开DB Browser**
- 启动"DB Browser for SQLite"
- File → Open Database
- 选择备份的数据库文件: `D:\MyCursor\AIclinicalresearch\state.vscdb.backup`
2. **查询Chat历史**
- 点击"Browse Data"(浏览数据)标签
- 从"Table"下拉菜单选择: `ItemTable`
3. **搜索DC模块相关记录**
- 点击"Filter"(过滤器)按钮
- 在"key"列的过滤框中输入:
```
chat
```
- 或:
```
composer
```
4. **查找关键词**
- 在"value"列中搜索以下关键词使用Ctrl+F:
- `HealthCheckService`
- `DualModelExtractionService`
- `ConflictDetectionService`
- `TemplateService`
- `dc_health_checks`
- `dc_extraction_tasks`
- `ExtractionController`
5. **导出数据**
- 找到包含代码的行
- 双击"value"列,查看完整内容
- value通常是JSON格式其中包含AI生成的代码块
- 复制代码到文本编辑器
6. **提取代码块**
- JSON中的代码通常在以下结构中:
```json
{
"messages": [
{
"content": "```typescript\n[你的代码]\n```"
}
]
}
```
- 提取所有 `\`\`\`typescript` 和 `\`\`\`` 之间的代码
---
## 🎯 重点查找的文件列表
| 文件路径 | 功能 | 优先级 |
|---------|------|--------|
| `backend/src/modules/dc/tool-b/services/HealthCheckService.ts` | 健康检查服务 | ⭐⭐⭐⭐⭐ |
| `backend/src/modules/dc/tool-b/services/TemplateService.ts` | 模板服务 | ⭐⭐⭐⭐⭐ |
| `backend/src/modules/dc/tool-b/services/DualModelExtractionService.ts` | 双模型提取服务 | ⭐⭐⭐⭐ |
| `backend/src/modules/dc/tool-b/services/ConflictDetectionService.ts` | 冲突检测服务 | ⭐⭐⭐⭐ |
| `backend/src/modules/dc/tool-b/controllers/ExtractionController.ts` | 提取控制器 | ⭐⭐⭐⭐⭐ |
| `backend/src/modules/dc/tool-b/routes/index.ts` | 路由配置 | ⭐⭐⭐ |
| `backend/prisma/schema.prisma` (DC相关模型) | 数据库模型 | ⭐⭐⭐⭐⭐ |
---
## 💡 关键提示
1. **Timeline方法最简单**
- 如果文件曾经保存过,这个方法成功率最高
- 即使文件现在是空的Timeline通常也能找到历史版本
2. **命令面板方法最快**
- 适合快速恢复多个已删除文件
- 可以搜索文件名片段
3. **SQLite方法最全面**
- 可以恢复从未保存的代码
- 需要一定的技术能力
- 最终兜底方案
4. **多方法结合**
- 先尝试方法1和2简单快速
- 如果失败再使用方法3终极方案
---
## 🚀 恢复后的操作
找到代码后:
1. **立即保存到文件**
```
backend/src/modules/dc/tool-b/services/[文件名].ts
```
2. **立即Git提交**
```bash
git add .
git commit -m "recover(dc): Restore DC module code from Cursor cache"
git push origin master
```
3. **验证代码完整性**
- 检查是否有语法错误
- 确认所有依赖是否正确
---
## 📞 需要帮助?
如果您在恢复过程中遇到问题:
1. 截图Timeline面板或SQLite查询结果
2. 告诉我具体卡在哪一步
3. 我会提供进一步的指导
---
**🎯 现在就开始恢复吧优先尝试方法1Timeline最简单**