Files
xiaobaifupan/docs/migration/evidence/slice-11/completion-audit.md
T

6.4 KiB
Raw Blame History

保真迁移完成度逐项审计

审计对象:webapp/app/ 审计基线:xiaobai-preservation-slice-11-candidate-20260731 结论口径:自动证据通过不替代用户人工验收,也不授权部署切换

本审计回答的不是“测试是否为绿色”,而是迁移总纲、批准目录、产品表面和人工维护目标是否 分别有可复验的证据。状态只使用:自动闭环人工待验明确保留未执行

1. 目标与证据矩阵

要求 当前实现 主要证据 状态
原版是唯一产品/视觉基线 所有切片从根目录原版复制或机械移动;规格书不覆盖真实行为 总纲;切片00-11源码映射 自动闭环
next/完全隔离 next/未进入候选导入、资产、测试或部署路径;切片10后Git差分为0 next失败冻结记录.mdGit路径审计 自动闭环
批准的模块化单体目录 backend/{bootstrap,http,features,data,database,jobs,llm}frontend/{shared,pages,styles,vendor}config/data/tests/tools均已归位 app/config/architecture-inventory.json;切片01-10 自动闭环
不制造第二套产品实现 根入口是兼容外壳;业务方法从原类机械移动,专项测试逐符号比较AST/哈希 切片01-10 preservation tests 自动闭环
16个主工作区及内部能力完整 页面注册表有16个主工作区;策略跟踪、搜索、详情、提醒、账户和系统管理保留 pages.config.json;前端边界测试;Playwright 自动闭环
API路径、权限、错误语义不变 53个精确路径和11个正则路径有唯一所有者;鉴权在后端执行 api.config.jsonHTTP/权限测试;21端点差分 自动闭环
数据源有统一边界和质量规则 18个数据集登记来源、用途、单位、新鲜度、覆盖率、复权和失败关闭规则 data registriesDataGateway/quality tests 自动闭环
数据库无损、用户隔离不变 36张表由初始schema和有序migration管理;62个schema对象、21张关键表差分相同 数据库差分;migration/repository/account-boundary tests 自动闭环
后台任务可追踪和重试 3个任务登记调度、锁、超时、重试和输出版本;运行状态持久化 jobs.config.jsonjob runner tests 自动闭环
LLM唯一治理边界 问师、问天、复盘助手和策略编译经统一网关执行会员、额度、模型回退、流式和审计规则 切片07/09LLM gateway/stream tests 自动闭环
前端唯一请求出口、Shell和页面职责 只有frontend/shared/api.js调用fetch;Shell、状态、弹窗、页面生命周期及页面模块已归位 frontend boundary tests;切片10源码重组哈希 自动闭环
CSS、主题、动画和移动行为不改写 原七层CSS和问天动画按字节/源码移动;令牌层与加载顺序受测试保护 CSS governance;切片10/11浏览器证据 自动闭环
不确定代码先记录再试删 2个文件和5个无消费者函数仅为候选试删;历史表兼容责任继续保留 uncertain-code-audit.mdcleanup contract 人工待验
可由人工维护者复验 候选README/架构说明、工具分类、API/架构生成器、统一验证命令均可从app/独立运行 app/tools/README.mdmaintenance tool tests 自动闭环
正式数据库与部署不受影响 验收只使用隔离SQLite副本和非8765端口 各切片README;运行记录 自动闭环
Docker/NAS和正式入口切换 用户已明确本轮不做NAS Docker测试;人工验收前禁止切换 迁移状态和切换指南 未执行

2. 结构减法的可量化结果

  • server.py从原版约5,851行降为25行稳定入口;实现归入启动、HTTP和产品领域模块。
  • database.py从原版2,839行降为746行,只保留初始schema、组合入口及有明确历史兼容责任的 方法;各领域查询已移入对应Repository。
  • 20个其他根Python兼容模块均为1-15行导出/模块别名,不含第二套实现。
  • 原9,283行前端运行时按原连续源码范围拆入共享层和13个页面目录;试删后仍由源码重组测试 保护,不能悄悄增加、丢失或重排原行为。
  • 已确认没有消费者的demo_data.py、旧问天加载文件和5个函数进入可单项恢复的试删候选; wencai_saved_queries因旧数据库兼容和账号隔离继续保留。

大文件不等于自动可删。筛选引擎、Tushare适配器、问天确定性计算和原CSS仍是单一有效实现; 在没有更细的同输入差分与人工视觉确认前继续拆分,反而违反“整理原件而非重拍”的迁移约束。 它们已登记在config/architecture-inventory.jsoncode_hotspots,供后续正常维护按领域处理。

3. 本次严格审计发现并关闭的缺口

候选版初次自动验收后,三个维护工具仍带有旧目录假设:基线验证器引用不存在的static/, 架构清单写向不存在的候选文档目录,原样清单生成器假设app/app且会因试删文件直接异常。 这些问题不改变产品页面,却会让接管者无法按指南复验,因此不能视为可维护性完成。

关闭方式:

  1. 基线验证器改为检查候选全量测试、两个生成注册表、frontend/下全部JavaScript、Git差异和 测试数据库完整性。
  2. 候选架构清单固定生成到config/architecture-inventory.json,从正式候选路径统计16页、 64类路由匹配、36张表、供应商/LLM入口、CSS层和热点文件。
  3. 原样资产清单、方法搬运和前端拆分明确标为迁移期工具;可能写文件的操作必须显式传路径或 --apply,默认帮助路径不改文件。
  4. 新增维护工具契约测试,保证生成文件新鲜、所有工具--help可用,旧static/路径不会回归。

4. 仍需用户完成的最终裁决

自动部分完成后仍不能执行以下动作:

  1. 把切片11的试删候选从“待人工确认”改成“确认废弃”。
  2. 声称所有页面的视觉、交互手感和动画已经由用户确认等价。
  3. 建立最终完成标签,或把app/切换为本地/容器正式入口。
  4. 删除根目录原版、正式数据库备份或冻结的失败记录。

本地人工验收入口及逐页清单以人工维护与本地切换指南.md为准。发现差异时只回退对应候选, 不使用破坏性Git操作覆盖原版或正式数据。