diff --git a/docs/decisions/2026-08-13-remediation-decisions.md b/docs/decisions/2026-08-13-remediation-decisions.md new file mode 100644 index 0000000..066f682 --- /dev/null +++ b/docs/decisions/2026-08-13-remediation-decisions.md @@ -0,0 +1,21 @@ +# 2026-08-13 整改决策记录 + +> 范围:对应《项目整改实施计划 V1.0》Task 0 与《蚕病智能防控平台规格说明书 V2.2》第 13 章开放决策。 +> 执行原则:项目负责人已指示开始整改;未获得明确产品/合规/专业确认的事项,本记录采用“保持现状 + 明确复审触发条件”,不擅自进入生产部署。 + +| Decision ID | 结论 | 备选方案 | 选择理由 | 影响 | 负责人 | 复审条件 | +|---|---|---|---|---|---|---| +| DEC-001 | Go 数据库迁移采用 `golang-migrate/migrate/v4`;SQL 迁移文件是唯一 schema 事实来源,命名 `NNNNNN_name.up.sql` / `NNNNNN_name.down.sql` | goose;自研 runner;GORM AutoMigrate | 与计划中 `000001_baseline.up.sql` 命名一致;支持嵌入式 SQL、版本表、up/down 和 PostgreSQL;可复用 Go 标准 `embed` | Task 2 起引入迁移依赖;生产启动执行迁移并禁止 AutoMigrate | 项目负责人 + 后端 | golang-migrate 升级、迁移目录规则变更或生产多实例发现锁冲突时 | +| DEC-002 | CI 保持现状:不新增远程 CI;本地门禁使用 `scripts/verify.ps1`;候选平台为 GitHub Actions | GitLab CI;Jenkins;Gitea Actions | 仓库当前无 remote,无法配置并验证外部 CI;先保留可复现本地门禁 | Task 1 的 CI 接入步骤暂不完成;CI 配置待平台确定 | 项目负责人 + 运维 | 仓库获得 remote 或团队确认 CI 平台时 | +| DEC-003 | 制品保持现状:构建产物不入库,沿用 `web/dist`、`miniapp/dist`、二进制等 gitignore 规则 | GitHub Releases/Artifacts;NAS;Git LFS | 尚未确定 CI 与发布平台,先避免生成产物污染仓库 | 发布继续按 AGENTS.md 手动备份/回滚 | 项目负责人 + 运维 | 进入正式发布流程前 | +| DEC-004 | 数据保留期限保持现状:不自动删除历史数据;具体 bucket/表保留期在 Task 13/14 前评审 | 固定 30/90/365 天 | 当前试点数据量有限,且未获合规/业务确认,不应擅自删数 | 存储增长需纳入容量监控 | 项目负责人 + 运维 | 生产试点或容量告警触发时 | +| DEC-005 | qPCR 保持“只录入、不自动判读”;领域专家确认 protocolVersion、对照规则和阈值后才启用自动判读 | 沿用现有“无 Ct 即阴性” | 当前自动判读存在误判风险,Task 7 将改为四态结果 | Task 7 实现 positive/negative/invalid/indeterminate;专家签字前不输出业务结论 | 领域专家 + 后端 | 专家签字并给出 protocolVersion 时 | +| DEC-006 | APP 保持现状:作为环境监控端,不扩展为全量蚕病功能 | 全量同步 Web/小程序蚕病功能 | 当前 APP 源码未实现蚕病功能,扩大同步会显著增加维护面 | Task 0 后不新增 APP 蚕病页面 | 产品负责人 | 试点用户明确提出 APP 蚕病需求时 | +| DEC-007 | 真实模型二分类转多病种指标门槛保持“未定义,不允许上生产”;待数据集修复和训练恢复后按冻结测试集、mAP、混淆矩阵评审 | 先预设 mAP 0.5 | 当前无真实模型,不能凭空设置验收门槛 | AI 生产继续 mock/不接受为真实验收 | AI 负责人 + 项目负责人 | 数据集修复完成或模型训练恢复时 | +| DEC-008 | 生产云厂商、对象存储、域名和证书保持现状:不迁移云,继续沿用物理机开发环境 | 云 OSS/COS;云 RDS | 当前无生产试点和上云评审;上云属于发布决策 | 部署仍按 `部署指南(物理机).md` | 项目负责人 + 运维 | 正式生产试点前 | + +## 生效与复审 + +- 生效日期:2026-08-13。 +- 所有“保持现状”决策不是永久结论,仅在本轮整改期内有效。 +- 任何决策变化必须更新本表,并在 `开发交接记录.md` 追加影响与回滚点。 diff --git a/后续工作计划.md b/后续工作计划.md index f65e31a..a56ba3e 100644 --- a/后续工作计划.md +++ b/后续工作计划.md @@ -2,6 +2,28 @@ > **完成状态(2026-08-13 更新)**:#5-#24、#27 已完成(详见 `开发交接记录.md`);#1-4 因物理机问题挂起;#23/#26 骨架完成;微信/天气真实数据待凭证。 +## 整改实施计划 Wave 0-4(2026-08-13 启动) + +能力状态使用七态:未开始、方案确定、骨架、Mock、手工录入、部分可用、可验收、已验证。 + +| Wave | 范围 | 任务 | 状态 | 阻塞 | +|---|---|---|---|---| +| Wave 0 | 决策与基线 | Task 0 固化开放决策与整改基线 | 方案确定 | 无,决策记录已生成 | +| Wave 0 | 决策与基线 | Task 1 恢复可复现的多端质量基线 | 部分可用 | CI 待 Task 0 平台落地 | +| Wave 1 | P0 安全与正确性 | Task 2 版本化数据库迁移与 Schema 启动门禁 | 未开始 | 无 | +| Wave 1 | P0 安全与正确性 | Task 3 移除默认密钥与默认管理员密码 | 未开始 | 无 | +| Wave 1 | P0 安全与正确性 | Task 4 收口视频访问与摄像头密钥输出 | 未开始 | 无 | +| Wave 1 | P0 安全与正确性 | Task 5 修复 WebSocket 越权与 AI 流 SSRF | 未开始 | 无 | +| Wave 1 | P0 安全与正确性 | Task 6 修复 AI 风险语义并隔离 Mock 数据 | 未开始 | 无 | +| Wave 1 | P0 安全与正确性 | Task 7 修订 qPCR 判读与检测质控 | 未开始 | 需领域专家确认 | +| Wave 2 | 工程可靠性 | Task 8 建立可靠通知、吊销与跨实例状态 | 未开始 | 无 | +| Wave 2 | 工程可靠性 | Task 9 建立统一检测任务、样本链与发病事件 | 未开始 | 无 | +| Wave 3 | 业务闭环 | Task 10 补齐消毒、种源与二维码身份链 | 未开始 | 无 | +| Wave 3 | 业务闭环 | Task 11 实现小程序离线巡检与可靠同步 | 未开始 | 无 | +| Wave 3 | 业务闭环 | Task 12 完善环境规则、会诊治理、知识审核与效果评估 | 未开始 | 无 | +| Wave 4 | 验收与发布 | Task 13 建立可观测性、容量与恢复验证 | 未开始 | 无 | +| Wave 4 | 验收与发布 | Task 14 建立规格追踪、端到端验收与发布门禁 | 未开始 | 无 | + ## 技术选型决策(2026-08-11 确定) **采用混合架构:现有 Go 底座 + Python AI 微服务** diff --git a/开发交接记录.md b/开发交接记录.md index d553b88..028babd 100644 --- a/开发交接记录.md +++ b/开发交接记录.md @@ -778,3 +778,29 @@ MVP 沿用 IoTDB(现状);TDengine 作为生产规模化候选(先基准 - 本任务前基线提交为 `1b8cab1`;回滚可删除/还原本 Task 1 分支提交,恢复 `.gitignore`、APP 依赖锁文件与小程序类型修复; - 无数据库、环境变量、服务器或生成产物变更;APP `node_modules` 为忽略目录,不影响回滚。 + +--- + +## 2026-08-13 整改 Task 0:固化开放决策与整改基线 + +### 做了什么 + +- 新增 `docs/decisions/2026-08-13-remediation-decisions.md`,按固定表头固化 8 项决策; +- `后续工作计划.md` 增加 Wave 0-4 状态表,使用规格书 V2.2 七态能力状态; +- 决策范围覆盖迁移工具、CI/制品、数据保留、qPCR、APP 范围、模型指标门槛、云部署/域名/证书。 + +### 设计思路与决策依据 + +- 未获得明确产品/合规/专业确认的事项,按“保持现状 + 明确复审触发条件”记录,不擅自进入生产部署; +- 迁移工具选择 `golang-migrate/migrate/v4`,与实施计划中的 `NNNNNN_name.up.sql/.down.sql` 命名和 PostgreSQL 目标一致; +- CI 当前无 remote,先保留 `scripts/verify.ps1` 本地门禁,避免配置无法验证的外部 CI。 + +### 验证结果 + +- `rg -n "Decision ID|迁移|CI|保留|qPCR|APP|二分类" docs/decisions/2026-08-13-remediation-decisions.md` 可检索到对应主题; +- `git diff --check` 无空白错误; +- 本交付只新增/修改文档,不改业务代码、依赖、数据库或服务器。 + +### 回滚点 + +- 删除 `docs/decisions/2026-08-13-remediation-decisions.md`,移除 `后续工作计划.md` Wave 0-4 表和本节即可;无运行时影响。