feat(rvw): harden json parsing and finalize 0316 rollout

Stabilize RVW editorial and methodology JSON parsing in production with layered repair and fallback handling, then publish the paired frontend task-level language selector updates. Also reset deployment checklist, record the 0316 deployment summary, and refresh the SAE runtime status with latest backend/frontend IPs.

Made-with: Cursor
This commit is contained in:
2026-03-16 00:24:33 +08:00
parent 707f783229
commit c3554fd61d
17 changed files with 704 additions and 239 deletions

View File

@@ -1,7 +1,7 @@
# 🚀 AI临床研究平台 - 阿里云SAE最新真实状态记录
> **文档用途**记录阿里云SAE服务器最新真实状态 + 每次部署记录
> **最后更新**2026-03-10
> **最后更新**2026-03-16
> **维护人员**:开发团队
> **说明**本文档准确记录SAE上所有应用的当前状态包括内网地址、镜像版本、用户名密码等关键资源信息
@@ -11,10 +11,10 @@
| 服务名称 | 部署状态 | 镜像版本 | 部署位置 | 最后更新时间 |
|---------|---------|---------|---------|-------------|
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 + 插件 | RDS | 2026-03-10 |
| **前端Nginx服务** | ✅ 运行中 | **v2.8** | SAE | 2026-03-10 |
| **PostgreSQL数据库** | ✅ 运行中 | PostgreSQL 15 + 插件 | RDS | 2026-03-16 |
| **前端Nginx服务** | ✅ 运行中 | **v2.9** | SAE | 2026-03-16 |
| **Python微服务** | ✅ 运行中 | **v1.2** | SAE | 2026-02-27 |
| **Node.js后端** | ✅ 运行中 | **v2.11** | SAE | 2026-03-10 |
| **Node.js后端** | ✅ 运行中 | **v2.12** | SAE | 2026-03-16 |
| **R统计引擎** | ✅ 运行中 | **v1.0.5** | SAE | 2026-03-09 |
| **Dify AI服务** | ⚠️ 已废弃 | - | - | 使用pgvector替代 |
@@ -35,10 +35,10 @@
| 仓库名称 | 最新版本 | 镜像大小 | VPC地址 |
|---------|---------|---------|---------|
| **python-extraction** | **v1.2** | ~1.1GB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.2` |
| **ssa-r-statistics** | **v1.0.5** | ~2.1GB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ssa-r-statistics:v1.0.5` |
| **ai-clinical_frontend-nginx** | **v2.8** | ~100MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.8` |
| **backend-service** | **v2.11** | ~900MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.11` |
| **python-extraction** | **v1.3** | ~1.1GB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/python-extraction:v1.3` |
| **ssa-r-statistics** | **v1.0.6** | ~2.1GB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ssa-r-statistics:v1.0.6` |
| **ai-clinical_frontend-nginx** | **v2.9** | ~100MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/ai-clinical_frontend-nginx:v2.9` |
| **backend-service** | **v2.12** | ~900MB | `crpi-cd5ij4pjt65mweeo-vpc.cn-beijing.personal.cr.aliyuncs.com/ai-clinical/backend-service:v2.12` |
---
@@ -129,8 +129,8 @@ postgresql://airesearch:Xibahe%40fengzhibo117@pgm-2zex1m2y3r23hdn5.pg.rds.aliyun
|---------|------|------|-------|------|---------|---------|
| **r-statistics-test** | ✅ 运行中 | 1核2GB | 1 | 8080 | `http://172.17.197.26:8080` | **v1.0.5** |
| **python-extraction-test** | ✅ 运行中 | **2核4GB** | 1 | 8000 | `http://172.17.173.102:8000` | **v1.2** |
| **nodejs-backend-test** | ✅ 运行中 | **2核4GB** | 1 | 3001 | `http://172.17.173.110:3001` | **v2.11** |
| **frontend-nginx-service** | ✅ 运行中 | 0.5核1GB | 1 | 80 | `http://172.17.197.28:80` | **v2.8** |
| **nodejs-backend-test** | ✅ 运行中 | **2核4GB** | 1 | 3001 | `http://172.17.197.30:3001` | **v2.12** |
| **frontend-nginx-service** | ✅ 运行中 | 0.5核1GB | 1 | 80 | `http://172.17.197.31:80` | **v2.9** |
**环境变量配置**
@@ -191,7 +191,7 @@ LEGACY_MYSQL_DATABASE=xzyx_online
**前端Nginxfrontend-nginx-service**
```bash
BACKEND_SERVICE_HOST=172.17.173.110
BACKEND_SERVICE_HOST=172.17.197.30
BACKEND_SERVICE_PORT=3001
```
@@ -259,19 +259,19 @@ TEMP_DIR=/tmp/extraction_service
### 3.2 前端Nginx服务
**当前部署版本**v2.8
**当前部署版本**v2.9
**镜像信息**
- **仓库名称**`ai-clinical_frontend-nginx`
- **镜像版本**`v2.8` ✅(当前部署版本)
- **镜像版本**`v2.9` ✅(当前部署版本)
- **镜像大小**约50MB
- **基础镜像**`nginx:alpine`
- **构建时间**2026-03-05
- **镜像摘要**sha256:6cb9e8be2bcd21fd8ccfe09dabdbb04d64c252fd9a5b5b3a55d5ba6fb52dcde1
- **构建时间**2026-03-16
- **镜像摘要**sha256:68ec5521b9322d3a99770f702ed604d5af58dfac7eaeb5e2bba763bd5dfe7a10
**部署状态**
- ✅ 已成功部署到SAE2026-03-05
- ✅ 服务运行正常内网地址http://172.17.197.28:80
- ✅ 服务运行正常内网地址http://172.17.197.31:80
- ✅ 企业微信域名验证文件已部署WW_verify_YnhsQBwI0ARnNoG0.txt
**v2.5版本更新内容**
@@ -293,16 +293,16 @@ AIclinicalresearch/frontend-v2/
### 3.3 Node.js后端服务
**当前部署版本**v2.11
**当前部署版本**v2.12
**镜像信息**
- **仓库名称**`backend-service`
- **镜像版本**`v2.11` ✅(已部署)
- **镜像版本**`v2.12` ✅(已部署)
- **镜像大小**~838MB
- **基础镜像**`node:alpine`
- **构建时间**2026-03-05
- **构建时间**2026-03-16
- **构建策略**改进版方案B本地编译+Docker打包
- **镜像摘要**sha256:45886ffd90edbaf6b9a57c1938f14b076fdae175b5d8e53caebabdd8c7ef8b7c
- **镜像摘要**sha256:2a0730dc1b54f82450a1b11881572430918621eef310c6647f55e7225b9c027d
**技术架构**
- **Node.js版本**22.x
@@ -314,7 +314,7 @@ AIclinicalresearch/frontend-v2/
**部署状态**
- ✅ 已成功部署到SAE2026-03-05
- ✅ 服务运行正常内网地址http://172.17.173.110:3001
- ✅ 服务运行正常内网地址http://172.17.197.30:3001
- ✅ 健康检查通过
**Git文件结构**
@@ -364,6 +364,36 @@ AIclinicalresearch/extraction_service/
## 🔄 四、部署历史记录
### 2026-03-160316部署 - RVW V4.0 全量发布 + JSON 稳态修复)
#### 部署概览
- **部署时间**2026-03-16
- **部署范围**数据库DB-1~DB-4+ Node.js后端 + 前端Nginx + 镜像仓库更新
- **主要变更**RVW 租户化全链路上线、期刊配置中心 MVP、JSON 解析稳态增强、中英稿约语言任务级选择
#### 数据库更新
- ✅ 迁移执行:`20260311_add_ssa_agent_step_seed_fields`
- ✅ 迁移执行:`20260314_add_tenant_rvw_configs`
- ✅ 迁移执行:`20260314_add_tenant_id_to_review_tasks`
- ✅ 迁移执行:`20260315_journal_config_center_mvp`
- ✅ 迁移状态RDS 30/30Schema Up To Date
#### Node.js后端更新v2.11 → v2.12
- ✅ 镜像推送:`backend-service:v2.12`
- ✅ 内网地址变更:`172.17.197.29``172.17.197.30`
- ✅ 线上问题修复:稿约规范性 + 方法学 JSON 解析稳态加固BE-10
#### 前端Nginx更新v2.8 → v2.9
- ✅ 镜像推送:`ai-clinical_frontend-nginx:v2.9`
- ✅ 内网地址变更:`172.17.173.114``172.17.197.31`
- ✅ 新增任务级“稿约基线语言(中文/英文”选择FE-9
#### 环境变量同步
-`nodejs-backend-test``RVW_FORENSICS_RULES_ENABLED=false`
-`frontend-nginx-service``BACKEND_SERVICE_HOST=172.17.197.30`
---
### 2026-03-100310部署 - 用户直授权限体系 + 运营看板增强)
#### 部署概览
@@ -779,5 +809,5 @@ AIclinicalresearch/extraction_service/
---
> **提示**本文档记录SAE服务器的最新真实状态每次部署后必须更新
> **最后更新**2026-03-10
> **当前版本**前端v2.8 | 后端v2.11 | Python v1.2 | R统计v1.0.5 | PostgreSQL 15
> **最后更新**2026-03-16
> **当前版本**前端v2.9 | 后端v2.12 | Python v1.2 | R统计v1.0.5 | PostgreSQL 15

View File

@@ -3,8 +3,8 @@
> **用途**: 开发过程中实时记录所有待部署的变更,下次部署时按此清单逐项执行
> **维护规则**: 每次修改 Schema / 新增依赖 / 改配置时,**立即**在此文档追加记录
> **Cursor Rule**: `.cursor/rules/deployment-change-tracking.mdc` 会自动提醒
> **最后清零**: 2026-03-100310 部署完成后清零)
> **本次变更**: 已新增待部署项2026-03-11含 Agent 严格分步执行模式
> **最后清零**: 2026-03-160316 部署完成后清零)
> **本次变更**: 无(当前待部署清单已清零
---
@@ -16,64 +16,43 @@
| # | 变更内容 | 迁移文件 | 优先级 | 备注 |
|---|---------|---------|--------|------|
| DB-1 | SSA Agent 执行记录新增分步执行与种子审计字段(`step_results/current_step/seed_audit` | `20260311_add_ssa_agent_step_seed_fields` | 高 | 按数据库规范生成Shadow DB 失败后采用降级流程产出 SQL并已人工收敛为仅本次字段变更 |
| DB-2 | RVW V4.0:新增 `platform_schema.tenant_rvw_configs`每期刊独立审稿配置含4维提示词+Handlebars模板 | `20260314_add_tenant_rvw_configs` | 高 | ⚠️ 部署前无需前置条件使用降级流程手动创建迁移SQL需执行 `prisma migrate resolve --applied 20260314_add_tenant_rvw_configs` 标记为已应用 |
| DB-3 | RVW V4.0`rvw_schema.review_tasks` 新增 `tenant_id` 字段 + 索引(历史数据平滑回填两步走) | `20260314_add_tenant_id_to_review_tasks` | 高 | ⚠️ **部署前必须先确认** `platform_schema.tenants` 中存在 `code='yanjiu'` 的主站默认租户迁移会自动将历史记录回填为该租户ID需执行 `prisma migrate resolve --applied 20260314_add_tenant_id_to_review_tasks` 标记为已应用 |
| DB-4 | RVW V4.0:期刊配置中心 MVP 一次性补齐字段(`tenants` 新增期刊字段;`tenant_rvw_configs` 升级为 4 维 Prompt+Template`TenantType` 新增 `JOURNAL` | `20260315_journal_config_center_mvp` | 高 | ⚠️ `prisma migrate dev` 因历史 shadow DB 迁移失败触发降级流程,已按规范收敛手工 SQL部署后执行 `prisma migrate resolve --applied 20260315_journal_config_center_mvp` |
| — | *暂无* | | | |
### 后端变更 (Node.js)
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|---|---------|---------|---------|------|
| BE-1 | SSA Agent 执行链路增加确定性种子注入、错误分类、seed 审计透传 + 分步执行事件step_* | `backend/src/modules/ssa/services/ChatHandlerService.ts`, `backend/src/modules/ssa/services/CodeRunnerService.ts`, `backend/src/modules/ssa/services/AgentCoderService.ts` | 重新构建镜像 | 与 DB-1 配套上线,确保执行可复现与可追溯 |
| BE-2 | 新增 Agent 计划参数编辑接口 `PATCH /api/v1/ssa/agent-executions/:executionId/plan-params`(复用参数约束配置) | `backend/src/modules/ssa/routes/agent-execution.routes.ts`, `backend/src/modules/ssa/index.ts` | 重新构建镜像 | Phase 5A.5 后端入口,限制 `plan_pending` 状态可编辑 |
| BE-3 | Agent 切换为严格分步模式:`confirm_plan` 不生成整段代码,执行阶段统一按步骤生成 + 失败后依赖短路跳过后续步骤 | `backend/src/modules/ssa/services/ChatHandlerService.ts` | 重新构建镜像 | 修复“第3步失败仍尝试第4步”问题降低无效重试与误导性结果 |
| BE-4 | R 代码语法修复器纠正 `} else` 处理策略,避免引入 `unexpected 'else'` | `backend/src/modules/ssa/services/CodeRunnerService.ts` | 重新构建镜像 | 修复线上语法错误噪声,减少重试失败 |
| BE-5 | RVW 审稿通道改造4 通道 Prompt 动静分离(业务提示词可编辑 + 系统协议固化)+ 方法学/稿约 JSON 结构化修复兜底 + DataForensics 默认切换为 LLM-only规则验证默认关闭 | `backend/src/modules/rvw/services/promptProtocols.ts`, `backend/src/modules/rvw/services/editorialService.ts`, `backend/src/modules/rvw/services/methodologyService.ts`, `backend/src/modules/rvw/services/clinicalService.ts`, `backend/src/modules/rvw/skills/library/DataForensicsSkill.ts`, `backend/src/modules/rvw/skills/core/types.ts`, `backend/src/common/document/ExtractionClient.ts`, `backend/src/common/prompt/prompt.fallbacks.ts` | 重新构建镜像 | 解决运营端改 Prompt 导致 JSON 解析失败;数据侦探默认仅“表格提取+LLM判断”规则代码保留可回切 |
| BE-6 | RVW V4.0 Phase 1Prisma Schema 新增 TenantRvwConfig 模型 + ReviewTask.tenantId 字段 + RVW租户中间件rvwTenantMiddlewareslug到UUID解析+tenant_members校验+缓存)+ FastifyRequest 扩展 tenantId/tenant 字段 | `backend/prisma/schema.prisma`, `backend/src/modules/rvw/middleware/rvwTenantMiddleware.ts`, `backend/src/common/auth/auth.middleware.ts` | 重新构建镜像 + 执行 DB-2/DB-3 迁移 | 与 DB-2/DB-3 配套上线Prisma Client 已重新生成 |
| BE-7 | RVW V4.0 Phase 2RVW Config CRUD APIGET/PUT `/api/admin/tenants/:id/rvw-config`+ Handlebars 渲染引擎Zod 校验 + 默认模板)+ SkillExecutor 按租户装配 Hybrid Prompt | `backend/src/modules/admin/rvw-config/rvwConfigController.ts`, `backend/src/modules/admin/rvw-config/rvwConfigService.ts`, `backend/src/modules/admin/rvw-config/rvwConfigRoutes.ts`, `backend/src/modules/rvw/services/rvwReportRenderer.ts`, `backend/src/modules/rvw/workers/reviewWorker.ts`, `backend/src/index.ts` | 重新构建镜像 | 与 BE-6/DB-2/DB-3 配套上线 |
| BE-8 | RVW V4.0 Phase 3后端 CORS 配置新增 x-tenant-id 白名单(多租户 Header 跨域支持) | `backend/src/index.ts` | 重新构建镜像 | ⚠️ 缺少此项会导致浏览器预检请求拦截 x-tenant-id整个多租户功能失效 |
| BE-9 | RVW V4.0 Phase 4期刊配置中心 MVP新增 `/api/admin/journal-configs` 专用 API租户模型扩展期刊字段RVW 执行链路接入最小配置适配(`tenantCustom ?? systemDefault`Editorial 支持 `zh/en` 基线路由;创建/更新为 `JOURNAL` 时自动兜底开通 `RVW` 模块 | `backend/src/modules/admin/journal-config/*`, `backend/src/modules/admin/services/tenantService.ts`, `backend/src/modules/admin/types/tenant.types.ts`, `backend/src/modules/admin/rvw-config/*`, `backend/src/modules/rvw/workers/reviewWorker.ts`, `backend/src/modules/rvw/skills/library/*`, `backend/src/modules/rvw/services/editorialService.ts`, `backend/src/modules/rvw/services/clinicalService.ts`, `backend/src/common/prompt/prompt.fallbacks.ts`, `backend/src/index.ts` | 重新构建镜像 + 执行 DB-4 迁移 | 与 FE-7 联动上线,满足「独立一级菜单 + 中英文基线 + 继承/覆盖」MVP 范围,并避免新期刊用户登录后无 RVW 模块权限 |
| — | *暂无* | | | |
### 前端变更
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|---|---------|---------|---------|------|
| FE-1 | Agent 通道接入 step_* SSE 事件并展示分步执行状态(兼容旧 code_* 事件) | `frontend-v2/src/modules/ssa/hooks/useSSAChat.ts`, `frontend-v2/src/modules/ssa/components/AgentCodePanel.tsx`, `frontend-v2/src/modules/ssa/types/index.ts`, `frontend-v2/src/modules/ssa/stores/ssaStore.ts` | 重新构建镜像 | 右侧工作区可见每步状态/错误/耗时,便于排障 |
| FE-2 | Agent 计划阶段复用 QPER 变量编辑控件(单变量/多变量)并接入保存、确认前自动保存 | `frontend-v2/src/modules/ssa/components/AgentCodePanel.tsx`, `frontend-v2/src/modules/ssa/components/WorkflowTimeline.tsx`, `frontend-v2/src/modules/ssa/components/SSAWorkspacePane.tsx` | 重新构建镜像 | 对接 `PATCH /agent-executions/:executionId/plan-params`,实现 5A.5 前后端闭环 |
| FE-3 | Agent 工作区增强:在分步状态下可展开查看每步已生成结果(`reportBlocks`),并兼容严格分步模式下的 `code_pending` 空代码预览 | `frontend-v2/src/modules/ssa/components/AgentCodePanel.tsx`, `frontend-v2/src/modules/ssa/hooks/useSSAChat.ts` | 重新构建镜像 | 修复“有结果但代码下方不可见”与状态显示误导问题 |
| FE-4 | RVW V4.0 Phase 2TenantDetailPage 新增「智能审稿配置」Tab4 Panel稿约规范占位 / 方法学Prompt+Handlebars模板 / 数据验证深度L1-L3 / 临床FINER权重+ tenantApi 新增 fetchRvwConfig/saveRvwConfig | `frontend-v2/src/pages/admin/tenants/TenantDetailPage.tsx`, `frontend-v2/src/pages/admin/tenants/api/tenantApi.ts` | 重新构建镜像 | 与 BE-7/DB-2/DB-3 配套上线 |
| FE-5 | RVW V4.0 Phase 3新增 TenantPortalLayout 极简期刊门户布局 + App.tsx 新增 /:tenantSlug/rvw/* 路由(期刊专属 URL+ LoginPage.tsx 修复跳转逻辑(读取 ?redirect= 查询参数 + 租户默认落地页 /:tenantSlug/rvw | `frontend-v2/src/framework/layout/TenantPortalLayout.tsx`, `frontend-v2/src/App.tsx`, `frontend-v2/src/pages/LoginPage.tsx` | 重新构建镜像 | 与 BE-6/BE-7/BE-8 配套上线;实现期刊租户完整访问路径 /jtim → /jtim/rvw |
| FE-6 | RVW V4.0 租户门户体验收敛:上传按钮稳定触发(原生文件选择器 API + input 回退)、执行审稿后跳转旧版过程页(复用 `TaskDetail`)、列表四维状态图标修复(完成态正确显示绿勾/警告) | `frontend-v2/src/modules/rvw/pages/TenantDashboard.tsx`, `frontend-v2/src/modules/rvw/pages/TenantTaskDetail.tsx` | 重新构建镜像 | 已本地联调通过;上线后重点回归 `/:tenant/login -> /:tenant/rvw` 主流程 |
| FE-7 | RVW V4.0 期刊配置中心 MVPADMIN 新增独立一级菜单“期刊配置中心”,新增列表页/详情页(基础信息 + 4 维审稿配置),并对齐新 API DTO`journalLanguage``editorialBaseStandard`、Prompt/Handlebars 字段) | `frontend-v2/src/framework/layout/AdminLayout.tsx`, `frontend-v2/src/App.tsx`, `frontend-v2/src/pages/admin/journal-configs/*`, `frontend-v2/src/pages/admin/tenants/api/tenantApi.ts`, `frontend-v2/src/pages/admin/tenants/TenantDetailPage.tsx` | 重新构建镜像 | 与 BE-9/DB-4 配套上线MVP 阶段先跑通配置闭环,品牌视觉字段先存储后逐步渲染 |
| FE-8 | 登录路径策略统一为单一路径:仅保留 `/:tenantCode/login`,未登录重定向与退出登录统一 `/:tenant/login`,开发/生产同路径仅域名不同 | `frontend-v2/src/App.tsx`, `frontend-v2/src/framework/router/RouteGuard.tsx`, `frontend-v2/src/framework/layout/TenantPortalLayout.tsx`, `frontend-v2/src/pages/TenantLoginPage.tsx`, `frontend-v2/src/pages/LoginPage.tsx` | 重新构建镜像 | 对齐生产目标链接 `review.xunzhengyixue.com/test-qikan01`;不再保留 `/t/:tenantCode/login` 路径,需同步更新测试文档/书签 |
| — | *暂无* | | | |
### Python 微服务变更
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|---|---------|---------|---------|------|
| PY-1 | Forensics API 新增 `EXTRACT_ONLY` 模式并默认仅提取表格(不执行 L1/L2 规则校验) | `extraction_service/forensics/api.py`, `extraction_service/forensics/types.py` | 重新构建镜像 | 与后端 RVW LLM-only 路径配套,避免规则与 LLM 双轨冲突 |
| — | *暂无* | | | |
### R 统计引擎变更
| # | 变更内容 | 涉及文件 | 需要操作 | 备注 |
|---|---------|---------|---------|------|
| R-1 | execute-code 端点升级为语法+安全双层预检,新增 E_SECURITY 与运行时高危函数拦截 | `r-statistics-service/plumber.R` | 重新构建镜像 | 阻断 system/eval/source/file.remove/setwd 等风险调用 |
| — | *暂无* | | | |
### 环境变量 / 配置变更
| # | 变更内容 | 服务 | 变量名 | 备注 |
|---|---------|------|--------|------|
| ENV-1 | 新增 RVW 数据侦探规则引擎开关(默认关闭) | nodejs-backend-test / nodejs-backend-prod | `RVW_FORENSICS_RULES_ENABLED=false` | `false`=仅表格提取+LLM判断推荐如需恢复规则验证可设为 `true` |
| — | *暂无* | | | |
### 基础设施变更
| # | 变更内容 | 范围 | 备注 |
|---|---------|------|------|
| INF-1 | 前端 Nginx 增加 SPA 深链回退(`try_files $uri /index.html`),并确保 `/api/` 路由优先反代后端(不能被 index.html 吞掉) | frontend-nginx-service / ingress | ⚠️ 否则直接访问 `review.xunzhengyixue.com/test-qikan01``.../test-qikan01/login` 会 404部署后需在无缓存浏览器验证 |
| INF-2 | 前端 Docker 构建与发布注意:确认镜像内 Nginx 配置已包含深链规则、并清理旧静态资源缓存CDN/浏览器)后再灰度 | frontend-v2 build/deploy pipeline | 建议发布后先执行硬刷新Ctrl+F5与隐身窗口验证避免旧 bundle 缓存导致仍跳旧路径 |
| INF-3 | SAE 接入 RVW 多租户链路:`review.xunzhengyixue.com` 仅负责流量入口,实际租户/模块判定由应用完成(`/:tenantCode/login``/:tenantSlug/rvw` + `x-tenant-id` + `tenant_members` + `tenant_modules` | frontend SAE + backend SAE + ingress/SLB | ⚠️ SAE 不会自动“识别审稿模块”;必须保证前端路由命中、`/api` 正确转发后端、后端开启 RVW 路由与租户中间件;并确认租户已开通 `RVW` 且用户在该租户下有成员关系 |
| INF-4 | 前端镜像构建发布标准流程(生产):安装依赖→构建 `frontend-v2/dist`→打包 Nginx 镜像→推送镜像仓库→SAE 更新版本→灰度验证→全量发布 | frontend-v2 build/deploy pipeline | 推荐命令:`npm ci && npm run build`(在 `frontend-v2` 目录);镜像发布后必须验证 `review.xunzhengyixue.com/{tenant}/login``/{tenant}/rvw``/api/v1/auth/verification-code` 三条链路可用 |
| — | *暂无* | | |
---
@@ -99,6 +78,14 @@
- `验证码发送成功 + 倒计时启动 + 登录成功` 需完整通过
- 弱网场景若偶发失败,先排查网络/网关,再看后端日志;前端已增加“发送中”防重入保护
5. **中英稿约语言链路验证(新增)**
- 在任务发起弹窗中确认“稿约基线语言”默认值与租户语言一致(中文期刊默认中文,英文期刊默认英文)
- 手动切换语言后执行审稿,确认稿约模块按所选语言输出,且任务状态不出现解析失败导致的 `partial_completed`
6. **JSON 解析稳态验证(新增)**
- 分别用中文/英文稿件各执行至少 3 次“稿约规范性 + 方法学”组合,确认无 `无法从LLM响应中解析JSON` / `section repair invalid`
- 如出现兜底修复日志warn但任务完成可判定为“已自动恢复”若连续失败再排查模型配额/网络超时/提示词内容
---
## 记录模板
@@ -129,6 +116,19 @@
## 历史(已部署,仅供追溯)
### 0316 部署已清零项
| # | 变更内容 | 部署日期 | 结果 |
|---|---------|---------|------|
| DB | DB-1~DB-4 全量完成SSA 分步审计字段 + RVW 租户配置 + review_tasks.tenant_id 回填 + JOURNAL/MVP 字段) | 2026-03-16 | ✅ |
| BE | 后端 v2.11 → v2.12(含 BE-10 JSON 解析稳态加固与观测日志) | 2026-03-16 | ✅ |
| FE | 前端 v2.8 → v2.9(含 FE-9 稿约基线语言任务级选择) | 2026-03-16 | ✅ |
| PY | Python 提取服务镜像构建并推送 v1.3(与 RVW LLM-only 路径配套) | 2026-03-16 | ✅ |
| R | R 统计引擎镜像构建并推送 v1.0.6(语法+安全预检) | 2026-03-16 | ✅ |
| ENV | nodejs-backend-test 新增 `RVW_FORENSICS_RULES_ENABLED=false` | 2026-03-16 | ✅ |
| ENV | frontend-nginx-service: `BACKEND_SERVICE_HOST` 更新为 `172.17.197.30` | 2026-03-16 | ✅ |
| INF | `review.xunzhengyixue.com` 链路发布:深链回退 + `/api` 反代优先级 + 租户路由可用 | 2026-03-16 | ✅ |
### 0310 部署已清零项
| # | 变更内容 | 部署日期 | 结果 |

View File

@@ -0,0 +1,73 @@
# 0316 部署完成总结v1.0
> **部署日期**2026-03-16
> **部署环境**:阿里云 SAE 测试环境cn-beijing:test-airesearch
> **部署主题**RVW V4.0 全量发布 + JSON 解析稳态修复二次发布
---
## 一、部署范围
### 1) 数据库RDS PostgreSQL
- 已执行 DB-1~DB-4 迁移并完成状态对齐:
- `20260311_add_ssa_agent_step_seed_fields`
- `20260314_add_tenant_rvw_configs`
- `20260314_add_tenant_id_to_review_tasks`
- `20260315_journal_config_center_mvp`
- 已完成 `prisma migrate resolve --applied` 标记,迁移链路一致。
- 已补齐默认租户:`code='yanjiu'`,并完成 `review_tasks.tenant_id` 历史回填(空值为 0
### 2) 镜像构建与推送ACR
- 后端:`backend-service:v2.12`
- 前端:`ai-clinical_frontend-nginx:v2.9`
- Python`python-extraction:v1.3`
- R`ssa-r-statistics:v1.0.6`
### 3) SAE 发布结果(本轮重点)
- `nodejs-backend-test``172.17.197.30`
- `frontend-nginx-service``172.17.197.31`
---
## 二、核心修复说明(本轮二次发布)
### 后端 JSON 解析稳态BE-10
- 针对 RVW 稿约规范性与方法学输出,增强多策略 JSON 解析与二次严格修复。
- 增加解析失败观测日志(长度、预览),便于线上快速定位。
- 目标问题:`无法从LLM响应中解析JSON``section repair invalid`
### 前端联动能力FE-9
- 任务发起弹窗新增“稿约基线语言(中文/英文)”任务级选择。
- 优先级规则:任务级显式选择 > 租户默认语言。
- 用于覆盖中英稿件混合审稿场景,降低提示词与输出格式错配风险。
---
## 三、环境变量与配置
- Node.js 服务新增:
- `RVW_FORENSICS_RULES_ENABLED=false`
- 前端 Nginx 服务更新:
- `BACKEND_SERVICE_HOST=172.17.197.30`
- `BACKEND_SERVICE_PORT=3001`
- `review.xunzhengyixue.com` 路由链路依赖:
- SPA 深链回退(`try_files ... /index.html`
- `/api/` 反代优先级高于 SPA 回退
---
## 四、验收结论
- 数据库结构与迁移链路:✅ 完成
- 后端与前端二次发布:✅ 完成
- JSON 解析稳态修复版本已上线:✅ 完成
- 待部署清单:✅ 已清零并归档到 0316 历史
---
## 五、回滚建议
若出现异常,建议按以下顺序回滚:
1. 前端回滚到 `v2.8`
2. 后端回滚到 `v2.11`
3. 数据库不建议直接反向 DDL优先应用层回滚。如必须回退使用部署前备份恢复并复核迁移基线。