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

73 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 保真迁移完成度逐项审计
> 审计对象:`webapp/app/`
> 审计基线:`xiaobai-preservation-slice-11-candidate-20260731`
> 结论口径:自动证据通过不替代用户人工验收,也不授权部署切换
本审计回答的不是“测试是否为绿色”,而是迁移总纲、批准目录、产品表面和人工维护目标是否
分别有可复验的证据。状态只使用:`自动闭环``人工待验``明确保留``未执行`
## 1. 目标与证据矩阵
| 要求 | 当前实现 | 主要证据 | 状态 |
|---|---|---|---|
| 原版是唯一产品/视觉基线 | 所有切片从根目录原版复制或机械移动;规格书不覆盖真实行为 | 总纲;切片00-11源码映射 | 自动闭环 |
| `next/`完全隔离 | `next/`未进入候选导入、资产、测试或部署路径;切片10后Git差分为0 | `next失败冻结记录.md`Git路径审计 | 自动闭环 |
| 批准的模块化单体目录 | `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.json`;HTTP/权限测试;21端点差分 | 自动闭环 |
| 数据源有统一边界和质量规则 | 18个数据集登记来源、用途、单位、新鲜度、覆盖率、复权和失败关闭规则 | data registriesDataGateway/quality tests | 自动闭环 |
| 数据库无损、用户隔离不变 | 36张表由初始schema和有序migration管理;62个schema对象、21张关键表差分相同 | 数据库差分;migration/repository/account-boundary tests | 自动闭环 |
| 后台任务可追踪和重试 | 3个任务登记调度、锁、超时、重试和输出版本;运行状态持久化 | `jobs.config.json`job 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.md`cleanup contract | 人工待验 |
| 可由人工维护者复验 | 候选README/架构说明、工具分类、API/架构生成器、统一验证命令均可从`app/`独立运行 | `app/tools/README.md`maintenance 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.json``code_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操作覆盖原版或正式数据。