<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>QMTV 产品文档</title><link>https://qmtv-docs.appland.com.cn/</link><description>Recent content on QMTV 产品文档</description><generator>Hugo</generator><language>zh-CN</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://qmtv-docs.appland.com.cn/index.xml" rel="self" type="application/rss+xml"/><item><title>00 · 交接导览（先读我）</title><link>https://qmtv-docs.appland.com.cn/qmtv/product/00-%E9%A1%B9%E7%9B%AE%E5%AF%BC%E8%A7%88/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/product/00-%E9%A1%B9%E7%9B%AE%E5%AF%BC%E8%A7%88/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本目录是 QMTV 项目开发文档集，面向开发/运维的同事。建议按顺序阅读，全程约 30 分钟即可建立完整认知并跑起项目。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="项目速览卡"&gt;项目速览卡&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;项&lt;/th&gt;&#10; &lt;th scope="col"&gt;值&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;项目名&lt;/td&gt;&#10; &lt;td&gt;QMTV — AI 短剧智能生产线&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;位置&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;D:\WORK\GAE\qmtv&lt;/code&gt;（本目录）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;技术栈&lt;/td&gt;&#10; &lt;td&gt;Node.js 22 + Express 5 + better-sqlite3（后端）；Vue 3 + Vue Router 4 + Vite 8（前端）；无 UI 框架，自研主题&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;启动&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;npm install&lt;/code&gt; → &lt;code&gt;npm start&lt;/code&gt;（后端 :3300 并托管前端 dist）→ &lt;code&gt;npm run build&lt;/code&gt;（构建前端）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;数据库&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;data/qmtv.db&lt;/code&gt;（SQLite WAL，49 张表，免安装）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;规模&lt;/td&gt;&#10; &lt;td&gt;后端 24 个模块 / 5436 行，239 个 API；前端 24 个页面 / 约 9000 行&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;设计文档（历史全量）&lt;/td&gt;&#10; &lt;td&gt;&lt;code&gt;D:\WORK\GAE\QMTV网站设计文档.md&lt;/code&gt;（22 节，按 v1→v22 版本演进记录每一步设计决策与实测结论）&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="文档地图"&gt;文档地图&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;文档&lt;/th&gt;&#10; &lt;th scope="col"&gt;内容&lt;/th&gt;&#10; &lt;th scope="col"&gt;什么时候读&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;strong&gt;01-系统设计方案.md&lt;/strong&gt;&lt;/td&gt;&#10; &lt;td&gt;产品定位、功能全景、各模块设计方案、数据模型、计费模型、AI 链路设计、视觉体系&lt;/td&gt;&#10; &lt;td&gt;想理解&amp;quot;为什么这样设计&amp;quot;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;strong&gt;02-系统架构介绍.md&lt;/strong&gt;&lt;/td&gt;&#10; &lt;td&gt;技术栈、目录结构、后端模块职责、前端结构、49 张表清单、关键机制（SSE/供应商适配/启动恢复）、构建部署&lt;/td&gt;&#10; &lt;td&gt;想理解&amp;quot;代码怎么组织的&amp;quot;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;strong&gt;03-系统开发说明.md&lt;/strong&gt;&lt;/td&gt;&#10; &lt;td&gt;环境准备、启动步骤、账号、日常开发操作指南（加页面/加接口/加表）、验证方法、踩坑清单、运维注意&lt;/td&gt;&#10; &lt;td&gt;动手开发前必读&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;strong&gt;04-待开发功能与规划.md&lt;/strong&gt;&lt;/td&gt;&#10; &lt;td&gt;真实模型接入清单、已知欠账与改进项、建议优先级&lt;/td&gt;&#10; &lt;td&gt;排后续开发计划&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;strong&gt;05-API接口速查手册.md&lt;/strong&gt;&lt;/td&gt;&#10; &lt;td&gt;全部 239 个 API 按模块分组&lt;/td&gt;&#10; &lt;td&gt;写代码时当字典查&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="30-分钟上手路径"&gt;30 分钟上手路径&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;（5 分钟）读本文档 + &lt;code&gt;02-系统架构介绍.md&lt;/code&gt; 的目录结构一节&lt;/li&gt;&#10;&lt;li&gt;（5 分钟）&lt;code&gt;npm install&lt;/code&gt;，两个终端分别 &lt;code&gt;npm start&lt;/code&gt; 和 &lt;code&gt;npm run dev&lt;/code&gt;（前端热更 :5173，代理到 :3300）&lt;/li&gt;&#10;&lt;li&gt;（5 分钟）用制片账号登录 &lt;code&gt;producer@xingmang.cn / demo123456&lt;/code&gt;，把主导航每一页点一遍；再用管理员 &lt;code&gt;admin@qmtv.com / admin123456&lt;/code&gt; 看管理后台&lt;/li&gt;&#10;&lt;li&gt;（10 分钟）读 &lt;code&gt;03-系统交接说明.md&lt;/code&gt; 的「常见开发任务怎么做」与「踩坑清单」&lt;/li&gt;&#10;&lt;li&gt;（5 分钟）浏览 &lt;code&gt;04-待开发功能与规划.md&lt;/code&gt;，确定你的第一个任务&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="三条最重要的经验先记住再说"&gt;三条最重要的经验（先记住再说）&#10;&lt;/h2&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;发中文请求调试一律写 Node 脚本&lt;/strong&gt;（仓库里有大量 &lt;code&gt;verify_*.js&lt;/code&gt; 可参照），不要用 curl/heredoc——Git Bash 下中文会 GBK 损坏，曾数次被误判为 bug。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;数据库是SQLite 单文件&lt;/strong&gt;，改表结构统一走 &lt;code&gt;server/db.js&lt;/code&gt; 的 migrations 数组（&lt;code&gt;ALTER TABLE ... ADD COLUMN&lt;/code&gt;，try/catch 幂等），&lt;strong&gt;不要&lt;/strong&gt;手改已有 CREATE TABLE。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;所有生成动作都走积分&lt;/strong&gt;：先 &lt;code&gt;tryDeduct&lt;/code&gt; 再调 &lt;code&gt;providers.imageSmart/videoSmart&lt;/code&gt;，失败退款由 providers 内部统一负责，调用方不要重复退款。生成类入口只此一个约定，接手时务必遵守。&lt;/li&gt;&#10;&lt;/ol&gt;</description></item><item><title>QMTV 测试规划（Go 版，P0 底册）</title><link>https://qmtv-docs.appland.com.cn/qmtv/test/%E6%B5%8B%E8%AF%95%E8%A7%84%E5%88%92-qmtv/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/test/%E6%B5%8B%E8%AF%95%E8%A7%84%E5%88%92-qmtv/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;回答移植需求②&amp;quot;基于现有项目先写单元测试——移植现有测试（如果有），或另写&amp;quot;。现状实测：冻结版&lt;strong&gt;零单测&lt;/strong&gt;，仅 4 个 API 冒烟脚本（verify_*.js）覆盖 60/239 端点。结论：&lt;strong&gt;以 TDD 另写为主（pms 范式），verify 断言移植为集成冒烟底册，e2e 骨架按 pms 约定立&lt;/strong&gt;。&lt;/p&gt;</description></item><item><title>QMTV 使用说明书(页面图解版)</title><link>https://qmtv-docs.appland.com.cn/qmtv/manual/qmtv%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6_%E4%B8%AD%E6%96%87/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/manual/qmtv%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6_%E4%B8%AD%E6%96%87/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本手册面向 QMTV 平台的三类用户:&lt;strong&gt;工作台用户&lt;/strong&gt;(拆解-出图-成片创作者)、&lt;strong&gt;企业管理员&lt;/strong&gt;(组织与分销)、&lt;strong&gt;平台管理员&lt;/strong&gt;(&lt;code&gt;/admin&lt;/code&gt; 运营方)。&#10;演示环境:&lt;code&gt;http://localhost:3300&lt;/code&gt;(启动见 docs/DEPLOY.md §2.5);演示账号 &lt;code&gt;admin@qmtv.com / admin123456&lt;/code&gt;(管理员)、&lt;code&gt;demo@qmtv.com / demo123456&lt;/code&gt;、&lt;code&gt;producer@xingmang.cn / demo123456&lt;/code&gt;。&#10;截图来自 Playwright 截图管线(&lt;code&gt;frontend/e2e/snapshots.spec.ts&lt;/code&gt;,重跑 &lt;code&gt;cd frontend &amp;amp;&amp;amp; npm run test:snapshots&lt;/code&gt;);Mock 模式下素材图为占位 SVG,真实供应商接入后为实际生成结果。&#10;配套文档:&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/manual/%E4%BA%BA%E5%B7%A5%E6%B5%8B%E8%AF%95%E6%B8%85%E5%8D%95/"&gt;人工测试清单&lt;/a&gt;(QA 走查底稿)· &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/test/e2e-qmtv-%E5%9C%BA%E6%99%AF%E6%B8%85%E5%8D%95/"&gt;e2e 场景清单&lt;/a&gt;(自动化覆盖地图)。&lt;/p&gt;</description></item><item><title>QMTV E2E 测试约定</title><link>https://qmtv-docs.appland.com.cn/qmtv/test/e2e-%E6%B5%8B%E8%AF%95%E7%BA%A6%E5%AE%9A/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/test/e2e-%E6%B5%8B%E8%AF%95%E7%BA%A6%E5%AE%9A/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;二十六期（2026-10-19）立册。对齐 pms e2e 约定骨架，按 QMTV 单库场景裁剪。&#10;场景覆盖地图见 &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/test/e2e-qmtv-%E5%9C%BA%E6%99%AF%E6%B8%85%E5%8D%95/"&gt;e2e-qmtv-场景清单.md&lt;/a&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="1-初始世界"&gt;§1 初始世界&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;环境&lt;/strong&gt;：&lt;code&gt;bash scripts/dev/e2e/e2e-up.sh&lt;/code&gt; 一键起——独立库 &lt;code&gt;qmtv_e2e&lt;/code&gt;（DROP/CREATE 即全量 reset）+ 端口 &lt;code&gt;:3301&lt;/code&gt;（与 dev :3300 三隔离：库/端口/产物文件名，可共存）+ 托管 &lt;code&gt;frontend/dist&lt;/code&gt;（每次 up 强制重建，永测当前 src）。停环境 &lt;code&gt;e2e-down.sh&lt;/code&gt;；快恢复（不重建库）&lt;code&gt;e2e-seed.sh&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;种子自检&lt;/strong&gt;：&lt;code&gt;e2e-verify.sh&lt;/code&gt; 六项（healthz / admin·demo·producer 三账号登录 / models-active / style-presets）——绿才能跑用例。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;账号矩阵&lt;/strong&gt;：admin@qmtv.com（管理员，credits 100000）/ &lt;a href="mailto:demo@qmtv.com"&gt;demo@qmtv.com&lt;/a&gt; / &lt;a href="mailto:producer@xingmang.cn"&gt;producer@xingmang.cn&lt;/a&gt;——密码=seed 公开演示值，不入新密。API 造数的辅助账号一律 &lt;code&gt;e2e-&lt;/code&gt; 前缀 email；storageState 册（&lt;code&gt;.auth/{admin,demo}.json&lt;/code&gt;）由 setup 项目真实 UI 登录一次产出，用例零登录（对抗 login 20/min 限流）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;确定性规则&lt;/strong&gt;：未配置 &lt;code&gt;model_endpoints&lt;/code&gt; → 生成类全走内置 Mock &lt;strong&gt;同步 done&lt;/strong&gt;（无轮询等待、无外部超时）；Mock 图像/视频字节含随机源——&lt;strong&gt;只断结构确定（卡片存在/URL 可达/台账行），绝不断素材内容&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;预置种子&lt;/strong&gt;：SQL seed（admin/demo+分销配置+计费 KV）+ Go seed（producer+示例任务链）。业务单据不进种子，一律 API 造数。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;隔离与清理&lt;/strong&gt;：用例各自造数各自收尾（集成侧 integCleanup 同纪律）；失败不自愈——重跑前 &lt;code&gt;e2e-up&lt;/code&gt;；&lt;strong&gt;连跑两轮必须间隔 reset&lt;/strong&gt;（credits 水位会漂移）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="明令禁止"&gt;明令禁止&#10;&lt;/h3&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;禁 sleep 等待 UI 条件&lt;/strong&gt;——唯一合法等待面是 Playwright 自动等待/&lt;code&gt;expect.poll&lt;/code&gt;/&lt;code&gt;waitForEvent&lt;/code&gt;/&lt;code&gt;pollUntil&lt;/code&gt;。豁免两处（登记）：①巡检类用例的路由间静置窗口（nav/admin 的 &lt;code&gt;waitForTimeout(400/1500)&lt;/code&gt;、snapshots 截图前 &lt;code&gt;waitForTimeout(800)&lt;/code&gt;——错误收集窗/渲染落定窗，非断言等待）；②截图前 &lt;code&gt;networkidle&lt;/code&gt;。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;禁 retry&lt;/strong&gt;——config &lt;code&gt;retries: 0&lt;/code&gt;（pms flaky 规则：禁 retry 掩盖；修复优先序 改等待&amp;gt;改定位&amp;gt;改断言&amp;gt;最后才是 retry）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;禁断全局计数/绝对余额&lt;/strong&gt;——流水断言用 total 相对面 + 最新行身份；余额用 &lt;code&gt;assertBal&lt;/code&gt; 恒等式（后端集成侧）。&lt;/li&gt;&#10;&lt;li&gt;&lt;em&gt;&lt;em&gt;禁触 qmtv_main / pms_&lt;/em&gt; / sw_main&lt;/em&gt;*——e2e 只操作 qmtv_e2e 单库（远程 139 共享实例纪律平移）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;SSE 面禁 networkidle&lt;/strong&gt;——EventSource 长连接使 networkidle 永不触发；巡检用 load+双 rAF+静置窗口。&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="2-可测性硬规则"&gt;§2 可测性硬规则&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;断业务结果，不断文案细节&lt;/strong&gt;：toast 只断关键短语（「拆解完成」「去字幕完成」）；选择器优先 role/placeholder/既有稳定 class，&lt;strong&gt;不批量加 testid&lt;/strong&gt;（触碰面爆炸）；高频锚点按需单点补并在此登记。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;失败留证&lt;/strong&gt;：trace &lt;code&gt;retain-on-failure&lt;/code&gt; + screenshot &lt;code&gt;only-on-failure&lt;/code&gt; → &lt;code&gt;e2e/.artifacts/&lt;/code&gt;（gitignore）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;断言/截图分文件一行不共用&lt;/strong&gt;（pms 硬规则）：断言册 &lt;code&gt;playwright.e2e.config.ts&lt;/code&gt;（testDir e2e，smoke 项目收 &lt;code&gt;assertion/*.spec.ts&lt;/code&gt;）；截图册 &lt;code&gt;playwright.config.ts&lt;/code&gt;（只收 &lt;code&gt;snapshots.spec.ts&lt;/code&gt;）。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;API 侧错误信封直接抛&lt;/strong&gt;（&lt;code&gt;e2e/lib/client.ts&lt;/code&gt; apiReq）：非 2xx 抛响应体——静默吞错=测试说谎。&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;对话框断言用 &lt;code&gt;waitForEvent('dialog')&lt;/code&gt;&lt;/strong&gt;（once+变体捕获有竞态——auth.spec 负样本抓获）；LoginView 错误走原生 alert，业务 confirm 各页分散（WorkbenchView 仅 repaint 空描述分支）——&lt;strong&gt;用例写前先读该页 submit 源码，勿凭笔记推 dialogs&lt;/strong&gt;。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="3-运行手册"&gt;§3 运行手册&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-5d93f4ea-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="8"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-5d93f4ea-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash scripts/dev/e2e/e2e-up.sh &lt;span class="c1"&gt;# 起环境+种子自检（首次/失败后/连跑第二轮前必跑）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; frontend&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run test:e2e &lt;span class="c1"&gt;# 断言册（smoke，:3301）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run test:e2e:headed &lt;span class="c1"&gt;# 有头观察&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run test:snapshots &lt;span class="c1"&gt;# 截图管线（二十七期手册出图）&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npx playwright show-trace &amp;lt;trace.zip&amp;gt; &lt;span class="c1"&gt;# 失败取证&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash scripts/dev/e2e/e2e-down.sh &lt;span class="c1"&gt;# 停环境&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash scripts/ci.sh --e2e &lt;span class="c1"&gt;# 全栈验收档（=--with-env 全部 + e2e 册）&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;h2 id="4-flaky-处理规则"&gt;§4 flaky 处理规则&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;72h 内同一用例红 ≥2 次 → 摘出开单，不得带红合入；&lt;/li&gt;&#10;&lt;li&gt;7 天未修 → 删用例（场景清单「自动化?」列同步回落「待实现」）；&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;关键用例落地必配负样本演练&lt;/strong&gt;（涉及金额/回归锁/A1 教训面——改断言键名/路径必红才转正；A1 fixture 死键教训：键名错→锚死力失效）。巡检类（nav/admin 只读遍历）可豁免——harness 判死力由其它用例的有机红佐证（二十六期如实报告：admin.spec 无单独负样本，nav/auth/credits/dashboard/generation 五处有机红已证）。&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="5-场景登记与回归锁"&gt;§5 场景登记与回归锁&#10;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;场景 ID 唯一（&lt;code&gt;E2E-&amp;lt;模块&amp;gt;-&amp;lt;序号&amp;gt;&lt;/code&gt;），ID 标注于 &lt;strong&gt;spec 文件头注释&lt;/strong&gt;（用例名可不带前缀）——清单与 spec &lt;strong&gt;双侧 grep 对账按场景 ID 级&lt;/strong&gt;（「自动化?=是」的行必须有对应 ID 的 spec 文件，清单「现状」列登记 ✅ 文件名）。〔二十七期勘误：原「用例同名对账」与实际不符——ID 在头注释非用例名，对账实为场景 ID 级 9=9+文件级 ✅ 列。〕&lt;/li&gt;&#10;&lt;li&gt;缺陷修复优先「并入现有场景加断言」（回归锁），不新开用例——本仓 &lt;code&gt;/review-plan&lt;/code&gt; A 类「验收锚点」判死力机制直接挂此。&lt;/li&gt;&#10;&lt;li&gt;写链场景（导出 ZIP、充值审核、分销提现等）先登清单「待实现」行，后续期次升格。&lt;/li&gt;&#10;&lt;/ul&gt;</description></item><item><title>QMTV 移植契约规格（PRD）v1</title><link>https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;文档定位&lt;/strong&gt;：本文是 qmtv 后端 Go+MySQL 移植的&lt;strong&gt;需求契约唯一权威&lt;/strong&gt;——以冻结版 Node 实现（&lt;code&gt;qmtv/server/&lt;/code&gt;，2026-10-17）的&lt;strong&gt;实际行为&lt;/strong&gt;为基准逐条登记，外加已裁决的修正项。Go 版若与本文不符，以本文为准；本文与冻结代码不符处=修正项章节。上游设计参照：&lt;code&gt;qmtv/docs/01-系统设计方案.md&lt;/code&gt;（冻结）。&lt;/p&gt;</description></item><item><title>人工测试清单(QMTV QA 走查底稿)</title><link>https://qmtv-docs.appland.com.cn/qmtv/manual/%E4%BA%BA%E5%B7%A5%E6%B5%8B%E8%AF%95%E6%B8%85%E5%8D%95/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/manual/%E4%BA%BA%E5%B7%A5%E6%B5%8B%E8%AF%95%E6%B8%85%E5%8D%95/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;自动化升格映射(场景 → E2E/人工三向归类)见 &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/test/e2e-qmtv-%E5%9C%BA%E6%99%AF%E6%B8%85%E5%8D%95/"&gt;docs/test/e2e-qmtv-场景清单.md&lt;/a&gt;;操作说明见 &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/manual/qmtv%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6_%E4%B8%AD%E6%96%87/"&gt;QMTV使用说明书_中文.md&lt;/a&gt;。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;用法:按 T0→T7 顺序执行,每步 &lt;code&gt;☐&lt;/code&gt; 打勾,&lt;code&gt;实际:____&lt;/code&gt; 填真实观察值/截图编号。失败即记 bug 编号。&#10;测试数据:seed 三账号 &lt;code&gt;admin@qmtv.com / admin123456&lt;/code&gt;(管理员,10 万积分)、&lt;code&gt;demo@qmtv.com / demo123456&lt;/code&gt;(1335 积分,seed 含欢迎通知+admin→demo 分销关系)、&lt;code&gt;producer@xingmang.cn / demo123456&lt;/code&gt;(制片视角);计费走内置 Mock(未配置 model_endpoints 时全站同步 Mock,生成图/视频为占位素材)。&#10;前置:环境已起——生产形态 &lt;code&gt;bash scripts/dev-up.sh&lt;/code&gt;(:3300)或 e2e 形态 &lt;code&gt;bash scripts/dev/e2e/e2e-up.sh&lt;/code&gt;(:3301,独立库,推荐——每次 up 全量重建,水位确定);登录 admin。&#10;图例:🟢E2E-XX-NN=该用例主链路已被 Playwright 断言用例覆盖(&lt;code&gt;frontend/e2e/assertion/&lt;/code&gt;);🟡待实现·E2E-XX-NN=场景已登记场景清单、用例待写;无标=纯人工。&#10;⚠️ E2E 只断 API 链路与关键业务结果(toast 存在/台账行/状态翻转):页面交互流、视觉布局、文案细节、跨页联动仍需按下表人工执行。&lt;/p&gt;</description></item><item><title>01 · 系统设计方案</title><link>https://qmtv-docs.appland.com.cn/qmtv/product/01-%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/product/01-%E7%B3%BB%E7%BB%9F%E8%AE%BE%E8%AE%A1%E6%96%B9%E6%A1%88/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本文说明 QMTV 的产品定位、功能全景与各模块的设计方案。历史设计决策的完整推导过程见 &lt;code&gt;D:\WORK\GAE\QMTV网站设计文档.md&lt;/code&gt;（22 节版本史）。&lt;/p&gt;</description></item><item><title>QMTV E2E 场景清单（覆盖地图）</title><link>https://qmtv-docs.appland.com.cn/qmtv/test/e2e-qmtv-%E5%9C%BA%E6%99%AF%E6%B8%85%E5%8D%95/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/test/e2e-qmtv-%E5%9C%BA%E6%99%AF%E6%B8%85%E5%8D%95/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;行格式：场景 ID 唯一；「自动化?=是」行与 &lt;code&gt;frontend/e2e/assertion/*.spec.ts&lt;/code&gt; 按场景 ID 级对账（清单 ID ↔ spec 文件头注释 ID+「现状」列 ✅ 文件名，与测试约定 §5 同口径；二十七期勘误：原「用例同名」与实情不符——用例 ID 在文件头注释非用例名）。&#10;「FSD 功能 ID」列=场景↔功能规格双向对账锚（三十一期回填）——指向 &lt;code&gt;prd/fsd-qmtv/&lt;/code&gt; 各册 &lt;code&gt;F&amp;lt;m&amp;gt;.&amp;lt;nn&amp;gt;&lt;/code&gt; 节；横切场景（积分/导航/截图）无单册归属标「横切」。&#10;二十六期首批冒烟 8 场景全走 Mock 同步面（避开 SSE 依赖与长轮询）；写链场景登「待实现」后续升格。&lt;/p&gt;</description></item><item><title>QMTV 使用手册 · 文档索引</title><link>https://qmtv-docs.appland.com.cn/qmtv/manual/readme/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/manual/readme/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本目录面向&lt;strong&gt;最终用户与 QA&lt;/strong&gt;;与开发面文档(DEPLOY.md/测试规划)互补。发布视图见 my-docs Hugo 站「QMTV 文档」分区。&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;文件&lt;/th&gt;&#10; &lt;th scope="col"&gt;读者&lt;/th&gt;&#10; &lt;th scope="col"&gt;用途&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/manual/qmtv%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E%E4%B9%A6_%E4%B8%AD%E6%96%87/"&gt;QMTV使用说明书_中文.md&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;工作台用户/企业管理员/平台管理员&lt;/td&gt;&#10; &lt;td&gt;页面图解版操作手册:24 路由五段卡片(入口→截图→做什么→操作步骤→规则与注意)+ 计费速查表 + FAQ&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/manual/%E4%BA%BA%E5%B7%A5%E6%B5%8B%E8%AF%95%E6%B8%85%E5%8D%95/"&gt;人工测试清单.md&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;QA&lt;/td&gt;&#10; &lt;td&gt;走查底稿:T0~T7 旅程分层 ☐/实际 填空表;🟢 已被 e2e 覆盖 / 🟡 待实现 / 无标纯人工 三态映射&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;images/&lt;/td&gt;&#10; &lt;td&gt;—&lt;/td&gt;&#10; &lt;td&gt;截图 24 张(login/register/home/…/admin),由截图管线产出&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="截图重跑"&gt;截图重跑&#10;&lt;/h2&gt;&#10;&lt;div class="td-code td-code--untitled" id="td-code-c30172b9-fence-0" data-td-code data-td-code-auto-id&#10; data-td-language="bash" data-td-line-count="3"&gt;&#10; &lt;div class="td-code__viewport" id="td-code-c30172b9-fence-0-viewport" data-td-code-viewport&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash scripts/dev/e2e/e2e-up.sh &lt;span class="c1"&gt;# 起 e2e 环境(:3301/qmtv_e2e,强制重建 frontend/dist)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; frontend &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; npm run test:snapshots &lt;span class="c1"&gt;# 24 图全量刷新 → docs/manual/images/&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bash scripts/dev/e2e/e2e-down.sh &lt;span class="c1"&gt;# 停环境&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&#10;&lt;/div&gt;&#10;&lt;p&gt;截图纪律:纯只读遍历+截图(dashboard 仅填表单文本不提交,零造数);信号驱动 settle(innerText&amp;gt;80)。&lt;/p&gt;</description></item><item><title>前端技术对比：qmtv（Vue3）vs pms web（React18+AntD5）</title><link>https://qmtv-docs.appland.com.cn/qmtv/product/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E5%AF%B9%E6%AF%94-qmtv-v1/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/product/%E5%89%8D%E7%AB%AF%E6%8A%80%E6%9C%AF%E5%AF%B9%E6%AF%94-qmtv-v1/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;文档定位&lt;/strong&gt;：回答&amp;quot;前端不改写是确定的，但两套前端技术各有什么优劣&amp;quot;。结论前置：&lt;strong&gt;qmtv 前端零改动（已裁决）&lt;/strong&gt;；本文是选型对比存档 + 为 Go 移植钉住前端兼容面 + 沉淀&amp;quot;若未来前端演进，哪些 pms 经验值得吸收&amp;quot;。事实基线：2026-10-17 双仓库实测。&lt;/p&gt;</description></item><item><title>04 · 待开发功能与规划</title><link>https://qmtv-docs.appland.com.cn/qmtv/product/04-%E5%BE%85%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD%E4%B8%8E%E8%A7%84%E5%88%92/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/product/04-%E5%BE%85%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD%E4%B8%8E%E8%A7%84%E5%88%92/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;本文供排期参考。分四类：A 真实模型接入（最高价值）、B 产品功能补强、C 生产化改造、D 技术债与优化。每项标注预估规模（S≤1天 / M≤3天 / L&amp;gt;3天）与前置依赖。&lt;/p&gt;</description></item><item><title>FSD M1 · 认证与用户</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m01-%E8%AE%A4%E8%AF%81%E4%B8%8E%E7%94%A8%E6%88%B7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m01-%E8%AE%A4%E8%AF%81%E4%B8%8E%E7%94%A8%E6%88%B7/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M1&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/auth/&lt;/code&gt;（service.go/model.go/repo.go）+ &lt;code&gt;cmd/server/auth_handlers.go&lt;/code&gt;（handlers）+ &lt;code&gt;cmd/server/routes.go:34-51&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:73-230&lt;/code&gt; 仅差异对拍参照。&lt;/p&gt;</description></item><item><title>FSD M10 · 导演与融合</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m10-%E5%AF%BC%E6%BC%94%E4%B8%8E%E8%9E%8D%E5%90%88/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m10-%E5%AF%BC%E6%BC%94%E4%B8%8E%E8%9E%8D%E5%90%88/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M10&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/director/&lt;/code&gt;（model/split/repo/service/service_assets/export 单包多文件）+ &lt;code&gt;cmd/server/director_handlers.go&lt;/code&gt;（28 handler）+ &lt;strong&gt;generation 侧双表通路三锚点&lt;/strong&gt;（model.go:56-69 ShotView.Tbl / service_video.go:191-229 DirectorShotVideo / repo.go:261-283 LinkShotVideo）+ &lt;code&gt;cmd/server/routes.go:203-238&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/director.js&lt;/code&gt;（11）/&lt;code&gt;fusion.js&lt;/code&gt;（17）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;双表通路&lt;/strong&gt;——本域写 &lt;code&gt;director_shots&lt;/code&gt;（M2 拆解台是 &lt;code&gt;shots&lt;/code&gt; 表勿混），生成链经 &lt;code&gt;ShotView.Tbl&lt;/code&gt; 显式表名打回；扣费面六处（三处硬编码照抄）；ZIP 导入导出；wire 全蛇形+派生视图尾插键；对账口径：routes.go:209/:223 注释「11+17」系&lt;strong&gt;冻结源文件口径&lt;/strong&gt;（#1/#2 冻结在 fusion.js:221/:227 却排导演注释块），物理分组=导演 13+融合 15；PRD §4 M10 已登记差异 ①~⑮（prd-qmtv-v1.md:208）+v1.12 变更行三件（二十续 A1 form-tag/A2 空数组/A3 episodes 404 文案）引用不重立。ID 前缀 dpr_/dep_/dir_（tasks 侧 task_id=&amp;lsquo;dir_&amp;rsquo;+project_id 约定=PRD ⑩）。&lt;/p&gt;</description></item><item><title>FSD M11 · 评估与工具</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m11-%E8%AF%84%E4%BC%B0%E4%B8%8E%E5%B7%A5%E5%85%B7/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m11-%E8%AF%84%E4%BC%B0%E4%B8%8E%E5%B7%A5%E5%85%B7/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M11&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/evaluation/&lt;/code&gt;（model/service〔workbench+watchVideo〕/service_eval〔评估流水线〕/service_review〔审片双入口〕/service_viral/repo）+ &lt;code&gt;cmd/server/workbench_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/evaluation_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/routes.go:239-267&lt;/code&gt;（挂载，审片 4 条 :264-267 物理居中）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/workbench.js&lt;/code&gt;/&lt;code&gt;evaluation.js&lt;/code&gt;/&lt;code&gt;index.js:490-513&lt;/code&gt;（viral）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;评估冻结-结算&lt;/strong&gt;是全站唯一 TypeReserve 台账面（总则 §1 词条的展开落点）；审片双入口 404 文案分叉（classic &amp;rsquo;task not found&amp;rsquo; vs director &amp;rsquo;not found&amp;rsquo;）；审片面&lt;strong&gt;零 SSE 零通知&lt;/strong&gt;；watchVideo 状态丢失不 emit；wire 全蛇形；PRD §4 M11 已登记差异 ①~⑭（prd-qmtv-v1.md:216）引用不重立。上传档位 up80（工作台）/up10（评估）。&lt;/p&gt;</description></item><item><title>FSD M12 · 管理后台</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m12-%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m12-%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M12&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/admin/&lt;/code&gt;（model 276/repo 476/service 332/service_billing 416/service_prompts 250 单包多文件+三测试件）+ &lt;code&gt;cmd/server/admin_handlers.go&lt;/code&gt;（562 行 39 handler）+ &lt;code&gt;cmd/server/routes.go:268-318&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js&lt;/code&gt;（admin 段 &lt;strong&gt;app.* 直挂非 router&lt;/strong&gt;，19−withdrawals 2=17）+&lt;code&gt;llmroutes.js&lt;/code&gt;（18）+&lt;code&gt;routes2.js&lt;/code&gt;（admin 4）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;39 条全部 amw+adminMw 双挂&lt;/strong&gt;（403 &lt;code&gt;forbidden&lt;/code&gt;，gateway/auth.go:133-141=冻结 adminRequired 逐字）；&lt;strong&gt;前端消费面≠端点族&lt;/strong&gt;——AdminView 14 tab（AdminView.vue:667-682）中 submissions/withdrawals/scripts 三 tab 消费 &lt;strong&gt;M9/M7 域&lt;/strong&gt;端点，本册 39 条按后端功能族 A&lt;del&gt;H 组聚合；&lt;strong&gt;404 八态八哨兵刻意不同源&lt;/strong&gt;（model.go:16-36：用户调整英文 &amp;ldquo;not found&amp;rdquo;/密码重置中文「用户不存在」/org approve 英文/指令 DELETE 英文/提示词删「版本不存在」/接入「接入不存在」/release「任务不存在或不是失败态」/重拆「任务不存在」）；bind 失败统一 400「请求体格式错误」（与 m08 裸传 return err 两域不同制）；&lt;code&gt;api_key&lt;/code&gt; &lt;code&gt;json:&amp;quot;-&amp;quot;&lt;/code&gt; masked-only（二十一期②收敛，PRD ④）；&lt;strong&gt;GetActivePrompt（整行+split 三级）↔activePromptContent（content-only 单级）两份同语义并存&lt;/strong&gt;（二十二期 C1 裁决 a，task_assembly.go:188-189 注释「两处改动须同步对拍」）。PRD §4 M12 已登记差异 ①&lt;/del&gt;⑨（prd-qmtv-v1.md:222）引用不重立。&lt;/p&gt;</description></item><item><title>FSD M13 · 火花计划</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m13-%E7%81%AB%E8%8A%B1%E8%AE%A1%E5%88%92/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m13-%E7%81%AB%E8%8A%B1%E8%AE%A1%E5%88%92/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M13&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/spark/&lt;/code&gt;（model/service/repo_gorp 三件）+ &lt;code&gt;cmd/server/spark_handlers.go&lt;/code&gt;（34 行）+ &lt;code&gt;cmd/server/routes.go:259-262&lt;/code&gt;（挂载——物理嵌在 M11 段 :258 与 :263 之间）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:739-766&lt;/code&gt; 仅差异对拍参照。&#10;域内要点：二十六期补登域（P0 统计残留第八例——冻结 index.js:739-766 两条端点从未入任何模块行）；三阶梯 tier 表单数据源（per 系）；&lt;strong&gt;PRD §4 M13「逐字对齐无差异」&lt;/strong&gt;——三十期新立 DIF-30（见 m09 册/99-附录 B）。E2E-SPK-01 已实现（spark.spec.ts，清单 :15）。&lt;/p&gt;</description></item><item><title>FSD M2 · 任务与拆解</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m02-%E4%BB%BB%E5%8A%A1%E4%B8%8E%E6%8B%86%E8%A7%A3/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m02-%E4%BB%BB%E5%8A%A1%E4%B8%8E%E6%8B%86%E8%A7%A3/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M2&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/task/&lt;/code&gt;（model/repo/service/service_gen）+ &lt;code&gt;cmd/server/task_handlers.go&lt;/code&gt;（38 handlers 全集）+ &lt;code&gt;cmd/server/task_assembly.go&lt;/code&gt;（LLM/模板装配）+ &lt;code&gt;cmd/server/routes.go:324-361&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:228-366&lt;/code&gt;/&lt;code&gt;routes2.js&lt;/code&gt;/&lt;code&gt;routes3.js&lt;/code&gt; 仅差异对拍参照。&lt;/p&gt;</description></item><item><title>FSD M3 · 生成与素材</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m03-%E7%94%9F%E6%88%90%E4%B8%8E%E7%B4%A0%E6%9D%90/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m03-%E7%94%9F%E6%88%90%E4%B8%8E%E7%B4%A0%E6%9D%90/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M3&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/generation/&lt;/code&gt;（model/service/service_video/service_media/provider/repo）+ &lt;code&gt;cmd/server/generation_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/generation_assembly.go&lt;/code&gt; + &lt;code&gt;cmd/server/routes.go:53-77&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:369-451&lt;/code&gt;/&lt;code&gt;providers.js&lt;/code&gt;/&lt;code&gt;assets.js&lt;/code&gt;/&lt;code&gt;routes2.js:40-67,408-429&lt;/code&gt;/&lt;code&gt;routes3.js:33-55,379-428&lt;/code&gt; 仅差异对拍参照。&lt;/p&gt;</description></item><item><title>FSD M4 · 导出交付</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m04-%E5%AF%BC%E5%87%BA%E4%BA%A4%E4%BB%98/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m04-%E5%AF%BC%E5%87%BA%E4%BA%A4%E4%BB%98/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M4&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/export/&lt;/code&gt;（model/repo/service）+ &lt;code&gt;cmd/server/export_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/routes.go:82-92&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:434-471&lt;/code&gt;/&lt;code&gt;routes2.js:318-439&lt;/code&gt;/&lt;code&gt;routes3.js:347-376&lt;/code&gt; 仅差异对拍参照。前端消费：ExportView.vue（编排）+ VideoView.vue（批量/下载面）。&lt;/p&gt;</description></item><item><title>FSD M5 · 通知公告</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m05-%E9%80%9A%E7%9F%A5%E5%85%AC%E5%91%8A/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m05-%E9%80%9A%E7%9F%A5%E5%85%AC%E5%91%8A/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M5&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/notification/&lt;/code&gt;（service.go 读侧 89 行+hub.go SSE 基座）+ &lt;code&gt;cmd/server/notify_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/routes.go:96-102&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:474-485&lt;/code&gt; 仅差异对拍参照。&#10;域内要点：&lt;strong&gt;通知零 SSE&lt;/strong&gt;（hub.go 属本包但通知读面不走事件——写入方五源自持 INSERT）；** announcements 公开面无 amw**；&lt;code&gt;read&lt;/code&gt; 是 MySQL 保留字全 SQL 反引号（PRD ①）；对账勿混：routes.go:288-290 &lt;code&gt;/admin/announcements*&lt;/code&gt; 3 条属 &lt;strong&gt;M12&lt;/strong&gt; 管理后台组。&lt;/p&gt;</description></item><item><title>FSD M6 · 组织协同</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m06-%E7%BB%84%E7%BB%87%E5%8D%8F%E5%90%8C/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m06-%E7%BB%84%E7%BB%87%E5%8D%8F%E5%90%8C/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M6&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/org/&lt;/code&gt;（model 308/service 775/repo 209/repo_read 389/repo_groups 55/perms 53/code 24 单包多文件）+ &lt;code&gt;cmd/server/org_handlers.go&lt;/code&gt;（460 行 29 handler）+ &lt;code&gt;cmd/server/routes.go:103-136&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:513-597&lt;/code&gt;（组织段 9）+&lt;code&gt;enterprise.js&lt;/code&gt;（20）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;四零域&lt;/strong&gt;（零上传/零扣费/零 SSE/零通知，无 BodyLimit——routes.go:105-106）；&lt;strong&gt;无组织分流四态谱&lt;/strong&gt;：me·dashboard &lt;code&gt;ok(null)&lt;/code&gt;｜folders·groups·perm-groups·material-perms·shared-projects &lt;code&gt;ok([])&lt;/code&gt;｜folder create·assign·folder delete 400「您尚未加入企业」｜allocation-mode 404「未加入组织」——逐端点归属各异勿统一；owner-严格谱系（invites/remove/role/groups/perm-groups/assign 六面 ownerOnly vs material-perms 唯一 adminOrOwner 面）；「管理员」文案 vs owner 严格判定（PRD ⑩）；&lt;code&gt;projectRank&lt;/code&gt;/&lt;code&gt;memberRank&lt;/code&gt; &lt;strong&gt;驼峰 wire 双键&lt;/strong&gt;（同 M2 shotCount 族勿修正）；permGroups/materialPerms 响应经 map 重出（&lt;code&gt;perms&lt;/code&gt; &lt;code&gt;json:&amp;quot;-&amp;quot;&lt;/code&gt; 串解析为数组）。PRD §4 M6 已登记差异 ①~⑪+十九续勘正批注（prd-qmtv-v1.md:172-178）引用不重立。&lt;/p&gt;</description></item><item><title>FSD M7 · 分销提现</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m07-%E5%88%86%E9%94%80%E6%8F%90%E7%8E%B0/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m07-%E5%88%86%E9%94%80%E6%8F%90%E7%8E%B0/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M7&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/distribution/&lt;/code&gt;（model 181/service 233/repo 214）+ &lt;code&gt;cmd/server/distribution_handlers.go&lt;/code&gt;（184 行 11 handler）+ &lt;code&gt;cmd/server/routes.go:137-151&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/index.js:598-638&lt;/code&gt;（用户面 7）+&lt;code&gt;:708-737&lt;/code&gt;（状态机 4）&lt;strong&gt;两段不连续&lt;/strong&gt;（中间隔 admin 段 :640-:703）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;零域铁律&lt;/strong&gt;——withdrawals/exchanges 全域不触 users.credits/credit_records/通知/SSE（「返佣写入方在 M8 approve 链」model.go:4-8，唯一写入方 M8 F8.03）；&lt;strong&gt;available 分母无 status 过滤&lt;/strong&gt;（cancelled/rejected 永不释放额度——:715 note「收益已解锁」冻结谎言照抄）；settings 回退&lt;strong&gt;双 shape 不可合并&lt;/strong&gt;（overview 三键 vs 提现面一键）；affiliate_threshold 980 硬编码与 M8 &lt;strong&gt;不同源勿统一&lt;/strong&gt;；W_FLOW 严格邻接状态机（终态无键恒 400）；admin PUT 不限属主 vs cancel/confirm 属主强制。bind 形态：POST/PUT 三处&lt;strong&gt;裸传 return err&lt;/strong&gt;（echo 默认 400 无统一信封——与 m12「请求体格式错误」两域不同制）。PRD §4 M7 已登记差异 ①~⑩（prd-qmtv-v1.md:180-184）引用不重立。&lt;/p&gt;</description></item><item><title>FSD M8 · 充值</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m08-%E5%85%85%E5%80%BC/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m08-%E5%85%85%E5%80%BC/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M8&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/recharge/&lt;/code&gt;（model 118/repo 209/service 381）+ &lt;code&gt;cmd/server/recharge_handlers.go&lt;/code&gt;（161 行 8 handler）+ &lt;code&gt;cmd/server/routes.go:152-166&lt;/code&gt;（挂载，&lt;code&gt;up8 := BodyLimit(&amp;quot;8mb&amp;quot;)&lt;/code&gt; :158 proof/pay-qrcode 共用）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/recharge.js&lt;/code&gt;（8 条 :28-:120，admin 4 条 router 内写死 /admin/ 前缀）仅差异对拍参照。&#10;域内要点：&lt;strong&gt;M8 是 M7 的返佣写入方&lt;/strong&gt;（commission_records 唯一写入方在 approve 链——M7 零域的另一面）；&lt;strong&gt;404 文案三态分叉&lt;/strong&gt;（「订单不存在或已处理」vs proof 面「订单不存在」vs 400「已处理不可重复提交凭证」——model.go:21-32 三哨兵）；&lt;strong&gt;approve 零事务补偿序七步&lt;/strong&gt;（MarkPaid→到账→两级返佣→资格联动→通知→SSE——禁事务铁律顺合冻结补偿式一致性）；reject &lt;strong&gt;双截断不同源&lt;/strong&gt;（落库 200/通知 100）；orderNo=&amp;lsquo;RCH&amp;rsquo;+毫秒+3 位随机&lt;strong&gt;非 uid 勿用 ids 包&lt;/strong&gt;；&lt;code&gt;recharge_orders.credits&lt;/code&gt; 刻意不 DECIMAL（0004 七列外——到账恒整数）；SSE recharge 仅发本人（M12 无 SSE 的对照面）。bind 形态：&lt;strong&gt;裸传 return err&lt;/strong&gt;（与 m12「请求体格式错误」两域不同制）。PRD §4 M8 已登记差异 ①~⑧（prd-qmtv-v1.md:188）引用不重立。&lt;/p&gt;</description></item><item><title>FSD M9 · 剧本库与投稿</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m09-%E5%89%A7%E6%9C%AC%E5%BA%93%E4%B8%8E%E6%8A%95%E7%A8%BF/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m09-%E5%89%A7%E6%9C%AC%E5%BA%93%E4%B8%8E%E6%8A%95%E7%A8%BF/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;附录 →&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD §4 M9&lt;/a&gt;&#10;实现落点：&lt;code&gt;backend/internal/domain/scriptlib/&lt;/code&gt;（model/repo/service〔scriptlib.js 9+ensureSeed〕/service_studio〔studio.js 16〕/seeds）+ &lt;code&gt;cmd/server/scriptlib_handlers.go&lt;/code&gt; + &lt;code&gt;cmd/server/routes.go:167-202&lt;/code&gt;（挂载）。事实基准=Go 代码；冻结版 &lt;code&gt;qmtv/server/scriptlib.js&lt;/code&gt;/&lt;code&gt;studio.js&lt;/code&gt; 仅差异对拍参照。&#10;域内要点：admin 9 端点叠 &lt;code&gt;AdminMiddleware&lt;/code&gt;（403 forbidden）；&lt;strong&gt;wire 全蛇形&lt;/strong&gt;（model.go json tag 亲证零驼峰）；两套正则刻意勿合并（seedEpisodeRe 带 &lt;code&gt;\s*&lt;/code&gt; service.go:78 vs catalogRe 无 &lt;code&gt;:196&lt;/code&gt;）；两套Genres 清单（scriptlib.js 11 项 service.go:25 vs studio.js studioGenres 11 项 service_studio.go:21——冻结死导出未消费，Go 不移植）；ID 前缀 sl_/su_/sub_/wp_/up_/na_（ids.go:29-50）。&lt;/p&gt;</description></item><item><title>FSD 附录 · PRD 对照 / 代码域索引 / 差异台账</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/"&gt;← 总则&lt;/a&gt; ｜ 上游：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;PRD&lt;/a&gt;（§3 模块清单 / §4 差异登记）&lt;/p&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h2 id="附录-a1prd-模块--fsd-分册对照权威"&gt;附录 A1：PRD 模块 → FSD 分册对照（权威）&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;PRD 模块&lt;/th&gt;&#10; &lt;th scope="col"&gt;分册&lt;/th&gt;&#10; &lt;th scope="col"&gt;F-ID 段&lt;/th&gt;&#10; &lt;th scope="col"&gt;端点数&lt;/th&gt;&#10; &lt;th scope="col"&gt;覆盖期&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;基础（SSE/health/release-mode）&lt;/td&gt;&#10; &lt;td&gt;总则 §2.2/§2.5 覆盖，无独立分册&lt;/td&gt;&#10; &lt;td&gt;—&lt;/td&gt;&#10; &lt;td&gt;3&lt;/td&gt;&#10; &lt;td&gt;骨架期&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M1 认证与用户&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m01-%E8%AE%A4%E8%AF%81%E4%B8%8E%E7%94%A8%E6%88%B7/"&gt;m01-认证与用户&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F1.01~&lt;/td&gt;&#10; &lt;td&gt;9&lt;/td&gt;&#10; &lt;td&gt;二十八期&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M2 任务与拆解&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m02-%E4%BB%BB%E5%8A%A1%E4%B8%8E%E6%8B%86%E8%A7%A3/"&gt;m02-任务与拆解&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F2.01~&lt;/td&gt;&#10; &lt;td&gt;38&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;二十九期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M3 生成与素材&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m03-%E7%94%9F%E6%88%90%E4%B8%8E%E7%B4%A0%E6%9D%90/"&gt;m03-生成与素材&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F3.01~&lt;/td&gt;&#10; &lt;td&gt;19&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;二十九期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M4 导出交付&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m04-%E5%AF%BC%E5%87%BA%E4%BA%A4%E4%BB%98/"&gt;m04-导出交付&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F4.01~&lt;/td&gt;&#10; &lt;td&gt;10&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;二十九期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M5 通知公告&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m05-%E9%80%9A%E7%9F%A5%E5%85%AC%E5%91%8A/"&gt;m05-通知公告&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F5.01~&lt;/td&gt;&#10; &lt;td&gt;4&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M6 组织协同&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m06-%E7%BB%84%E7%BB%87%E5%8D%8F%E5%90%8C/"&gt;m06-组织协同&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F6.01~&lt;/td&gt;&#10; &lt;td&gt;29&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十一期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M7 分销提现&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m07-%E5%88%86%E9%94%80%E6%8F%90%E7%8E%B0/"&gt;m07-分销提现&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F7.01~&lt;/td&gt;&#10; &lt;td&gt;11&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十一期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M8 充值&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m08-%E5%85%85%E5%80%BC/"&gt;m08-充值&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F8.01~&lt;/td&gt;&#10; &lt;td&gt;8&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十一期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M9 剧本库与投稿&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m09-%E5%89%A7%E6%9C%AC%E5%BA%93%E4%B8%8E%E6%8A%95%E7%A8%BF/"&gt;m09-剧本库与投稿&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F9.01~&lt;/td&gt;&#10; &lt;td&gt;25&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M10 导演与融合&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m10-%E5%AF%BC%E6%BC%94%E4%B8%8E%E8%9E%8D%E5%90%88/"&gt;m10-导演与融合&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F10.01~&lt;/td&gt;&#10; &lt;td&gt;28&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M11 评估与工具&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m11-%E8%AF%84%E4%BC%B0%E4%B8%8E%E5%B7%A5%E5%85%B7/"&gt;m11-评估与工具&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F11.01~&lt;/td&gt;&#10; &lt;td&gt;14&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M12 管理后台&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m12-%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0/"&gt;m12-管理后台&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F12.01~&lt;/td&gt;&#10; &lt;td&gt;39&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十一期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;M13 火花计划&lt;/td&gt;&#10; &lt;td&gt;&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/m13-%E7%81%AB%E8%8A%B1%E8%AE%A1%E5%88%92/"&gt;m13-火花计划&lt;/a&gt;&lt;/td&gt;&#10; &lt;td&gt;F13.01~&lt;/td&gt;&#10; &lt;td&gt;2&lt;/td&gt;&#10; &lt;td&gt;&lt;strong&gt;三十期&lt;/strong&gt;&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="附录-a2代码域--分册反向索引"&gt;附录 A2：代码域 → 分册反向索引&#10;&lt;/h2&gt;&#10;&lt;div class="td-table-scroll td-table-scroll--static"&gt;&#10;&lt;table&gt;&#10; &lt;thead&gt;&#10; &lt;tr&gt;&#10; &lt;th scope="col"&gt;backend 域包&lt;/th&gt;&#10; &lt;th scope="col"&gt;分册&lt;/th&gt;&#10; &lt;/tr&gt;&#10; &lt;/thead&gt;&#10; &lt;tbody&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/auth&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m01&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/task&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m02&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/generation&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m03&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/export&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m04&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/notification&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m05&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/org&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m06&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/distribution&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m07&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/recharge&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m08&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/scriptlib&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m09&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/director&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m10&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/evaluation&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m11&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/admin&lt;/code&gt; + &lt;code&gt;internal/domain/llm&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m12&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/spark&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;m13&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/domain/credits&lt;/code&gt;（计费横切）&lt;/td&gt;&#10; &lt;td&gt;总则 §2.3 + 各分册扣费节&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/infra/{hub,ids,storage}&lt;/code&gt; + &lt;code&gt;internal/gateway&lt;/code&gt;&lt;/td&gt;&#10; &lt;td&gt;总则 §2.2/§2.5/§2.7&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;cmd/server/routes.go&lt;/code&gt;（基础 3 条：/api/events、/api/health、release-mode）&lt;/td&gt;&#10; &lt;td&gt;总则 §2.2/§2.5&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;tr&gt;&#10; &lt;td&gt;&lt;code&gt;internal/recovery&lt;/code&gt;（启动恢复四扫描）&lt;/td&gt;&#10; &lt;td&gt;跨域，见总则 §2.3 退款唯一口 + m02/m03&lt;/td&gt;&#10; &lt;/tr&gt;&#10; &lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;/div&gt;&#10;&#10;&lt;h2 id="附录-b实现差异台账dif"&gt;附录 B：实现差异台账（DIF）&#10;&lt;/h2&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;格式 &lt;code&gt;DIF-&amp;lt;期&amp;gt;-&amp;lt;序号&amp;gt;&lt;/code&gt;；FSD 撰写期新发现逐条登记。&lt;strong&gt;PRD §4 已登记的移植差异不重复立目&lt;/strong&gt;，功能节内直接引用（如「差异⑤族」）。处置列：&lt;code&gt;登记&lt;/code&gt;（有意保真）/&lt;code&gt;待裁决&lt;/code&gt;/&lt;code&gt;已修&lt;/code&gt;。&lt;/p&gt;</description></item><item><title>QMTV 功能规格说明书（FSD）v1.0 · 总则</title><link>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/00-%E6%80%BB%E5%88%99/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;上游文档：&lt;a href="https://qmtv-docs.appland.com.cn/qmtv/product/prd-qmtv-v1/"&gt;prd-qmtv-v1.md&lt;/a&gt;（需求与契约）。本文档以 &lt;strong&gt;Go 实现代码&lt;/strong&gt;为事实基准（&lt;code&gt;backend/&lt;/code&gt;，239/239 收官），按模块还原系统真实运转规则；与 PRD 的差异以 &lt;code&gt;&amp;gt; ⚠️ 差异 DIF-&amp;lt;批次&amp;gt;-&amp;lt;序号&amp;gt;&lt;/code&gt; 注记并登记 &lt;a href="https://qmtv-docs.appland.com.cn/qmtv/fsd-qmtv/99-%E9%99%84%E5%BD%95/"&gt;99-附录 B&lt;/a&gt;。冻结版 Express（&lt;code&gt;qmtv/server/&lt;/code&gt;）仅作差异对拍参照，不再单独展开。&#10;功能 ID 规则：&lt;code&gt;F&amp;lt;m&amp;gt;.&amp;lt;两位序号&amp;gt;&lt;/code&gt;（m = PRD 模块号 M1~M13）。ID 全局唯一、只增不改号；分册文件 &lt;code&gt;m&amp;lt;m&amp;gt;-&amp;lt;中文名&amp;gt;.md&lt;/code&gt;。&lt;/p&gt;</description></item></channel></rss>