Summary: - Refactor timeline API to read from qc_field_status (SSOT) instead of qc_logs - Add field-issues paginated API with severity/dimension/recordId filters - Add LEFT JOIN field_metadata + qc_event_status for Chinese display names - Implement per-project ChatOrchestrator cache and SessionMemory isolation - Redesign admin IIT config tabs (REDCap -> Fields -> KB -> Rules -> Members) - Add AI-powered QC rule generation (D3 programmatic + D1/D5/D6 LLM-based) - Add clickable warning/critical detail Modal in ReportsPage - Auto-dispatch eQuery after batch QC via DailyQcOrchestrator - Update module status documentation to v3.2 Backend changes: - iitQcCockpitController: rewrite getTimeline from qc_field_status, add getFieldIssues - iitQcCockpitRoutes: add field-issues route - ChatOrchestrator: per-projectId cached instances - SessionMemory: keyed by userId::projectId - WechatCallbackController: resolve projectId from iitUserMapping - iitRuleSuggestionService: dimension-based suggest + generateD3Rules - iitBatchController: call DailyQcOrchestrator after batch QC Frontend changes: - AiStreamPage: adapt to new timeline structure with dimension tags - ReportsPage: clickable stats cards with issue detail Modal - IitProjectDetailPage: reorder tabs, add AI rule generation UI - iitProjectApi: add TimelineIssue, FieldIssueItem types and APIs Status: TypeScript compilation verified, no new lint errors Made-with: Cursor
137 lines
7.2 KiB
Markdown
137 lines
7.2 KiB
Markdown
# 待部署变更清单
|
||
|
||
> **用途**: 开发过程中实时记录所有待部署的变更,下次部署时按此清单逐项执行
|
||
> **维护规则**: 每次修改 Schema / 新增依赖 / 改配置时,**立即**在此文档追加记录
|
||
> **Cursor Rule**: `.cursor/rules/deployment-change-tracking.mdc` 会自动提醒
|
||
> **最后清零**: 2026-03-02(0302 部署完成后清零)
|
||
|
||
---
|
||
|
||
## 当前待部署变更
|
||
|
||
> ⚠️ 下次部署前,逐项检查此清单。部署完成后将已部署项移到「历史」区域并清零。
|
||
|
||
### 数据库变更
|
||
|
||
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|
||
|---|---------|---------|--------|------|
|
||
| DB-1 | modules 表新增 `AIA_PROTOCOL`、`RM` 模块注册,IIT 名称改为「CRA质控」 | 无(运行 seed 脚本) | 高 | 运行 `node scripts/seed-modules.js`(upsert,可重复执行) |
|
||
| DB-2 | RVW Prompt 更新:期刊名称修正为「中华脑血管病杂志」 | 无(重新运行迁移脚本或后台编辑) | 高 | 运行 `npx tsx scripts/migrate-rvw-prompts.ts` 或在 `/admin/prompts/RVW_EDITORIAL` 手动编辑 |
|
||
|
||
### 后端变更 (Node.js)
|
||
|
||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||
|---|---------|---------|---------|------|
|
||
| BE-1 | 登录踢人机制:同一手机号只能一人同时在线 | `auth.service.ts`, `auth.middleware.ts`, `jwt.service.ts` | 重新构建镜像 | JWT 增加 tokenVersion,登录时递增版本号存入缓存,认证中间件校验版本号 |
|
||
| BE-2 | 模块权限一致性修复:`/me/modules` API 现在尊重 user_modules 精细化配置 | `module.service.ts` | 重新构建镜像 | 之前 `/me/modules` 只看 tenant_modules,现在与登录逻辑一致 |
|
||
| BE-3 | getModuleName 补充 RM、AIA_PROTOCOL、IIT 名称修正 | `userService.ts` | 重新构建镜像 | IIT Manager → CRA质控 |
|
||
| BE-4 | RVW 稿约 Prompt 源文件修正 | `prompts/review_editorial_system.txt` | 重新构建镜像 | 中华医学超声杂志 → 中华脑血管病杂志 |
|
||
| BE-5 | seed 数据:内部租户补充 RM、AIA_PROTOCOL 模块 | `prisma/seed.ts` | 仅影响新环境初始化 | — |
|
||
| BE-6 | 用户模块配置校验放宽:不再限制必须在租户订阅范围内 | `userService.ts` | 重新构建镜像 | 校验改为「模块代码必须在 modules 表中存在」,支持给用户单独开通功能模块 |
|
||
| BE-7 | 用户独立模块生效:user_modules 中的模块即使租户未订阅也纳入权限 | `module.service.ts` | 重新构建镜像 | 如 AIA_PROTOCOL 可单独配给用户 |
|
||
|
||
### 前端变更
|
||
|
||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||
|---|---------|---------|---------|------|
|
||
| FE-1 | ASL 模块:隐藏数据源/年限/篇数,默认 PubMed | `SetupPanel.tsx` | 重新构建镜像 | 高级筛选面板全部隐藏 |
|
||
| FE-2 | ASL 模块:去掉「研究方案生成」「文献管理」,重新编号 1~6 | `ASLLayout.tsx` | 重新构建镜像 | — |
|
||
| FE-3 | ASL 模块:默认进入智能文献检索(不再是标题摘要初筛) | `asl/index.tsx` | 重新构建镜像 | 路由 index → research/deep |
|
||
| FE-4 | AIA 模块:删除「已接入DeepSeek」和搜索框 | `AgentHub.tsx` | 重新构建镜像 | — |
|
||
| FE-5 | AIA 模块:Protocol Agent 按用户模块权限动态显示 | `AgentHub.tsx`, `constants.ts` | 重新构建镜像 | 通过 `hasModule('AIA_PROTOCOL')` 判断,需 DB-1 配合 |
|
||
| FE-6 | AIA 模块:数据评价与预处理 / 智能统计分析链接修正 | `constants.ts` | 重新构建镜像 | `/dc` → `/research-management` |
|
||
| FE-7 | 首页重定向到 `/ai-qa`,不再显示模块卡片首页 | `App.tsx` | 重新构建镜像 | — |
|
||
| FE-8 | PKB 模块:创建知识库时隐藏科室选择,默认 General | `DashboardPage.tsx` | 重新构建镜像 | — |
|
||
| FE-9 | 被踢出时前端提示「账号已在其他设备登录」 | `axios.ts` | 重新构建镜像 | 配合 BE-1 |
|
||
| FE-10 | 运营端:用户模块权限弹窗显示所有模块(含 RM、AIA_PROTOCOL、CRA质控) | `ModulePermissionModal.tsx` | 重新构建镜像 | 未订阅模块标注"(未订阅)",不阻止配置 |
|
||
|
||
### Python 微服务变更
|
||
|
||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||
|---|---------|---------|---------|------|
|
||
| — | *暂无* | | | |
|
||
|
||
### R 统计引擎变更
|
||
|
||
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|
||
|---|---------|---------|---------|------|
|
||
| — | *暂无* | | | |
|
||
|
||
### 环境变量 / 配置变更
|
||
|
||
| # | 变更内容 | 服务 | 变量名 | 备注 |
|
||
|---|---------|------|--------|------|
|
||
| — | *暂无* | | | |
|
||
|
||
### 基础设施变更
|
||
|
||
| # | 变更内容 | 范围 | 备注 |
|
||
|---|---------|------|------|
|
||
| — | *暂无* | | |
|
||
|
||
### 部署顺序建议
|
||
|
||
1. **后端先部署**:构建并推送新镜像(包含 BE-1 ~ BE-5)
|
||
2. **运行数据库脚本**:
|
||
- `node scripts/seed-modules.js`(DB-1:注册 AIA_PROTOCOL、RM 模块)
|
||
- `npx tsx scripts/migrate-rvw-prompts.ts`(DB-2:更新 RVW 稿约 Prompt)
|
||
3. **前端部署**:构建并推送新镜像(包含 FE-1 ~ FE-9)
|
||
4. **后台配置**:
|
||
- 为内部测试人员所在租户开通 `AIA_PROTOCOL` 模块
|
||
- 确认 SSA/ST/IIT/RM 模块权限按需分配给对应租户和用户
|
||
|
||
---
|
||
|
||
## 记录模板
|
||
|
||
开发时发现需要部署的变更,复制下方模板追加到对应区域:
|
||
|
||
```markdown
|
||
<!-- 数据库变更 -->
|
||
| DB-N | 简述变更 | `迁移文件名` | 高/中/低 | 备注 |
|
||
|
||
<!-- 后端变更 -->
|
||
| BE-N | 简述变更 | `file.ts` | 重新构建镜像 | 备注 |
|
||
|
||
<!-- 前端变更 -->
|
||
| FE-N | 简述变更 | `Component.tsx` | 重新构建镜像 | 备注 |
|
||
|
||
<!-- Python 变更 -->
|
||
| PY-N | 简述变更 | `requirements-prod.txt` | 重新构建镜像 | 备注 |
|
||
|
||
<!-- R 变更 -->
|
||
| R-N | 简述变更 | `tool.R` | 重新构建镜像 | 备注 |
|
||
|
||
<!-- 环境变量 -->
|
||
| ENV-N | 简述变更 | nodejs-backend-test | `VAR_NAME=value` | 备注 |
|
||
```
|
||
|
||
---
|
||
|
||
## 历史(已部署,仅供追溯)
|
||
|
||
### 0302 部署已清零项
|
||
|
||
| # | 变更内容 | 部署日期 | 结果 |
|
||
|---|---------|---------|------|
|
||
| DB | 6 个 Prisma 迁移(SSA 类型对齐 + IIT RBAC + is_demo + V3.1 QC 三批) | 2026-03-02 | ✅ |
|
||
| DB | 新建 qc_field_status、qc_event_status 2 张表(84 → 86) | 2026-03-02 | ✅ |
|
||
| BE | Node.js v2.3 → v2.4(IIT V3.1 QC引擎全面升级,27 项变更) | 2026-03-02 | ✅ |
|
||
| FE | 前端 v1.9 → v2.0(GCP 报表 + V3.1 前端,17 项变更) | 2026-03-02 | ✅ |
|
||
| ENV | frontend-nginx-service: BACKEND_SERVICE_HOST → 172.17.197.32 | 2026-03-02 | ✅ |
|
||
|
||
### 0227 部署已清零项
|
||
|
||
| # | 变更内容 | 部署日期 | 结果 |
|
||
|---|---------|---------|------|
|
||
| DB | 5 个业务迁移 + 1 个 drift patch | 2026-02-27 | ✅ |
|
||
| DB | SSA data_profile 列补充 | 2026-02-27 | ✅ 线上热修 |
|
||
| DB | RVW review_tasks 8 列补充 | 2026-02-27 | ✅ 线上热修 |
|
||
| BE | Node.js v1.7 → v2.2(SSA/ASL/RVW/IIT 全模块更新) | 2026-02-27 | ✅ |
|
||
| BE | Dockerfile 增加 JSON 配置文件拷贝 | 2026-02-27 | ✅ |
|
||
| FE | 前端 v1.3 → v1.8(react-markdown, nginx 配置更新) | 2026-02-27 | ✅ |
|
||
| PY | Python v1.1 → v1.2(新增 scipy) | 2026-02-27 | ✅ |
|
||
| R | R 统计引擎 v1.0.1 全新部署 | 2026-02-27 | ✅ |
|
||
| ENV | nodejs-backend-test: R_STATISTICS_SERVICE_URL 等 | 2026-02-27 | ✅ |
|
||
| ENV | frontend-nginx-service: BACKEND_SERVICE_HOST 更新 | 2026-02-27 | ✅ |
|