# 全项目重构质量与验收要求 ## 用户确认的目标与授权 2026-09-10,用户进一步明确:使用 TypeScript 重构时必须拆清文件和模块,持续维护方便后续 AI 接续维护与迭代的文档;允许主动修改项目中不合理的设计,并增加足够的测试用例。既有前提继续有效:大量用户正在使用,暴露接口必须兼容旧版本。 本要求适用于全部核心、插件、proxy、工具及相关工程流程,是每项实施任务的共同验收条件。任务表不构成修改范围的上限;发现新问题时补充或拆分任务,记录证据后继续推进已授权的内部改造,无需逐项重新询问常规文件拆分、内部重命名、类型和测试设计。 这项授权允许修复和改进内部实现,包括消除重复逻辑、整理依赖、调整目录、明确异步状态、资源回收和工程流程;不能把改变公开接口、默认产品行为或未经验证的依赖大升级当作内部整理。遇到实际兼容冲突,优先使用兼容门面、旧入口转发或能力 fallback,无法兼容时明确记录取舍。 用户还明确授权:可以自主选择并安装重构需要的新依赖,新增或改进合理的开发、构建、类型、测试、文档及维护脚本,无需为常规工具选择逐项询问。按实际任务引入,记录用途、版本、所属包和运行环境,并验证旧接口及分发兼容;具体执行规则见 toolchain-release.md。这是依赖和脚本改造授权,不要求提前安装所有可能用到的工具。 ## 1. TypeScript 与文件拆分 - 迁移覆盖自有生产源码;同时整理职责、依赖和状态归属,不以改扩展名或补类型断言作为完成。 - 文件按职责划分:纯计算/解析、状态与调度、媒体/SDK adapter、DOM 渲染、事件与资源管理分别审查。 - 公共入口清楚,内部依赖方向可解释;避免循环依赖、所有模块都接收整个 art、含义不清的公共 utils 堆积。 - 不按固定行数机械拆文件。简单功能可以保留在一个文件,复杂文件必须解释边界,避免过度抽象和大量只有转发的碎文件。 - 将公开 API 与内部实现分开,使后续更换内部实现时无需改变用户调用。 - 为遗留 JS、vendored 文件、必要类型断言登记原因与边界;例外不意味着可以隐藏未完成迁移。 ## 2. 不合理设计的主动审查 每个模块审查:重复代码、隐式全局状态、初始化依赖、异常处理、竞态、资源泄漏、陈旧回调、类型与实现漂移、不可测试的依赖、无依据的性能开销和失效文档。 发现的问题分成已复现缺陷、可验证的设计改进、待取证疑点。前两类可在兼容边界内自主解决,必要时扩展 tasks.json;疑点先验证,不把猜测写成已修复缺陷。范围较大的调整分批交付,保留可回退边界。 ## 3. 面向后续 AI 的模块文档 每个迁移包必须在包内 README 或 ARCHITECTURE.md 维护实现地图。复杂核心/插件需要单独的架构文档;简单包用 README 的维护章节即可,避免复制无意义模板。 文档必须解释: 1. 主要文件各自负责什么、公开入口在哪里、内部依赖方向。 2. 关键数据流、状态转换、事件/Promise 的重要顺序。 3. DOM/监听器/定时器/请求/worker/媒体资源由谁创建、谁释放。 4. 哪些历史接口、类型、别名、样式和行为是兼容边界,为什么保留。 5. 修改某项能力通常应从哪个模块开始,哪些组合需要回归。 6. 可以实际执行的测试、类型检查、构建和 demo 命令。 7. 已知限制、未验证环境、遗留事项及对应任务/决策链接。 实现变更必须在同一批更新相关文档,不把维护说明留到最后集中补写。refactor 下记录迁移过程,包内文档记录最终实际架构;两者用途不同,避免维护两份相互冲突的文件地图。 ## 4. 足够且有效的测试 - 以风险和公开行为决定测试范围,不以测试数量或统一覆盖率数字作为唯一完成标准。 - 每个被修复缺陷有复现用例;每个迁移边界有正常、边界、失败和必要生命周期测试。 - 异步能力重点覆盖连续操作、乱序完成、取消、重复调用、销毁中回调和异常传播。 - 对 API/事件/返回值/类型/入口的兼容建立消费者用例,包含新核心旧插件和原支持范围旧核心新插件。 - 媒体播放、DOM 交互、跨窗口及 codec/SDK 能力需要对应浏览器或真实环境证据,mock 只验证可控部分。 - 纯目录移动、文案和低影响格式修改复用现有检查,不添加只重复实现的测试。 - 不通过删除失败用例、无理由跳过、宽泛断言、全量更新快照或扩大超时制造通过结果。 ## 5. 完成门槛 实施任务标为 done 前,在变更记录中逐项说明: | 项目 | 所需证据 | | --- | --- | | 结构 | 职责与依赖清楚,拆分理由明确,不合理设计已处理或链接后续任务 | | 类型 | 对应严格检查和消费者样例通过,类型声明与运行时一致 | | 兼容 | 旧 API、类型、事件/Promise、DOM/CSS 和分发路径没有未经处理的回归 | | 测试 | 风险对应的用例、运行结果和限制;修复问题有可重跑复现 | | 文档 | 实际模块地图、维护入口、命令和决策随实现更新 | | 交接 | 变更、任务状态、剩余问题、下一步及回退方法可追溯 | | 提交 | 每个完成任务已有独立本地 commit,包含任务 ID 与实现/测试/文档/状态,提交结果已核实 | 只有文档或计划变更时,如实记录文档验证,不能声称上述生产代码和浏览器验收已经完成。 用户补充要求:每完成一个任务就提交一个 commit。本地提交是任务交付的一部分,不能只改状态而不提交,也不能积累多个已完成任务后合并提交;执行方式见 ai-workflow.md。