Files
hms/docs/superpowers/specs/2026-05-03-project-analysis-brainstorm-design.md
iven c208dcc6f5 docs(specs): 7 份设计规格 — 工作台/适老化/硬编码清理/项目分析
新增: 适老化小程序/Action Inbox/统一工作台/医生操作台/
硬编码清理/健康管理台/全项目深度分析报告
2026-05-03 19:32:25 +08:00

25 KiB
Raw Blame History

HMS 健康管理平台 — 全项目深度分析与多专家组头脑风暴

日期: 2026-05-03 | 类型: 分析报告 | 数据截止: commit 555 | 状态: 定稿

如何使用本文档: §1-2 是全景扫描所有人应读。§3-7 是专家组深度分析按需阅读。§8-10 是行动矩阵和风险传导,执行时参考。每个专家组独立成章,可跳读。

TL;DR: HMS 项目整体健康度 B+。架构边界满分,安全基础扎实,文档体系完善。核心风险:前端测试 <5%、55% 事件孤立、审计整改率 8%、73 个未提交文件截至文档编写时。建议立即止血P0→ 本周补短板P1→ 本月治本P2


1. 背景与目标

为什么做这次分析

HMS 项目经过 3 周密集开发555 次提交86 份设计规格已进入功能基本完整的阶段。2026-04-30 完成的全系统审计发现 25 个问题2 CRITICAL + 3 HIGH + 8 MEDIUM + 12 LOW但审计后 3 天整改率仅 8%。此时需要一个全面的「体检」来:

  1. 识别系统性风险而非单点问题
  2. 从多维度(架构/安全/前端/质量/管理)交叉验证
  3. 建立清晰的优先级行动矩阵

分析范围

维度 覆盖范围
后端架构 17 Rust crates / ~87k 行 / 484 源文件
前端 Web 151 文件113 TSX + 38 TS
微信小程序 113 文件 / 38 页面 / 5 TabBar
数据库 104 迁移 / 77+ 表
文档体系 12 页 wiki + 86 specs + 41 plans + 12 discussions

方法论

  • 静态分析: 文件大小、代码模式搜索、依赖图梳理
  • 模式识别: 重复代码、缺失测试、不一致的命名
  • 多专家视角: 5 个虚拟专家组从不同角度审查同一代码库
  • 数据来源: Cargo.toml / git log / Grep 搜索 / Wiki 内容 / 审计报告

2. 项目全景扫描

2.1 规模与复杂度

维度 数据 评估
Rust 代码 ~87k 行 / 17 crates / 484 源文件 中大型单体,模块边界清晰
Web 前端 151 文件 (113 TSX + 38 TS) 中等规模API 层完整
微信小程序 113 文件 / 38 页面 / 5 TabBar 功能丰富,分包合理
数据库 104 迁移 / 77+ 表 高频 schema 迭代
API 路由 328 (8 公开 + 320 受保护) 全面的业务覆盖
测试 772 后端 + 11 前端 后端尚可,前端极低
事件系统 25 类型 / 44 发布 / 14 消费者 设计精良但有孤立事件
设计文档 86 specs / 41 plans 文档驱动,管理有序
Git 历史 555 次提交 AI 辅助密集开发

2.2 架构评分矩阵

评估维度 得分 (1-5) 说明
模块边界 零循环依赖crates 间仅依赖 erp-core
安全姿态 Argon2 + AES-256-GCM + RLS + 审计哈希链,限流失败模式待改进
错误处理 统一 AppError + 跨 crate 转换 + HTTP 映射
事件系统 Outbox + 死信 + 幂等,但 14 个孤立事件无消费者
前端架构 API/Store/Hook 三层分离,但零 i18n、低测试覆盖
代码质量 4 个 TODO、无 FIXME/HACK但存在 6 个千行文件
测试覆盖 ☆☆ 后端 772 测试尚可,前端 <5%、小程序 0%
文档完整性 12 页 wiki + 86 specs但 wiki 数据存在不一致
运维成熟度 ☆☆ Docker + 原生双轨但不同步,单分支开发,大量未提交文件

3. 专家组 1架构与基础设施

成员画像: Rust 系统架构师 + 数据库工程师 + DevOps 工程师

3.1 模块依赖分析

依赖结构: 所有 16 个 crate 形成以 erp-core 为底座的星型依赖图。erp-server 是唯一的组合根,依赖所有业务 crate。每个业务 crateauth / config / workflow / message / health / ai / dialysis / plugin只依赖 erp-core,不存在横向依赖。

结论: 依赖图干净,零循环依赖,具备未来拆分为微服务的前置条件。当前单体架构合理,无需急于拆分。

关注点: erp-server 依赖全部 crate任何变更都触发完整重编译。erp-health/module.rs1130 行路由注册)和 erp-message/module.rs1054 行)是路由注册的单文件瓶颈。

3.2 数据库迁移治理

现状: 21 天内产生 100 个迁移(日均 5 个),其中单次健康表迁移达 1532 行(m20260423_000042)。

风险:

  • 超大迁移在生产环境执行失败时,回滚成本极高
  • 高频迭代表明 schema 尚未稳定
  • testing.md 仍写着"迁移记录应为 50 条"(实际已 100 条)

建议:

  1. 建立迁移文件大小上限(单文件 < 500 行)
  2. 每个 Phase 结束后冻结 schema后续走 ALTER 而非重建
  3. 生产环境迁移前必须 dry-run 验证

优先级: P2

3.3 事件系统补全

现状: 25 个事件类型中 14 个无消费者(55% 孤立率)。erp-health/event.rs 828 行集中了所有事件处理器注册逻辑,且零测试覆盖。

核心风险: 事件孤立率超过 50% 意味着大量事件发布是无效操作 — 写入数据库、消耗存储、但无人消费。更危险的是可能掩盖业务流程断裂。

建议:

  1. 对 14 个孤立事件逐一评估:删除无效事件 / 实现缺失消费者
  2. erp-health/event.rs 补充单元测试(至少覆盖每个消费者的核心路径)
  3. 建立事件注册表每个事件必须关联至少一个消费者CLAUDE.md 铁律已在但未执行)

优先级: P1 — 事件是模块间通信的核心,孤立事件 = 功能缺失

交叉引用: 安全组(§4.1)指出孤立事件会导致合规声明与实际行为不一致;质量组(§6.1)指出 event.rs 本身也是千行文件,重构时需要测试保障。

4. 专家组 2安全与合规

成员画像: 安全工程师 + 医疗合规专家 + 隐私保护专家

4.1 生产安全配置审计

项目 状态 风险
JWT 密钥 启动时强制检查 __MUST_SET_VIA_ENV__ 安全
PII 加密 AES-256-GCM + KEK 层级 + 开发模式拒绝生产 安全
密码哈希 Argon2 + 随机 salt 安全
PostgreSQL RLS 所有表启用 + 严格策略 安全
审计日志 哈希链防篡改 安全
限流失败模式 Redis 不可用时默认 fail-open ⚠️ 高风险
SSE Token 通过 query parameter 传递 JWT ⚠️ 中风险
AI API 密钥 api_key = "" 空字符串(非强制占位符) ⚠️ 中风险
SQL 注入 sanitize_identifier() + 参数化查询 安全

关键建议:

  1. P0 — 限流 fail-close 生产环境必须设置 ERP__RATE_LIMIT__FAIL_CLOSE=true,否则 Redis 宕机 = 无限流
  2. P1 — SSE Token 安全: 改用短期一次性 ticket 替代 JWT query param避免 token 出现在日志/历史记录
  3. P1 — AI 密钥统一: 与 JWT 密钥一样使用 __MUST_SET_VIA_ENV__ 占位符模式
  4. P2 — 审计日志写入: fire-and-forget 模式可能导致静默丢失,改为带重试队列

交叉引用: 质量组(§6.3)指出 unwrap() 调用中 PluginHost::db panic 是同一类问题 — 关键路径缺乏容错。

4.2 医疗数据合规性

已有能力:

  • PII 加密体系完善KEK → DEK → 数据加密 + HMAC 盲索引)
  • PostgreSQL RLS 已在所有表启用
  • 审计日志实现哈希链防篡改
  • 多租户隔离通过 JWT 中间件 + tenant_id 列过滤

缺口:

缺口 影响 优先级
小程序知情同意页面缺失 医疗合规底线,后端 consent 实体存在但前端完全空白 P1
数据保留策略缺失 无自动化数据过期/匿名化机制 P2
访问日志粒度不足 audit_logs 记录 API 调用但不记录具体访问了哪些患者数据 P3

5. 专家组 3前端工程与用户体验

成员画像: 前端架构师 + UX 研究员 + 测试工程师

5.1 测试覆盖率分析

前端测试现状Web + 小程序):

层面 文件数 测试文件数 覆盖率
Web 页面 40+ 0 0%
Web Store 6 0 0%
Web Hook 9 2 ~22%
Web API 30+ 1 ~3%
Web 组件 10 1 ~10%
小程序页面 40 0 0%
小程序服务 25+ 0 0%

已有的 E2E 覆盖:

  • Web13 个 Playwright spec患者旅程、预约、随访、体征、告警等核心流程
  • 小程序4 个 automator spec商城、健康查看、积分、体征录入

核心判断: 前端测试覆盖率 <5% 是项目最大的质量风险。后端有 772 个测试保障,但前端 151 个文件几乎裸跑。E2E 测试慢且脆弱,不能替代单元测试 — 任何重构都可能引入不可检测的回归。

交叉引用: 4 个专家组独立得出「前端测试是最大短板」的结论 — 架构组(§3)、质量组(§6)、管理组(§7) 均标记。风险传导链(§10)说明低测试覆盖放大了所有其他重构风险。

建议:

  1. P1 — Store 测试: 6 个 Zustand Store 是状态管理核心,每个至少 10 个测试
  2. P1 — API 契约测试: 30+ API 模块验证 URL / Method / 参数序列化
  3. P2 — 关键 Hook 测试: usePaginatedDatausePermissionuseApiRequest
  4. P3 — 小程序测试: 从 BLE 管理器和安全存储工具开始

5.2 国际化评估

现状: 整个项目零 i18n — 所有 UI 字符串硬编码中文,无 i18n 框架。

影响评估:

  • 短期:不影响 — 目标用户就是中文用户
  • 中期:如有国际医疗机构客户,改造成本巨大
  • 长期:取决于商业策略

建议: 不急于实施,但提取 antd.locale(zhCN)dayjs.locale('zh-cn') 为可配置入口,建立防腐层。优先级 P4。

5.3 组件质量与大文件

Web 前端大文件(>500 行):

文件 行数 问题 建议
Organizations.tsx 622 组织树+部门树+岗位三合一 拆为 OrgTree + DeptTree + PositionPanel
ArticleEditor.tsx 554 富文本+图片上传+表单 拆为 ArticleForm + ImageUploader
MainLayout.tsx 554 菜单+侧边栏+头部+面包屑 拆为 Sidebar + Header + Breadcrumb
AppointmentList.tsx 518 列表+筛选+创建弹窗 拆为 AppointmentFilter + AppointmentForm
VitalSignsChart.tsx 485 多系列图表 拆为 ChartConfig + DataTransformer

正面发现:

  • console.log 残留
  • 零硬编码 mock 数据
  • API 层与页面层分离良好
  • Zustand Store 职责清晰,无 god store

6. 专家组 4代码质量与技术债

成员画像: 资深工程师 + 代码审查专家

6.1 后端热点文件治理

千行以上文件(按风险排序):

文件 行数 风险 说明
erp-health/service/points_service.rs 1863 🔴 积分业务核心,所有积分逻辑集中
erp-plugin/manifest.rs 1781 🟡 插件清单解析,变更频率低
erp-plugin/dynamic_table.rs 1768 🟡 DDL 生成,含安全防护
erp-plugin/data_service.rs 1693 🟡 插件通用 CRUD
erp-health/module.rs 1130 🟠 路由注册瓶颈
erp-health/service/stats_service.rs 1117 🟡 统计服务
erp-health/service/patient_service.rs 1111 🟠 患者核心业务tracing 已补全20 条)
erp-health/service/health_data_service.rs 986 🟠 健康数据核心
erp-health/service/action_inbox_service.rs 930 🟡 Action inbox

建议拆分策略:

  • points_service.rspoints_account + points_rule + points_exchange + points_checkin
  • patient_service.rspatient_crud + patient_family + patient_tag + patient_export
  • module.rs (health) → 按子域拆路由组

优先级: P2 — 在下一次大改动时顺带重构

交叉引用: 前端组(§5.3)独立发现 Web 侧同样存在 5 个 500+ 行大组件。架构组(§3.1)指出 module.rs 路由注册瓶颈。后端 + 前端共 11 个大文件需要拆分,是跨维度共识。

6.2 前端错误处理统一化

重复模式18+ 文件):

// 被 18+ 个页面文件重复的内联错误提取
(err as { response?: { data?: { message?: string } } })?.response?.data?.message

已有的正确方案: api/client.ts 中的 handleApiError() 函数 — 但多数页面未使用。

建议:

  1. 统一使用 handleApiError()useApiRequest hook
  2. 批量替换 18 个文件中的内联模式
  3. 建立 ESLint 规则禁止该模式

优先级: P2 — 依赖 P1 Store 测试完成后再批量重构,避免无安全网的大规模替换

交叉引用: 前端组(§5.1)指出前端测试 <5%,意味着这个 18 文件重构在没有测试保障下执行 = 高风险。应先完成 #7 Store 测试。

6.3 TypeScript 类型安全

any 使用统计:

  • Web10 处3 个文件)— 集中在 usePaginatedData5 处和插件看板4 处)
  • 小程序28 处12 个文件)— 集中在 BLE API 类型缺失11 处和微信登录响应5 处)

根因分析:

  • usePaginatedDataHook 重载签名问题,可通过泛型收窄解决
  • 小程序 BLETaro 的 BLE 类型定义不完整,需补充类型声明文件

优先级: P3 — 不影响运行时,但影响类型安全性

其他技术债:

项目 数量 优先级
编译器警告 40 个 P3
unwrap() 调用service 层生产风险) 2 处PluginHost::db / semaphore acquire P2
TODO 注释 4 个(全部合理) P4
过时迁移注释("应为 50 条" 1 处 P2

7. 专家组 5项目管理与交付效率

成员画像: 项目经理 + 产品负责人

7.1 未提交工作积压

严重程度: 🔴 CRITICAL

现状: 工作树中存在 24 个已修改未提交文件 + 48 个未跟踪新文件(共 73 个),包括:

  • 8 个 wiki 文件(文档更新)
  • 4 个小程序源文件
  • 2 个 Web 前端文件
  • 8 个 Rust 业务代码文件(跨 5 个 crate
  • 7 个新的小程序医生端服务文件
  • 8 个审计报告文档
  • 5 个讨论记录
  • 临时文件(_temp/mp_error.pngtmp_chart.png 等)

风险: 本地故障 = 大量工作丢失 + 无法回溯变更历史 + 违反 CLAUDE.md 闭环工作法。

建议: 立即执行分类提交 — 按功能 / 文档 / 配置分组,并清理临时文件。

交叉引用: 架构组(§3.1)指出 wiki 文档未提交,质量组(§6.3)指出过时注释未更新 — 三组数据均指向「闭环工作法未执行」的系统性问题。风险传导链(§10.2)说明未提交文件是人员单点故障的放大器。

7.2 审计整改进度

整改率: 25 个审计发现中仅 1-2 个已处理(~8%3 天后)

CRITICAL 项状态:

ID 问题 天数 状态
C1 晚间血压数据丢失 3 已修复但 wiki 文档未更新
C2 告警权限码拼写错误 (alertalerts) 3 未修复5 分钟改动)

HIGH 项状态:

ID 问题 状态
H1 小程序透析模块完全缺失 未开始
H2 小程序知情同意页面完全缺失 未开始
H3 健康服务运行时日志严重不足 部分修复patient_service tracing 已补全,其他大文件待跟进)

建议:

  1. C2 立即修复 — 改 health.alert.managehealth.alerts.manage
  2. 建立审计整改看板 — 每个 finding 分配责任人和截止日期
  3. 严格按 CRITICAL → HIGH → MEDIUM 顺序处理

7.3 Wiki 一致性

发现的不一致:

位置 问题
architecture.md:28-29 重复的插件列表行(一行有 assessment一行没有
architecture.md:25 权限码数量 22实际 erp-health 有 39 个)
testing.md:124 迁移数 "应为 50 条"(实际已 96 条)
database.md 迁移文档仅覆盖到 m000091实际 m000100
infrastructure.md 更新日期停留在 2026-04-23
Docker compose PostgreSQL 16 vs wiki 声称的 18
entity 计数 architecture.md 说 44实际列表有 45 个

建议: 安排 wiki 刷新会话,逐一校对数据。优先级 P2。

交叉引用: 本文档自身的数据已用代码库实际值校正(见 §1 头部注释)。但 wiki 中仍有 7 处不一致未修。架构组(§3.2)和本组均发现此问题 — 3 组独立验证,可信度高。

8. 优先级行动矩阵

🔴 P0 — 立即处理(今天)

# 行动 工作量 完成标准 阻塞
1 提交并推送 73 个未提交文件 30 min git status 干净 + git push 成功 所有后续工作
2 修复 C2 告警权限码拼写 5 min AlertList 页面按钮正常显示 + 无 403
3 确认 C1 晚间血压修复并更新 wiki 15 min 小程序录入晚间血压 → 数据库有记录 + wiki 症状导航已更新

🟠 P1 — 本周内

# 行动 工作量 完成 standard 依赖
4 生产限流 fail-close 配置 1h config/production.tomlfail_close = true + 集成测试验证 #1
5 补全 erp-health/event.rs 测试 4h 每个消费者至少 1 个正向 + 1 个异常测试
6 孤立事件清理14 个) 8h 每个事件有消费者或已删除,孤立率 <10% #5
7 前端 Store 单元测试6 个 store 8h 每个 store ≥10 测试,覆盖核心 action 和 selector #1
8 小程序透析模块(审计 HIGH H1 16h 透析记录查看/新增/编辑页面可用 + 4 个 automator spec #1
9 小程序知情同意模块(审计 HIGH H2 8h 知情同意签署页面 + 签署后事件正常发布 #1
10 health_data_service / action_inbox 补充 tracing 4h 两个文件的关键路径均有 tracing::info/error

🟡 P2 — 本月内

# 行动 工作量 完成 standard 依赖
11 前端错误处理统一化18 个文件) 4h 0 处内联错误提取,全部用 handleApiError #7
12 大文件拆分(后端 6 个千行文件) 16h 无 >1000 行的 service 文件
13 前端 API 契约测试 8h 每个 API 模块 ≥3 测试URL/Method/参数) #7
14 Wiki 数据一致性刷新 4h wiki 中所有计数与代码库一致
15 数据库迁移治理策略 8h 新迁移 <500 行 + 有 dry-run 脚本
16 unwrap() 调用替换2 处) 2h grep -r "unwrap()" service/ 返回 0 结果

🟢 P3 — 季度规划

# 行动 工作量 完成 standard 依赖
17 编译器警告清理40 个) 8h `cargo check 2>&1 grep warning` 返回 0
18 前端大组件拆分20 个文件) 16h 无 >500 行的 TSX 文件 #12
19 TypeScript any 消除 8h grep -r ": any" Web 返回 0 / 小程序 <5
20 小程序测试基础设施 16h BLE + secure-storage + 核心页面单元测试 #8
21 Docker 配置与文档对齐 4h compose 版本号 = wiki 声明 #14
22 数据保留策略设计 16h 设计规格文档 + 至少 1 个实体的自动化过期

9. 交叉验证:多组共识与分歧

5 个专家组独立分析同一代码库。本节记录各组发现的交叉印证和矛盾,增强结论可信度。

9.1 多组共识≥3 组独立发现同一问题)

共识问题 涉及专家组 核心引用
前端测试空白是最大风险 架构(§3) + 前端(§5.1) + 质量(§6) + 管理(§7) 前端 151 文件仅 11 测试(<5%4 组独立得出"不可接受"结论
大文件/大组件是可维护性瓶颈 架构(§3.1) + 前端(§5.3) + 质量(§6.1) 后端 6 个千行文件 + 前端 5 个 500+ 行组件3 组独立标记
Wiki 数据过时 架构(§3.2) + 质量(§6.3) + 管理(§7.3) 迁移数/权限码/entity 计数多处不一致3 组各自发现不同不一致
审计整改执行纪律缺失 管理(§7.2) + 安全(§4.1) + 质量(§6) C2 五分钟改动 3 天未修,限流 fail-open 未配置,说明流程断裂

9.2 组间互补A 组发现问题B 组补充影响)

问题 A 组发现 B 组补充
孤立事件 架构组(§3.3): 55% 孤立率 安全组(§4.1): 事件无消费者 = 功能声明与实际不一致,合规审计时被发现
限流 fail-open 安全组(§4.1): Redis 宕机无限流 架构组(§3.1): 单体架构下 Redis 是 SPOF影响全局
前端错误处理重复 质量组(§6.2): 18 文件重复模式 前端组(§5.1): 无测试覆盖 = 重构时无法验证不破坏
unwrap() 调用 质量组(§6.3): 2 处生产风险 安全组(§4.1): PluginHost::db panic = 整个插件子系统不可用
小程序页面空白 前端组(§5): 功能缺失 安全组(§4.2): 知情同意缺失 = 医疗合规底线问题

9.3 无重大分歧

5 组之间无结论性矛盾 — 所有发现方向一致,差异仅在优先级判断上:

  • i18n前端组判 P4安全组未提及。共识不阻塞
  • 编译器警告:质量组判 P3架构组未提及。共识可延后

10. 风险传导链

风险不是孤立的。以下展示风险如何通过依赖关系互相放大,解释为什么某些 P0 看似小改动却必须立即处理。

10.1 核心传导路径

未提交文件积压 (#1)
  ├─→ 本地故障 = 工作丢失 → 阻塞所有后续工作
  └─→ 审计整改延迟 → C2 五分钟改动被搁置 3 天

孤立事件 55% (#6)
  ├─→ 功能声明 ≠ 实际行为 → 用户不可见的业务断裂
  └─→ 无消费者测试 → 重构 event.rs 时无法验证 (#5)

前端测试 <5% (#7)
  ├─→ 错误处理统一化 (#11) 无法验证 → 技术债固化
  ├─→ 大组件拆分 (#18) 风险极高 → 不敢重构
  └─→ API 契约测试 (#13) 无回归安全网 → 新功能也可能破坏旧功能

限流 fail-open (#4)
  └─→ Redis 宕机 → 无限流 → 恶意请求打垮服务 → 影响所有用户

10.2 风险放大效应

放大器 被放大的风险 机制
低测试覆盖 重构风险 任何代码变更都无法验证不引入回归
孤立事件 功能验证盲区 发布的事件无消费者 = 变更的影响无法观测
未提交文件 人员单点故障 唯一开发者本地故障 = 全部工作丢失
Wiki 过时 决策误导 基于过时 wiki 的新决策可能建立在错误前提上

11. 总结与建议

整体评分B+(良好,有明确的提升空间)

核心优势

  1. 架构设计出色 — 分层清晰、模块边界严格、事件驱动解耦、零循环依赖
  2. 安全基础扎实 — Argon2 + AES-256-GCM + PostgreSQL RLS + 审计哈希链
  3. 文档驱动开发 — 86 份设计规格、12 份讨论记录、12 页 wiki决策有据可查
  4. API 层完整 — 328 路由覆盖所有业务,前端 API 层与后端 1:1 对应
  5. 前端架构清晰 — API / Store / Hook 三层分离,无 god store、无硬编码数据、无 console.log 残留

核心风险

  1. 前端测试空白 — <5% 覆盖率,任何重构都是冒险
  2. 审计整改缓慢 — 3 天仅处理 8% 的审计发现CRITICAL C25 分钟改动)仍未修复
  3. 工作积压 — 73 个文件未提交,违反闭环工作法
  4. 孤立事件 — 55% 的事件无消费者,可能是功能断裂的信号
  5. 可观测性不足 — 多个核心 service 文件仍缺 tracing 日志patient_service 已补全)

成功度量

每个优先级阶段的验收标准:

阶段 时间窗口 核心指标 目标
P0 止血 今天 CRITICAL 项关闭率 100%2/2
P0 止血 今天 未提交文件数 0
P1 补短板 本周 审计 HIGH 关闭率 ≥66%2/3
P1 补短板 本周 前端 Store 测试数 ≥60
P1 补短板 本周 事件孤立率 <10%
P2 治本 本月 千行 service 文件 0
P2 治本 本月 Wiki 数据准确率 100%
P3 持续 季度 前端测试覆盖率 >30%
P3 持续 季度 编译器警告数 0

下一步方向

当前阶段应遵循 「止血 → 补短板 → 治本」 路径:

  1. 止血P0今天 提交积压文件 + 关闭审计 CRITICAL
  2. 补短板P1本周 事件系统 + 前端测试 + 小程序透析/知情同意 + 安全配置
  3. 治本P2本月 代码重构 + 文档刷新 + 迁移治理
  4. 持续改善P3季度 类型安全 + 警告清理 + 测试扩展

一句话总结: 架构扎实、文档丰富的项目,当前需要暂停新功能开发,用 1-2 周集中补强测试和运维纪律,为下一阶段的功能扩展建立可靠的基础。