diff --git a/.workbuddy/memory/2026-10-11.md b/.workbuddy/memory/2026-10-11.md index f245ed7..e471e11 100644 --- a/.workbuddy/memory/2026-10-11.md +++ b/.workbuddy/memory/2026-10-11.md @@ -142,6 +142,17 @@ - ①起点一律指向**方案文件夹**(`docs/pm/mcn-shortvideo-agent/` 的 `专题/` 与 `prd/`、`ui/`),不再指向执行区散落的目录 ⇒ 「两态规则」第一次真正起作用。 - ②明确写「**`docs/` 一个字都不许改**」—— 执行棒的域锁只允许写 `执行会话/` 内 ⇒ 产物落目标目录,**收口时由主会话同步进方案文件夹**(旧版进 `归档-过期版/`)。这条是域锁与新规则的接口,第一次跑,要看顺不顺。 +## 22:05 · 用户问「目标完成了吗」⇒ 已完成,且两态规则第一次真正跑通 + +- ✅ **判定:已完成**。`lifecycle = 已完成`(21:44:00),三条判据全 `过`。**这次跑了三棒执行 + 三棒检查**:执行棒 `f615337b`(20:48:12–20:58:52,收窄+设计+出图)→ 检查棒第 52 棒(21:11–21:17)→ **执行棒 `1d1fdce6`(21:24–21:33,「把 F15 与 F9 扩写落进 prd2a 并补 2b 两句」)** → 检查棒第 53 棒(21:41–21:45 判完成)。⚠️ 第二棒是**检查棒自己派的**(因为第一棒只出了方案、没落产品文档)⇒ 机制在没人干预下自己补了这一步。 +- ✅ **方案文件夹已同步(两态规则首次完整跑通)**:`prd/2a` 68 924 B(原 61 683)/`prd/2b` 52 992 B(原 52 643);两份旧版**自动进了 `归档-过期版/`**(`2a-产品功能__8a8412.md`/`2b-界面布局__8a8412.md`);`索引-当前权威版.md` 同步更新(4 806 B)。 +- 🔴🔴 **发现我派活单里那条「`docs/` 一个字都不许改」是多余的**:实际是**执行棒直接改了 `docs/`**(它持了 `docs` 域的锁 ⇒ 域锁按**域**互斥、**不是**"只许写自己的域",会话可以持多个域的锁)。⇒ 两种路径都可行(执行棒直接改=少一次搬运/主会话收口改),**关键是改完必须做「归档 + 索引同步」这两步**。⇒ 这条我记进 MEMORY 了,下次派活单不再写那句无效限制。 +- ✅ **我独立复核过(不采信判据自我报告)**:闸门 **2061|0|27**(我自己跑了一遍);冻结项一个没动(页面 7/导航一层七项/板块 39/流转 20 条/对象 11 个);`2a` 里 F15 接在 F14 后**不插号**;两张图里过滤段**写死了字段名与三档阈值**(`宽松55/30 · 标准70/40 · 严格85/60`;匹配度 `M` 直接喂给七维的「账号匹配度 25%」那一维,⛔ 不两处各算一套)。 +- ✅ **信源收窄的实质**(我读了产物):`信源收窄-短视频平台与内容社区.md`(13 225 B)—— 16 路逐条复核、**留 8 弃 8**;判据是一条线(「条目本身是不是"大家在搜什么/社区在聊什么/平台在推什么/对标号在发什么"」⇒ 留;「是新闻/产品名/百科词条、要先做一轮再加工」⇒ 弃);弃用**不是一删了事**,每条写实测返回过什么、为什么不够贴题、将来什么条件下拿回来。 +- ✅ **两处它做得比我要求的好**:①**复核后改了我的口径** —— 我判 `Google Trends` 与 `Product Hunt` 都偏资讯,它复核后**留前者、弃后者**(两者不是一个形态:前者是搜索需求信号、后者是产品发布);②**如实交回一处缺口**(快手、视频号**没有源**)并单列 §三,⛔ 没当成"已经收窄完了"。 +- 📌 产物清单(目标目录 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`):`信源收窄-短视频平台与内容社区.md`(13 225 B)/`赛道过滤层-设计.md`(23 241 B)/`产品框图-热点与选题-赛道过滤版.html`(34 463 B,108 文本节点)/`功能流程图-热点到选题-赛道过滤版.html`(27 382 B,83 节点)/`2a-落盘记录.md`(8 239 B)/`交付说明.md`(7 927 B)。 + + @@ -207,3 +218,61 @@ - ✅ 回读实测:`acceptance_state` 三条都变成 `过|…`;`lifecycle` = `已完成`;常驻随之优雅退出(pid 42172)。 - ⚠️ **派棒排期并非只有本目标一条**(通报又写错):实跑 `automation_update list` 见到 `df3dead8` 接续-技能包脚本去本机硬编码(19:38)、`02787e55` [执行]-[B站AI设计教程采集]-承接队列(18:57)两条 ACTIVE once 仍在册。本轮不派棒所以无冲突,**但「没有别的待执行排期」这句通报再次不可信**。 - 📌 遗留待拍板未动:A 要不要把 12 平台矩阵同步进 `2a`/`2b`;上一版 6 条改结构项(A–F)仍挂 `NEED-USER.md` 第 6 节。 + +## 20:42 · 第 51 棒检查会话:核对目标「收窄热点源并加赛道过滤」(8a8412) + +- **判定=未完成**,但**没有派新棒**:执行排期 `50a8f8f3`「[执行]-[产品规划]-收窄热点源并加赛道过滤层」已在册 ACTIVE、`scheduledAt=20:48`,与本棒核对时刻(20:41)仅差 7 分钟 ⇒ 派棒即是重复。 +- 🔴 **通报第三次写错**:本轮触发通报称「本项目没有别的待执行排期」,实跑 `automation_update list` 见 **3 条 ACTIVE once**(`50a8f8f3`/`d52d8fd9` 抖音采集/`5b2ab4fa` 第50棒)。规矩照旧:⛔ 别信通报,派棒前自己 list。 +- 三路核对实况:`tasks.json` 全 `done` 且**无一条属当前目标**(最后一条 `346cf532` 属上一目标 `39646d`);`taskgraph.json` **不存在**;工作区根**无 `state.py`** ⇒ 实际只跑两路,靠状态文档补齐。 +- 动作两项:① 补写 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/目标执行状态.md`(三条判据 + 结论 + 下一棒动作;换目标时它只有空模板);② `goalctl.py declare --kpi` 把 `acceptance_state` 取值从 **`未过`** 规范成 **`🔴 不过`**(`未过` 不在取值域,机器分不出「没判」与「判了没过」),回读确认已落盘(备份 `.workbuddy/collab/bak-goalctl-20261011/`)。 +- `lifecycle` 保持「进行中」,⛔ 未标完成。下一棒:等 `50a8f8f3` 跑完,照状态文档核产物是否落进该目标目录,落了才改判。 + +## 20:5x · 目标 `8a8412` 执行会话收工 —— 收窄热点源 + 加赛道过滤层(四样交付) + +- ✅ **四样 + 交付说明全落** `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`:`信源收窄-短视频平台与内容社区.md`(13 225 B,16 路逐条复核 ⇒ **留 8 弃 8**,弃的每条写实测返回过什么/为什么弃/拿回来条件)|`赛道过滤层-设计.md`(23 241 B,七问全答 + **新增功能条目 F15** 可整段粘 + **扩写 F9** 加赛道表字段组 + 三处小同步)|`产品框图-热点与选题-赛道过滤版.html`(34 463 B,1400×930)|`功能流程图-热点到选题-赛道过滤版.html`(27 382 B,1520×880)|`交付说明.md`。说人话 47/50 + 46/50。 +- 🔴 **本目标的核心判断(别照抄用户名单)**:判据是「**这条源产出的条目,本身能不能当一条短视频选题的开头用**」。⇒ 弃海外 5 条(HN/Product Hunt/Wikipedia/Google News/BBC)+ 国内 3 条(知乎/头条/百度),理由=**产的是「新闻/名录/词条」,不是「选题」**,拿到手还要再加工。留 8 路并打四类信号标签(大众热度/垂类讨论/对标动作/平台话题)。两条单列理由:`Product Hunt` 换成 `YouTube 频道 RSS`(前者给产品名录、后者直接就是「他发了什么」);`百度热搜` 与微博同质(都是事件型)留微博。 +- 🔴 **新加的层「按账号赛道过滤」四面定死**:插点=**分类之后、价值分之前**,且**只作用于外部热点那一路**(对标/评论/自有数据/人工四路天然按账号来);匹配读 `Account` 的 `定位`/`受众`/`偏好与红线` + 新增**赛道表**字段组(`包含词[]`/`排除词[]`/`领域白名单[]`/`过滤档`),⛔ 不读风格、⛔ 不读平台账号;规则 A 硬拦 + 规则 B `M = clamp(0,100, round(55 × (W' ÷ 2.0) + 30 × D + 15 × A))`(`W' = min(Σ命中词权重, 2.0)`,词权重 主词 1.0/长尾 0.6/受众 0.4);三档 宽松 55/30 · 标准(默认)70/40 · 严格 85/60。挡下来的进**「未匹配档」=P2 的一个筛选档位**(⛔ 不是新池子/新页面/新板块),留 7 天可捞回。 +- ✅ **红线守住**:`docs/` 一个字没动;页面 7/导航名与顺序/板块 39/流转 20 条/对象 11 个**全未变**;新增条目走**末位编号 F15**(⛔ 不插号),`Topic.赛道匹配[]` 是数组字段(⛔ 不新增对象)。 +- ✅ **自检三件**:`diagram-design/scripts/self_check.py` 两张图 ⇒ 均 `OK`(无障碍 SVG 契约 + 单文件安全);浏览器内几何自检(全部 `` 取 `getBoundingClientRect`,判溢出画布 + 两两重叠 >3px)两张图各 **83 节点 ⇒ 溢出 0/重叠 0**;**变异对照**注入一个必然重叠的 text ⇒ 报 **1 条重叠**(`① 采集 · 收窄后 8 路 <> MUTANT-OVERLAP`),移除后回 83 节点 ⇒ 证明判据非恒绿。 +- ⚠️ **踩坑一条(值得记住)**:`Read` 工具对 PNG 有**大文件闸**(本轮 488 KB 的整页截图被拦,提示「全文会写进会话历史、之后每轮全量重发」)⇒ 看图先压:**系统 `D:/miniconda3/python.exe` 带 Pillow 12.3.0**(managed 的 3.13.12 没装),`Image.resize` + `quality=72` 存 jpg(488 KB → 152 KB)即可读。另:PowerShell `Add-Type` 被安全策略拦(不能用来缩放图)。 +- ✅ **收工**:`--report f615337b… --state done --artifact "执行会话/目标-收窄热点源并加赛道过滤-8a8412/"` ⇒ `OK 已上报 done`;`--release-exec` 按 OWNER 里 `ME` 原文(`[执行]-[产品规划]-收窄热点源并加赛道过滤`)释放 ⇒ `✓ 已释放域锁`,锁目录已清空(只剩 `.migrations`/`.orphan-release.log`);闸门重跑 **通过 2061|失败 0|提示 27**(与基线一致);浏览器**复用**既有 file:// 标签页(收工 `list_tabs()` 仍是 5 个,⛔ 未开新标签)。 +- ⚠️ **遗留交回(⛔ 本棒未拍板)**:① 热榜这一路落在 P2 哪一块(并进 F1 vs 新增块 ⇒ 板块 39→40,破数字冻结),倾向并进 F1;② 赛道表编辑入口要不要在 P6 单列一块(P6 5→6 块),倾向挂在画像五维块内;③ 快手/视频号无源的两条解法(人工录入档 / 换第三方聚合)二选一。 +- 📌 **收口未完(重要)**:F15 与 F9 的实改、两张图同步进 `docs/pm/mcn-shortvideo-agent/` 要**主会话按两态规则**做 —— 域锁只许写 `执行会话/`,这一步本棒做不了。本棒同时写了自动化记忆 `automations/50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4/memory.md`。 + +## 21:15 · 第 52 棒检查会话 —— 目标 `8a8412` 判「未完成」,派落盘棒 + +- 🔴 **最重要的一条教训:状态文档会滞后于产物**。上一棒 20:57 已 `done`、四份产物全在目标目录,但 `目标执行状态.md` 写于 20:42(早于产物),三条判据还停在「目标目录内无产物,执行棒未触发」。⇒ 检查会话**照文档抄判据会误判**,必须拿产物逐条重判(这也是「执行棒只交付产物、不写状态文档」这条分工的直接后果)。 +- 判据重判结果:① 信源收窄 **过**(16→8,弃的每条有实测返回值/原因/拿回条件);② 赛道过滤层落进产品功能文档 **🔴 不过**(设计+F15 可粘块+F9 扩写都有,但 `prd/2a-产品功能.md` 一字未改);③ 两张图加过滤层 **过**(框图 10 处/流程图 9 处命中「赛道过滤」,且自检有变异对照)。 +- 动作三件:① `goalctl.py declare --kpi … --yes` 把三条判据改齐(`过|…`/`🔴 不过|…` 规范写法),**回读 goal.json 确认已落**(备份进 `bak-goalctl-20261011/`);② 重写 `目标执行状态.md`(加「四、旧判据的作废清单」=把 20:42 版那句「无产物未触发」作废,⛔ 防止后续再拿它判红;加「五、收口待办」);③ 派新棒 `64a404f2`(21:24,域 `docs`)去把 F15/F9 扩写/三处同步落进 `prd/2a-产品功能.md` 并给 `2b-界面布局.md` 补两句。 +- 🔴 **域锁是判据②的客观卡点**:`prd/2a` 落在 `docs` 域下,而执行棒默认只写 `执行会话/` ⇒ **派棒必须在提示词里显式指定域目录 `docs`**(`--domain-block docs` 取门禁块抄进去),否则新棒照样够不着 2a,判据会永远红。 +- `lifecycle` 保持「进行中」,⛔ 未标已完成(判据②未过)。 +- ⚠️ 三路判定仍只跑通两路:`taskgraph.json` 不存在;工作区根无 `state.py`(用 `goalctl.py` 默认输出顶替)。`tasks.json` 里当前目标 `8a8412` 有一条 `done`(20:57,`by` 字段为空)。 +- ⚠️ `automation_update list` 实测:**通报说「没有别的待执行排期」是假的** —— 实际有 10 条 once 排期都挂着 ACTIVE(多数是已耗的历史棒,含 50a8f8f3 自己)。⇒ 派棒前一定自己核一遍,别信通报;也别把历史棒当成「待执行」。 + +## 21:2x–21:3x 执行棒 · 把 F15/F9 扩写落进 prd(sid `1d1fdce6`,域 `docs`,判据②做成「过」) + +- 抢锁 → 改 → 跑闸门 → 释放,都在 `docs` 域内完成;`handoff-guard.sh --claim-exec`/`--release-exec` 用的都是会话全名。 +- **改了 `2a-产品功能.md` 8 处**:① 文件头补本轮说明;② §〇 加「本轮追加(赛道过滤层)」;③ §二 `Account` 行加「+ 赛道表」+「被谁消费」补 P2(F15 正文写明 P2 是匹配发生处,不补就打架);④ §三 标题 14 → 15 条;⑤ S1 段末整段落进 F15(源块 §6.1 逐字);⑥ F9 核心对象行点赛道表 + 界线后追加「扩出赛道表字段组」;⑦ §四 标题改 F1–F15、加 F15 行、F9 差异栏补一句;⑧ §五 加本轮六条 + §七 五行落点补 F15(持久化「全部 15 条」,失败恢复行写明 F15 走 fail-open,与 F5 的 fail-closed 对照)+ §九 新增第 8 项(三条未拍板带回收三字段)+ 自检加两条。 +- 🔴 **踩到一处措辞打架**:§九 第 7 项原写「⛔ 不编一条 F15」(指定时发布),而本轮 F15 已用于赛道过滤 ⇒ 改成「⛔ 不为它新增编号 —— F15 已用于赛道过滤,⛔ 不借它的号」。教训:**新增编号时要回头搜一遍文档里有没有「不许编这个号」的旧措辞**。 +- **`2b-界面布局.md` 只改 2 处共 3 行**:P2 对标内容块补账号切换器 + 匹配度筛选器;P2 信息分档表加「匹配度筛选器|主屏常驻」一行(挂在既有板块,⛔ 不占块)。 +- 冻结数改后现算全绿:F1–F15 无插号/页面 7/导航一层七项/板块 39(5+4+4+6+5+5+10)/流转 20/对象 11。 +- **闸门改前改后都是 2061|0|27**(命令必须带 `--ws`,⛔ 不给 `--root .`)。 +- 两态规则:被顶替的旧版用 `git show HEAD:<路径>` 取出来存进 `归档-过期版/2a-产品功能__8a8412.md`(61 683 B)与 `2b-界面布局__8a8412.md`(52 643 B)。✅ 这是个好用的招:**git 跟踪着 prd ⇒ 改前版本随时可以完整取回**,不靠手工备份。索引 §二 大小日期已更新(68 924 B/52 992 B),§五 归档份数 28 → 30。 +- ⚠️ `--report` 报了软提醒「artifact 不在目标目录内」,但路径确实在 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/` ⇒ 该判据大概率是拿 artifact 与 `execution_doc`(= `…/目标执行状态.md`)**整条比**,不是比目录。软提醒不影响上报(已 `done`)。 +- 产物:`执行会话/目标-收窄热点源并加赛道过滤-8a8412/2a-落盘记录.md`(逐处「改前 → 改后」+ 硬约束核对表 + 闸门两次数 + 说人话 46/50)。 + +## 21:4x · 第 53 棒检查会话:**目标「收窄热点源并加赛道过滤」判定已完成**(`8a8412` 收官) + +- ✅ **三条判据全过并收口**:①信源收窄 过/②赛道过滤层落进 prd **由「🔴 不过」翻成「过」**/③框图流程图加过滤层 过。 + `goalctl.py declare --kpi "三条" --yes` 写回(已回读核对)⇒ `collabd.py --set-life 已完成 --by "…第53棒"`(21:44:00)。 +- 🔑 **判据 ② 翻转的依据**:执行棒 `64a404f2`(第 52 棒 21:14 派,排期 21:24)**已跑完并上报 done**(台账 `1d1fdce6`,21:31, + `artifact` = 目标目录 `2a-落盘记录.md`)。本棒**在磁盘上定向 grep 核验**(⛔ 不只信落盘记录的自述): + `prd/2a-产品功能.md` L179 `#### F15 赛道过滤与未匹配档`、L95 `Account` 行含「+ 赛道表」、L318/L324 F9 扩赛道表、L400 归属总表 F15 行; + `prd/2b-界面布局.md` L173 账号切换器与匹配度筛选器、L191 信息分档表新增行;归档两份在位;索引 §二 已更新、§五 28 → 30。 +- ⛔ **未派棒**(无缺口);`--domain-status` 报「无人持域锁」⇒ ⛔ 未动任何人的锁、⛔ 未跑孤儿锁解除。 +- ⚠️ **副作用(机制自带,不是故障)**:`--set-life 已完成` 让本区常驻 `collabd.py --supervise`(pid 10904)**优雅退出**;换目标时由新目标的主会话重起。 +- 📌 **两条可复用的经验**: + 1. 检查会话遇到「状态文档落后于新产物」⇒ 文档仍是唯一依据,但**允许按台账 artifact 定向核验磁盘**(grep 具体行号);这不算"到处翻文件"。核验完必须**文档与 `goal.json` 一起改齐**。 + 2. `goalctl.py declare --kpi` **不带 `--yes` 是干跑**(rc=0、打印「一个字节都没写」)⇒ 必须加 `--yes` 且**回读**。本机已栽过同型的"静默放行"。 +- 📌 **遗留三条(⛔ 非验收判据,交回用户拍板)**:热榜这一路落 P2 哪一块(并进 F1 还是新增一块,新增则 39 → 40)/赛道表编辑入口是否在 P6 单列一块/快手与视频号无源怎么补 —— 已带回收三字段登记在 `prd/2a-产品功能.md` §九 第 8 项。 +- 状态文档已更新:`执行会话/目标-收窄热点源并加赛道过滤-8a8412/目标执行状态.md`(新增「六、本棒核对记录(第 53 棒)」,原第 52 棒记录降级为「七」)。 diff --git a/.workbuddy/memory/MEMORY.md b/.workbuddy/memory/MEMORY.md index 92c58b0..a635091 100644 --- a/.workbuddy/memory/MEMORY.md +++ b/.workbuddy/memory/MEMORY.md @@ -30,7 +30,9 @@ · ✅ **已落地**(20:2x):当前版 **16 份**归位、过期版 **28 份**收进归档、索引建好;规则写进 `E:/ProgramData/.workbuddy/skills/product-planning/SKILL.md` 新增的 `### 文档的两态:当前版与过期版`(在 `### 产物落哪` 之后)。✅ 闸门现跑 **2061|0|27** 全过。 · ⚠️ 踩坑两处(我自己的):①往技能里插新段时拿原标题当锚点、new_string 里没把它带回去 ⇒ **吃掉了 `### DESIGN.md 为什么在项目目录、不在仓库根` 这个标题**,已修回(教训:用标题作锚插入内容时,锚点必须原样保留);②`research/` 只许 `1a`~`1e` 五个标准名 ⇒ 我放的 `1b-竞品分析-汇总对比体.md` 触发闸门 FAIL,改名 `1b-竞品分析.md` 后过(内容一字未动)。 - 🔴🔴 **找方案的唯一入口=`docs/pm/mcn-shortvideo-agent/索引-当前权威版.md`**。起因:用户问「很多新老方案都在文件夹中,后续根据产品方案细化界面如何找得到对应的方案」——实测**没有单一入口**:`2a-产品功能` 在 **6 个**目标目录里各有一版、`2b` **7 个**、原型 5 个,光看文件名与字节数分不出谁新;而 `docs/pm/` 下早先那次归档还停在旧版(`2b` 只 52 256 B=V4,最新 V5 是 52 643 B)。🔴 **断链根因**:机制定的是「执行期落 `执行会话/目标-*/`、主会话收口后统一搬进 `docs/pm/…/`」,但**归档只做过一次**(10-10 22:24),之后 `20a8ac`/`8a649c`/`0a758b`/`39646d` 四个目标的产物一份都没搬。⚠️ **维护时机**:每个目标收口时更新索引(现已写进技能的四步动作里)。 -- 🔴 **本区当前目标**(2026-10-11 20:38 声明)=**收窄热点源 + 加「按账号赛道过滤」一层**(用户在我给的三个候选里**选了 B**;起因=用户逐字「**这个是短视频 内容营销平台,热点范围需要更精准**」)。类别 `产品规划`;目标目录=**机制口径** `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`。三条判据=信源收窄到短视频平台与内容社区/赛道过滤层落进产品功能文档/框图与流程图加上过滤层(均 `未过`)。执行棒 `50a8f8f3` `once` **20:48**。🔴 **诊断依据(主会话实测)**:现有信源里约 **8 条是综合资讯类** —— 海外 5 条(`Hacker News`/`Product Hunt`/`Wikipedia`/`Google News`/`BBC News`)+ 国内 3 个(`知乎`/`百度`/`头条`)⇒ **占信源一半**,等于在给「新闻」而不是给「选题」;贴题的只有海外 `Google Trends`/`Reddit`/`YouTube 频道 RSS`/`trends24` + 国内 6 个平台。⚠️ 本轮**要动 `prd/2a` 与两张图**(用户选 B 即授权);⚠️ 执行棒受域锁限制只能写目标目录,**收口时由主会话按「两态规则」同步进 `docs/pm/mcn-shortvideo-agent/`**。📌 **最近三个目标收官**:`8a649c` 征询 GPT+补细节(17:22,国内口径)|`39646d` 全球口径矩阵与热点源(19:39,验通 9 条/没拿到 6 条如实登记)|`0a758b` 梳理逻辑+出图(04:25)。🔴 **教训(沿用)**:判据只写「有文档/有图」⇒ 执行棒交占位图 ⇒ **判据要落到「照着能做出来」的粒度**。⚠️ 遗留六条改结构项(平台热榜归属/热点事件是否独立成对象/进度 3 或 6 态/收藏热点/数据源管理落点/选题负责人与截止时间)登记在 `NEED-USER.md` 第 6 节。 +- 🔴 **本区当前目标=无**(`8a8412` 收窄热点源+加赛道过滤已于 2026-10-11 21:44 收口=已完成)。✅ **三条判据全过**:①信源 16 路逐条复核 **留 8 弃 8**(弃用每条写实测返回值与拿回条件)②赛道过滤层落进产品文档(`prd/2a` 新增 **F15 赛道过滤与未匹配档**,接在 F14 后**不插号**;F9 扩出「赛道表」字段组;功能清单 14→**15 条**)③两张图新增过滤段(框图 108 节点/流程 83 节点,块内写死字段名与三档阈值 `宽松55/30 · 标准70/40 · 严格85/60`,匹配度 `M` 直接喂给七维里的「账号匹配度 25%」那一维,⛔ 不两处各算一套)。✅ **冻结项一个没动**(页面 7/导航一层七项/板块 39/流转 20 条/对象 11 个)+ 闸门 **2061|0|27**(主会话独立复跑过)。 +- 🔴🔴 **两态规则首次完整跑通(2026-10-11 21:29–21:30)**:`docs/pm/mcn-shortvideo-agent/` 的 `prd/2a`(68 924 B)与 `prd/2b`(52 992 B)被**直接更新**,两份旧版(61 683/52 643)**自动进了 `归档-过期版/`**(命名 `2a-产品功能__8a8412.md`),`索引-当前权威版.md` 同步更新(4 806 B)。⚠️ **责任归属实测=执行棒直接做也行**(它持了 `docs` 域的锁)—— 我原在派活单里写「`docs/` 一个字都不许改」,实际是**多余的**:域锁按域互斥、不是"只许写自己的域",会话可以持多个域的锁。⇒ 两种都可行:执行棒直接改(少一次搬运)/收口时主会话改;**关键是改完必须做归档 + 索引同步这两步**。 +- 📌 **另两条实测收获**:①信源收窄那棒**复核后改了我的口径** —— 我判 `Google Trends` 与 `Product Hunt` 都偏资讯,它复核后**留前者、弃后者**(两者不是一个形态)⇒ 「⛔ 照抄名单就删」那条要求起了作用;②它**如实交回一处缺口**(快手持、视频号没有源)并单列在 §三,⛔ 没当成"已经收窄完了"。📌 **最近四个目标收官**:`8a649c` 征询 GPT+补细节(17:22,国内口径)|`39646d` 全球口径矩阵与热点源(19:39)|`0a758b` 梳理逻辑+出图(04:25)|`8a8412` 收窄信源+赛道过滤(21:44)。🔴 **教训(沿用)**:判据只写「有文档/有图」⇒ 执行棒交占位图 ⇒ **判据要落到「照着能做出来」的粒度**。⚠️ 遗留六条改结构项(平台热榜归属/热点事件是否独立成对象/进度 3 或 6 态/收藏热点/数据源管理落点/选题负责人与截止时间)登记在 `NEED-USER.md` 第 6 节。 - 🔴 **检查会话补齐状态文档=常规动作**:执行棒只交付产物、不写 `目标执行状态.md` ⇒ 检查会话要「现跑门禁 + 补写文档 + 回写 `--kpi`」三件一起做(`fa6e07`/`20a8ac`/`0a758b`/`39646d` 同型)。🔴 **派棒排期时间必须晚于创建时刻**。🔴 **派棒前必须自己 `automation_update list` 核一遍待执行排期**(2026-10-11 第 49 棒实测:注入通报写「没有别的待执行排期」,实际有两条 ACTIVE once ⇒ ⛔ 别信通报,信了就会重复派棒)。 - 📌 **已收口的旧目标**(细则在当日日志):`fc471a` 导航七项一层|`b49e02` 征询 GPT(🔴 D1 待裁定=GPT 主张拆「记录与对账」出复盘,与用户方向相反)|`071c5b` 四步|`fa6e07` 八条口径落②段+原型|`547748` 逆向 Easel(被换掉,其棒已收工)|`20a8ac` 侧栏 64px+刷新改 icon(10-10 完成)|`0a758b` 热点与选题逻辑+框图流程图(10-11 04:25 完成)|`8a649c` 征询 GPT+补细节+重画图(10-11 17:22 完成,⚠️ 属国内口径,已被 `39646d` 接续改造)。⚠️ `--kpi` 按**分号**切 ⇒ 依据里 ⛔ 不许写 `;`。 diff --git a/.workbuddy/memory/automations/2e4781c0-fa4c-45f3-9b22-e2f6ea70452f/memory.md b/.workbuddy/memory/automations/2e4781c0-fa4c-45f3-9b22-e2f6ea70452f/memory.md new file mode 100644 index 0000000..970f506 --- /dev/null +++ b/.workbuddy/memory/automations/2e4781c0-fa4c-45f3-9b22-e2f6ea70452f/memory.md @@ -0,0 +1,17 @@ +# 自动化记忆 · [检查]-[目标检查]-contentm_agent-第53棒 + +## 2026-10-11 21:4x · 第 53 棒(首次执行) + +- 目标:**收窄热点源并加赛道过滤**(`goal_fp=8a8412`)。 +- 判定:**已完成** —— 三条验收判据全部过,已写回 `goal.json.acceptance_state` 并把 `lifecycle` 改成「已完成」。 +- 关键动作:判据 ② 由「🔴 不过」翻转成「过」—— 依据是第 52 棒派出的执行棒 `64a404f2` 已于 21:31 上报 done + (台账 `1d1fdce6`,`artifact` = 目标目录 `2a-落盘记录.md`),本棒**在磁盘上 grep 核验** 2a/2b 改动、归档两份、索引同步,⛔ 不只信落盘记录自述。 +- 未派棒(无缺口);域锁无人持有,⛔ 未动锁、⛔ 未跑孤儿锁解除。 +- 副作用(机制自带,⛔ 非故障):`--set-life 已完成` 让本区常驻 `collabd.py --supervise`(pid 10904)**优雅退出**; + 换目标时由新目标的主会话重起。 +- 遗留(⛔ 非验收判据,交回用户):热榜落 P2 哪一块/赛道表编辑入口是否在 P6 单列/快手与视频号无源怎么补 —— 已登记在 `2a-产品功能.md` §九 第 8 项。 + +### 本棒可复用的经验 +- 检查会话遇到「文档判据落后于新产物」时:**文档是唯一依据**,但允许**按台账 artifact 定向核验磁盘**(grep 具体行号), + ⛔ 不是"到处翻文件";核验完必须把文档与 `goal.json` 一起改齐。 +- `goalctl.py declare --kpi` 不带 `--yes` 是干跑(rc=0 但一个字节没写)⇒ **必须加 `--yes` 并回读**。 diff --git a/.workbuddy/memory/automations/50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4/memory.md b/.workbuddy/memory/automations/50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4/memory.md new file mode 100644 index 0000000..b8babd9 --- /dev/null +++ b/.workbuddy/memory/automations/50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4/memory.md @@ -0,0 +1,30 @@ +# 本棒记忆 · [执行]-[产品规划]-收窄热点源并加赛道过滤层 + +> 排期 id `50a8f8f3-c6b5-43c0-a52c-3c01f3ddadb4`|`once`|`scheduledAt=2026-10-11T20:48` +> 本文件给**本棒的下一次运行**(若被重排)看,避免重踩。 + +## 结果(2026-10-11 20:57) + +- **状态:完成**。会话 `f615337b-ddaa-4e4a-8d50-20243403570c`;`--report … --state done` 已上报(台账 `goal_fp=8a8412`);域锁 `--release-exec` 已释放。 +- 产物落 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`:`信源收窄-短视频平台与内容社区.md`(13 225 B)|`赛道过滤层-设计.md`(23 241 B,含 F15 与 F9 扩写可粘块)|`产品框图-热点与选题-赛道过滤版.html`(34 463 B)|`功能流程图-热点到选题-赛道过滤版.html`(27 382 B)|`交付说明.md`。 +- 🔴 **收口未完**:`docs/` 一个字没改(域锁只许写 `执行会话/`)。F15 与 F9 的实改、两张图同步进 `docs/pm/mcn-shortvideo-agent/` 由**主会话按两态规则**做。⇒ 若本棒被重跑,先查 `docs/pm/mcn-shortvideo-agent/prd/2a-产品功能.md` 里有没有 `F15`,有=已收口,⛔ 别重复加。 + +## 本目标的三条判据(`goal.json.acceptance_state`) + +1. 信源清单已收窄到短视频平台与内容社区 +2. 赛道过滤层已设计并落进产品功能文档 +3. 框图与流程图已加上过滤层 + +## 复用要点(下一棒可能用得上) + +- 判据核心:**「这条源产出的条目,本身能不能当一条短视频选题的开头用」** ⇒ 留 8 弃 8;弃用的每条都写了实测返回过什么。 +- 过滤层插点:**分类之后、价值分之前**,**只作用于外部热点那一路**。 +- 打分:`M = clamp(0,100, round(55 × (W' ÷ 2.0) + 30 × D + 15 × A))`,`W' = min(Σ命中词权重, 2.0)`,词权重 1.0/0.6/0.4;三档 55/30 · 70/40 · 85/60。 +- 图用 `product-planning` 的 `diagram-design` 画(先读 SKILL.md):`self_check.py` 两张都 OK;几何自检(文字溢出/两两重叠)83 节点 ⇒ 0/0;变异对照注入重叠 ⇒ 报 1 条,证明非恒绿。 +- 本机海外取数要走代理 `127.0.0.1:10800`;写图后必须**浏览器实测**几何,肉眼在缩略图上会判错。 + +## 遗留(已交回,⛔ 本棒未拍板) + +1. 热榜这一路落在 P2 哪一块(并进 F1 vs 新增块 ⇒ 板块 40)——倾向并进 F1。 +2. 赛道表编辑入口是否在 P6 单列一块(P6 5→6 块)——倾向挂在画像五维块内。 +3. 快手/视频号无源:人工录入档 / 换第三方聚合,二选一。 diff --git a/.workbuddy/memory/automations/64a404f2-2da2-46ea-9fc2-df66664ac636/memory.md b/.workbuddy/memory/automations/64a404f2-2da2-46ea-9fc2-df66664ac636/memory.md new file mode 100644 index 0000000..5dffa03 --- /dev/null +++ b/.workbuddy/memory/automations/64a404f2-2da2-46ea-9fc2-df66664ac636/memory.md @@ -0,0 +1,20 @@ +# 自动化执行记忆 · 64a404f2 + +## 2026-10-11 21:2x(第 1 次执行) + +**任务**:把上一棒已定设计正式落进当前权威版的两份 prd,把验收判据②「赛道过滤层已设计并落进产品功能文档」做成「过」。 + +**执行要点** +- 域 `docs`,抢锁 → 改 → 跑闸门 → 释放,全程未越界;越界需求(三条未拍板)没有写 `tmp/`,改为登记进 `2a` §九 第 8 项。 +- 源块来自 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/赛道过滤层-设计.md` §6.1/§6.2/§6.3,措辞原样落。 + +**结果** +- `prd/2a-产品功能.md` 改 8 处(新增 F15、F9 扩赛道表、对象字典、总表、§五/§七/§九/自检同步);`prd/2b-界面布局.md` 只改 2 处共 3 行。 +- 冻结数全绿:F1–F15 无插号/页面 7/导航一层七项/板块 39/流转 20/对象 11。 +- 命名闸门改前改后均为 **2061|0|27**。 +- 旧版进 `归档-过期版/`(用 `git show HEAD:<路径>` 取回改前内容),索引已同步。 +- 已 `--report … done`,artifact = `执行会话/目标-收窄热点源并加赛道过滤-8a8412/2a-落盘记录.md`。 + +**下次注意** +- 新增功能编号时,回头搜一遍文档里有没有「不许编这个号」的旧措辞(本次 §九 第 7 项撞上了,已改)。 +- `--report` 对 artifact 的落点判据是拿它与 `execution_doc` 整条比,不是比目录 ⇒ 会出软提醒,属正常。 diff --git a/.workbuddy/memory/automations/6ef41b6b-943a-461d-95c7-abb6e4d0e367/memory.md b/.workbuddy/memory/automations/6ef41b6b-943a-461d-95c7-abb6e4d0e367/memory.md new file mode 100644 index 0000000..258728f --- /dev/null +++ b/.workbuddy/memory/automations/6ef41b6b-943a-461d-95c7-abb6e4d0e367/memory.md @@ -0,0 +1,12 @@ +# 自动化记忆 · 6ef41b6b(目标检查会话系列) + +## 2026-10-11 21:15 · 第 52 棒(目标:收窄热点源并加赛道过滤 8a8412) + +- 判定:**未完成**。判据①信源收窄=过、③两张图加过滤层=过、②赛道过滤层落进产品功能文档=🔴 不过。 +- 关键发现:上一棒 50a8f8f3(排期 20:48)**已跑完并上报 done**(20:57),四份产物都在目标目录; + 但 `目标执行状态.md` 写于 20:42、早于产物 ⇒ 文档里三条判据还停在「无产物,未触发」。 + ⇒ **教训:状态文档可能滞后于产物,判据要照产物重判,不能照抄文档。** +- 动作:用 `goalctl.py declare --kpi "…" --yes` 把三条判据改齐并回读确认(lifecycle 保持「进行中」); + 重写 `目标执行状态.md`(含旧依据作废清单+收口待办);派新棒 `64a404f2`(21:24,域 `docs`)去把 F15/F9 扩写落进 `prd/2a` 并补 `2b` 两句。 +- ⚠️ `state.py` 在工作区根不存在(历史已知);`taskgraph.json` 也不存在 ⇒ 三路判定只跑通台账路与判据路。 +- ⚠️ 判据②的客观卡点:执行棒受域锁只能写目标目录,`prd/2a` 在 `docs` 域下 ⇒ 派棒必须显式占 `docs` 域才能落盘。 diff --git a/.workbuddy/memory/automations/ca31ec5e-42f0-4963-b1cb-daf9cefb5049/memory.md b/.workbuddy/memory/automations/ca31ec5e-42f0-4963-b1cb-daf9cefb5049/memory.md new file mode 100644 index 0000000..e56ebf1 --- /dev/null +++ b/.workbuddy/memory/automations/ca31ec5e-42f0-4963-b1cb-daf9cefb5049/memory.md @@ -0,0 +1,14 @@ +# 第 51 棒 · 目标检查(目标:收窄热点源并加赛道过滤 / 8a8412) + +## 2026-10-11 20:41 执行结果 + +- 判定:**目标未完成**(三条验收判据全未过)。 +- **未派新棒**:同目标的执行排期 `50a8f8f3`「[执行]-[产品规划]-收窄热点源并加赛道过滤层」已在册且 ACTIVE,`scheduledAt=20:48`,比本棒核对时刻晚 7 分钟 ⇒ 再派即重复。 +- ⚠️ 本轮触发通报称「没有别的待执行排期」与事实不符(实有 3 条 ACTIVE once),已按「自己 list 一遍」的规矩核过。 +- 产出:补写 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/目标执行状态.md`(原先是空模板);把 `goal.json` 的 `acceptance_state` 取值从 `未过` 规范为 `🔴 不过`,回读已确认。 +- `lifecycle` 未改,仍「进行中」。 + +## 给下一棒的提示 + +- 等 `50a8f8f3` 跑完再判:核它有没有把产物落进 `执行会话/目标-收窄热点源并加赛道过滤-8a8412/`,落了才改判据。 +- 本区 `state.py` 不存在、`taskgraph.json` 不存在 ⇒ 三路判定实际只有两路,别写成三路齐全。 diff --git a/docs/pm/mcn-shortvideo-agent/prd/2a-产品功能.md b/docs/pm/mcn-shortvideo-agent/prd/2a-产品功能.md index 44453bd..761ff00 100644 --- a/docs/pm/mcn-shortvideo-agent/prd/2a-产品功能.md +++ b/docs/pm/mcn-shortvideo-agent/prd/2a-产品功能.md @@ -7,7 +7,8 @@ > 判据源:`stage-requirements/references/create-prd.md`(功能清单)+ `references/state-machine.md`(六项治理,落在功能条目内)。 > 本份只回答「做哪些功能、不做哪些、每条什么优先级、功能归谁」。页面骨架在 `2b-界面布局-新版.md`。 > ⛔ 全文零视觉词 —— 配色 / 字体 / 间距 / 组件样式 / 动效,一个都没出现。 -> 🔴 **本版没加功能、没改优先级**:功能清单仍是 14 条(F1–F14),编号一个没动。改的是**判据、对象定义与三条功能的措辞**。 +> 🔴 **V4 那一轮没加功能、没改优先级**:功能清单是 14 条(F1–F14),编号一个没动。改的是**判据、对象定义与三条功能的措辞**。 +> 🔴 **2026-10-11 追加一轮(赛道过滤层)**:新增 **F15 赛道过滤与未匹配档**(接在 F14 之后,⛔ 不插号),F9 扩出「赛道表」字段组。功能清单 14 → **15 条**;页面 7 / 导航一层七项 / 业务板块 39 / 流转 20 条 / 业务对象 11 个,**一个都没动**。 --- @@ -33,6 +34,13 @@ - **F7 的展开单位改成平台账号**(一个内容账号下的每个平台账号各一版,守卫同步改「内容账号 + 它的一个平台账号」);**F13 补「一版一路」**(一个渠道只对应一个版本 ⇒ 发布记录的渠道由版本唯一确定,`PublishRecord` **不加渠道字段**)(§三 F7/F13)。 - **定时发布挂起**:用户 2026-10-10 07:56 逐字「后续具体做投放功能的时候在说」⇒ 本版**不为它加任何功能条目与字段**,只登记在 §九(§九 第 7 项)。 +**本轮追加(2026-10-11 · 赛道过滤层)** + +- **新增 F15 赛道过滤与未匹配档**(§三 S1 段末):把全网热点按**当前内容账号的赛道**过一遍,只留下这个号能做的。编号接在 F14 之后,⛔ 不插号、⛔ 不动 F1–F14 的编号与优先级。 +- **F9 扩出「赛道表」字段组**(包含词/排除词/领域白名单/过滤档),挂在内容账号下,**不新增对象、不新增板块**(§三 F9)。 +- **页面 7 / 导航一层七项 / 业务板块 39 / 流转 20 条 / 业务对象 11 个 —— 一个都没变。** +- ⛔ 三条还没拍板、交回用户(§九 第 8 项):热榜落在 P2 哪一块、赛道表的编辑入口是否在 P6 单列一块、快手与视频号无源怎么补。 + **V3 追加(2026-10-09 用户令)**: - **P8 记录与对账整页并入 P7 复盘台**,页 ID 里不再有 P8;F12、F13 的归属页随之由 P8 改 **P7**(§三 F12/F13、§四 总表、§二 对象字典)。 @@ -84,7 +92,7 @@ | 对象 | 是什么 | 产生位置 | 被谁消费 | |---|---|---|---| -| `Account` 内容账号 | 管**内容属性**的主体:账号设定(定位/风格/受众/偏好与红线/长期记忆)。🔴 **平台不属于它** —— 它下面挂 1 → N 个**平台账号**,平台账号是**子项、不是新对象** | P6 | P1、P4、P5、P7 | +| `Account` 内容账号 | 管**内容属性**的主体:账号设定(定位/风格/受众/偏好与红线/长期记忆 **+ 赛道表**)。🔴 **平台不属于它** —— 它下面挂 1 → N 个**平台账号**,平台账号是**子项、不是新对象** | P6 | P1、P2、P4、P5、P7 | | `Benchmark` 对标号 | 被盯住的一个对标账号 | P2(F1 录入监控名单) | P2 | | `Topic` 选题 | 选题库里的一条信息(⛔ 不止「一条待做选题」),含它的来源与**分类**(§三 F2) | P2(F1 异常值、F2 选题库、F3 评论洞察) | P4 | | `Asset` 资产条目 | 拆解出来的可复用写法,分角度/结构/开场白/标题四区 | 🔴 **P2/P3/P4 均可**(任何页拆出资产都可就地入库;资产库页是**统一管理**的地方,⛔ 不是唯一入库口) | P4 | @@ -112,7 +120,7 @@ --- -## 三、功能清单(14 条,按场景) +## 三、功能清单(15 条,按场景) 字段从上到下固定八样:功能名 / 来自哪条场景 / 优先级 / 核心业务对象 / 归属页 / 状态流转 / 验收要点 / 跨哪些页面,最后跟一条「治理」。 @@ -168,6 +176,30 @@ - **跨哪些页面**:P2 - **治理**:失败恢复=抓取失败转手工粘贴评论;持久化=候选选题落本地;并发=同一内容同时抓取走队列;幂等=按「评论标识」去重;超时=抓取中上限 60 秒(设计值);不可逆=不涉及。 +#### F15 赛道过滤与未匹配档 + +- **功能名**:把全网热点按当前内容账号的赛道过一遍,只留下这个号能做的。 +- **来自哪条场景**:S1 +- **优先级**:P0 —— 判据:不做则雷达默认视图仍是大盘新闻,S1「不用逐个刷榜」只做了一半。 +- **核心业务对象**:`Topic` 选题(读 `Account` 的赛道表,不产生新对象) +- **归属页**:P2 选题雷达 +- **输入口(🔴 写死只此一路)**:只作用于**平台热榜 / 社区热榜**这一路外部热点; + 对标账号、评论洞察、自有账号数据、人工输入这四路⛔ 不过滤(它们天然按账号来)。 +- **匹配规则(两步,都可复算,⛔ 不含模型调用)**: + 1. 硬拦:标题或关键词命中「赛道表·排除词 ∪ 画像·偏好与红线」任一条 ⇒ 判低匹配,标「红线命中」。 + 2. 打分:M = clamp(0,100, round( 55 × min(W,2.0) ÷ 2.0 + 30 × 领域对齐 + 15 × 受众命中 )), + W = 命中词权重和(主词 1.0 / 长尾词 0.6 / 受众词 0.4),领域对齐与受众命中各取 0 或 1。 +- **阈值三档(挂在账号上)**:宽松 55/30 · 标准(默认)70/40 · 严格 85/60(进池线 / 折叠线)。 +- **状态流转**:`待过滤 → 已匹配 / 已折叠 / 已拦截 / 已捞取`。 + 事件=过滤、展开折叠项、人工捞取;守卫=赛道表缺 ⇒ 全量放行并标「未过滤」(fail-open);捞取可撤销。 +- **验收要点**:给一个内容账号,雷达默认视图只剩与它赛道相关的条目;改一个包含词, + 同一条热点的 M 跟着变;红线词命中的条目不出现在默认视图;切到「未匹配」档能看见被挡下的条目、 + 看见它为什么被挡,并能捞回来一条、留下「人工捞取」记录。 +- **跨哪些页面**:P2(匹配发生处)、P6(读账号的赛道表) +- **治理**:失败恢复=赛道表读不到 ⇒ 全量放行并标「未过滤」(fail-open,⛔ 不许静默把雷达清空); + 持久化=匹配结果随 `Topic` 落本地;并发=一条热点多账号并行算,各写各的; + 幂等=同「热点标识 + 账号ID」不重复算;超时=单条上限 1 秒(纯规则);不可逆=不涉及(捞取可撤)。 + ### S2 选题进资产库 #### F4 爆款拆解与资产库 @@ -283,12 +315,17 @@ - **功能名**:每个**内容账号**有自己的口径和记忆,互不覆盖;它下面的**平台账号**(发布渠道)也在这里维护。 - **来自哪条场景**:S6、S7 - **优先级**:P0 —— 判据:不做则 S6 整条办不成(表现无处可回)。 -- **核心业务对象**:`Account` 内容账号(连带它的长期记忆,以及它下面的**平台账号子项**) +- **核心业务对象**:`Account` 内容账号(连带它的长期记忆,它下面的**平台账号子项**,以及 🔴 2026-10-11 扩出的**赛道表**字段组) - **归属页**:P6 账号画像 - **界线(🔴 2026-10-10 用户口径新定)**: - **内容账号管的是内容属性** —— 账号设定(定位/风格/受众/偏好与红线/长期记忆)。**平台不属于它**。 - **平台账号是发布的渠道** —— 每条带**平台 + 登录态 + 授权状态**。登录态归它(能不能发出去是它的事),内容账号不带登录态。 - 一个内容账号 1 → N 个平台账号;**同一个人设在多个平台运营**靠这条表达。 +- 🔴 **扩出「赛道表」字段组(V5 新增)**:`包含词[]`(每条带权重:主词 1.0 / 长尾词 0.6)、 + `排除词[]`、`领域白名单[]`、`过滤档`(宽松 / 标准 / 严格)。它挂在这个内容账号下, + 与画像五维同一份数据的延伸,**不新增对象、不新增板块**。 + 初值可由系统按「定位」那一句生成,标「AI 初判,待确认」,用户确认后落成固定词表。 + ⚠️ 「偏好与红线」与 `排除词` 合流后一起做硬拦(见 F15 规则 1)。 - **状态流转**:`空 → 已建 → 使用中 →(复盘回写)→ 使用中`。事件=建画像、编辑、被复盘回写;守卫=一个账号一份画像,账号标识唯一;回写只追加记忆条目,不改历史结论。 🔴 **平台账号子项另有一条状态**:`未接入 → 已登录 / 登录失效 → 已授权 / 授权到期`。守卫=**授权失效的平台账号不许进发布闸门**(P5 发不出去这件事在这里拦)。 - **验收要点**:两个内容账号各自的画像互不影响;一条内容复盘后,对应账号的画像里多出一条记忆;并排跑两个账号的创作,谁都不覆盖谁;**一个内容账号下面挂 3 个平台账号,各自带自己的登录态与授权状态、互不串台**。 @@ -340,7 +377,7 @@ --- -## 四、功能归属总表(F1–F14) +## 四、功能归属总表(F1–F15) 这张表是本版新加的。上一版的归属散在每条末尾的「跨哪些页面」里,没有一处能一眼看全,也就没法复核。 @@ -354,12 +391,13 @@ | F6 创作流水线 | S3 | `Content` | P4 | 无 | | F7 一份母版到多平台账号版本 | S4 | `ContentVersion` | **P4** | 🔴 **V4 改了**:展开单位由「账号 × 平台」改成**按平台账号展开**;守卫改成「内容账号 + 它的一个平台账号」 | | F8 内容与素材的版本管理 | S3 S4 | `ContentVersion` | **P4** | 无 | -| F9 多账号画像、平台账号与记忆 | S6 S7 | `Account` | P6 | 🔴 **V4 改了**:功能扩到「平台账号(发布渠道)也在这里维护」;`Account` 改写成**内容账号**,平台账号做成它下面的子项 | +| F9 多账号画像、平台账号与记忆 | S6 S7 | `Account` | P6 | 🔴 **V4 改了**:功能扩到「平台账号(发布渠道)也在这里维护」;`Account` 改写成**内容账号**,平台账号做成它下面的子项。🔴 **2026-10-11 又扩**:**扩出赛道表字段组**(包含词/排除词/领域白名单/过滤档) | | F10 效果复盘与归因回写 | S6 | `Review` | P7 | 无 | | F11 矩阵级看板 | S7【假设】 | `Performance` | P1 | 无 | | F12 商单与收支记录、内容对账 | S8【假设】 | `Campaign/Order` | **P7** | 无(V4 起归属理由由「同类事」给出:发布之后看收入) | | F13 发布留痕与人工确认记录 | S5 | `PublishRecord` | P5(产生)/**P7**(查) | 🔴 **V4 改了**:补「**一版一路**」—— 渠道由版本唯一确定,`PublishRecord` **不加渠道字段** | | F14 录制卡片与画板 | S3 | `Content`/草稿 | **P4**(入口可在 P2) | 无 | +| F15 赛道过滤与未匹配档 | S1 | `Topic` | P2 | 🔴 **新增** | 七页各自「核心对象」与「不应该负责」两栏在 `2b-界面布局-新版.md` §五,本份不重复。 @@ -369,6 +407,15 @@ 这一版不是同一批句子换了个说法。下面逐条写改在哪,能对照原文核。 +**本轮(2026-10-11 · 赛道过滤层)** + +1、**功能清单 14 → 15 条**:新增 **F15 赛道过滤与未匹配档**,位置在 §三 S1 段末(内容上归 S1,与 F1/F2/F3 同一类事),编号接在 F14 之后 —— ⛔ 不插号,F1–F14 的编号与优先级一个没动。 +2、**F9 扩出「赛道表」字段组**(包含词/排除词/领域白名单/过滤档),挂在内容账号下。⛔ 不为它单开一条 F16:维护动作与画像是同一类事、同一页(P6),单开会撞上「同类事放同一页」。 +3、**`Account` 多了赛道表这一组字段**(§二 对象字典),**对象仍是 11 个** —— 它是字段组的延伸,⛔ 不是新对象。 +4、**§四 总表**加 F15 一行,F9 的「差异」栏补上这一扩。 +5、**页面 7 / 导航一层七项 / 业务板块 39 / 流转 20 条 / 业务对象 11 个 —— 一个都没变。** 这一层只加了一条功能与一组字段,⛔ 没有动页结构与骨架。 +6、**与上一轮方向相反、但不冲突**:上一轮(`39646d`)把平台与热点源从国内**扩到全球**;这一轮把全网热点**收成「这个号能做的」**。两步在同一条链上,后者建在前者之上。 + **V4 本轮(相对 V3 · 八条口径)** 1、**归属判据换了一条**(§一 第 2 条):由「看它动的是哪个对象」改成「**这是哪一类事,同类事放同一页**」。对象那层**保留**,但降为**落地手段**。拿新判据复核七页 ⇒ **页集合一个没动**(七页各自都是「一类事」)。 @@ -445,11 +492,11 @@ | 治理项 | 落点(哪些功能显式写了) | 最要紧的一条 | |---|---|---| -| 失败恢复路径 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F11 F12 F13 F14 | F5 走 **fail-closed**(检查失败按不过处理),本组唯一一条「宁拦不放」 | -| 持久化范围 | 全部 14 条 | F9 的**记忆作用域收敛到画像目录、不写全局**(对策 R4);F13 的审计轨迹**只追加不改写** | -| 并发冲突 | F1 F2 F3 F6 F7 F8 F9 F12 | 统一做法:写临时文件 + 原子替换 + 回读核对,⛔ 不用文件锁(本机实测会卡死) | -| 幂等 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F12 F14 | F4 与 F8 的**重复入库/重复保存不产生副本、也不覆盖旧版** | -| 超时迁移目标 | F1 F3 F4 F5 F6 F7 F10 F13 F14 | F13 的 `待审` 超时**只提醒、不自动放行** —— 不可逆动作不许靠超时自动过 | +| 失败恢复路径 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 | F5 走 **fail-closed**(检查失败按不过处理);F15 反过来走 **fail-open**(赛道表读不到就全量放行并标「未过滤」,⛔ 不许静默把雷达清空) | +| 持久化范围 | 全部 15 条 | F9 的**记忆作用域收敛到画像目录、不写全局**(对策 R4);F13 的审计轨迹**只追加不改写** | +| 并发冲突 | F1 F2 F3 F6 F7 F8 F9 F12 F15 | 统一做法:写临时文件 + 原子替换 + 回读核对,⛔ 不用文件锁(本机实测会卡死) | +| 幂等 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F12 F14 F15 | F4 与 F8 的**重复入库/重复保存不产生副本、也不覆盖旧版** | +| 超时迁移目标 | F1 F3 F4 F5 F6 F7 F10 F13 F14 F15 | F13 的 `待审` 超时**只提醒、不自动放行** —— 不可逆动作不许靠超时自动过 | | 不可逆操作二次确认 | F4 F5 F8 F9 F10 F12 F13 | F5 + F13:**发布、删帖、组织级急停三件形态不同**,分别按「人的动作 / 二次确认 / 只有人能触发与恢复」处理 | 补一条方法论要求的分工说明:**发布这个动作本身留在人手里**(read-first / draft-first,源码级);**删帖**带破坏性标注、属需二次确认的一类;**组织级急停**的触发与恢复都只有人能做。⚠️ 三件事的「人来做」形态不一样,⛔ 不压成一句话。 @@ -517,12 +564,25 @@ GPT 的 P0 清单里有 `P7 → P1`(复盘结论 → 矩阵待办/异常/ **7、定时发布:挂起(🔴 V4 新增的登记项)** 用户 2026-10-10 07:56 逐字:「**后续具体做投放功能的时候在说**」。 -⇒ **本版不为它加任何功能条目、字段或状态**(⛔ 不编一条 F15,⛔ 不在 `PublishTask` 里塞排期字段)。 +⇒ **本版不为它加任何功能条目、字段或状态**(⛔ 不为它新增编号 —— F15 已用于赛道过滤,⛔ 不借它的号,⛔ 不在 `PublishTask` 里塞排期字段)。 ⇒ 它是**挂起**,不是「不做」:等真做投放功能时再议。挂起期间**谁都不许拿它当已定内容用**。 - **复核人** = 主会话转用户 - **复核时机** = 立项做投放功能时(⛔ 不是②段收口时) - **结论落点** = 本文件 §三 F5/F7 附近 + `2b` §五 P5 +**8、赛道过滤层绕不过结构的三条(🔴 2026-10-11 新增,三条都没自己拍板)** + +F15 本身不依赖这三条的答案(无论热点落在哪一块,进库前都要过这一层),但它们的答案决定**可见面画在哪**,所以要交回: + +- **8a、热榜这一路落在 P2 的哪一块** —— 并进 F1(把「对标账号监控」扩成「热点与对标监控」),还是 P2 新开一块?⚠️ 新开一块 ⇒ 业务板块 39 → 40,撞「板块 39 不变」这条硬约束。 +- **8b、赛道表的编辑入口要不要在 P6 单列一块** —— 现版 P6 是 5 块;挂在「画像五维」块里(不占新块),还是单列一块(P6 → 6 块 ⇒ 板块 40)? +- **8c、快手与视频号没有可用的热点源,怎么补** —— 这两个平台在 12 平台矩阵里,但本轮查证拿不到免费源;是留空、降级成人工录入,还是换源? + +为什么不自决:三条都会**扩大可见面或改动冻结的板块数**,属红线门禁那一类,⛔ 不许顺手定。 +- **复核人** = 主会话转用户 +- **复核时机** = ③段动 P2/P6 界面前 +- **结论落点** = 本文件 §三 F15 与 §四 总表 + `2b` §五 P2/P6 + **回收三字段**(本份第 1–6 项共用): - 复核人 = 主会话转用户 - 复核时机 = ②段收口时一次性过;第 3 条、第 5 条要赶在第④步动界面之前定 @@ -542,7 +602,9 @@ P1 矩阵总览|P2 选题雷达|P3 资产库|P4 创作台|P5 发布中 ## 附:本份自检 -- [x] 每条功能都追回①段《使用场景》(`1e` S1–S8),14 条全覆盖;`1e` §四 的反向核对(场景 → 功能)依然成立 +- [x] 每条功能都追回①段《使用场景》(`1e` S1–S8),15 条全覆盖(F15 追的是 S1);`1e` §四 的反向核对(场景 → 功能)依然成立 +- [x] **F15 编号接在 F14 之后**,⛔ 没插号;F1–F14 的编号、来自哪条场景、优先级判据一个没动 +- [x] **页面 7 / 导航一层七项 / 业务板块 39 / 流转 20 条 / 业务对象 11 个 —— 逐项核过,一个都没变**(赛道表是 `Account` 的字段组,⛔ 不是新对象) - [x] 每条功能八字段齐全(功能名 / 来自哪条场景 / 优先级 / 核心业务对象 / 归属页 / 状态流转 / 验收要点 / 跨哪些页面) - [x] 功能归属有可复核的判据(🔴 V4 换成「一类事情放同一页」,对象降为落地手段),不是「哪页有按钮」 - [x] **拿新判据复核过七页**:七页各自都是「一类事」,页集合没动(§一 第 2 条的复核表) diff --git a/docs/pm/mcn-shortvideo-agent/prd/2b-界面布局.md b/docs/pm/mcn-shortvideo-agent/prd/2b-界面布局.md index 13ca1c8..1638a7f 100644 --- a/docs/pm/mcn-shortvideo-agent/prd/2b-界面布局.md +++ b/docs/pm/mcn-shortvideo-agent/prd/2b-界面布局.md @@ -170,7 +170,7 @@ **业务板块清单(从上到下,4 块)** 1. 对标监控概览 —— 四个数:在监控的账号数/低粉爆款条数/异常值条数/近三天更新条数 -2. 对标内容 —— 每条带它相对该账号平时水平的倍数(⛔ 同 P1,不写呈现);拆出来的结果**可就地入库**(人不必先跑去资产库 —— 入库口不限页,见 §一 第 3 条) +2. 对标内容 —— 每条带它相对该账号平时水平的倍数(⛔ 同 P1,不写呈现);拆出来的结果**可就地入库**(人不必先跑去资产库 —— 入库口不限页,见 §一 第 3 条);列表上常驻**账号切换器**与**匹配度筛选器**(全部 / 高匹配 / 可能相关 / 未匹配),按当前内容账号的赛道把不相干的大盘挡在外面(规则见 `2a` F15) 3. 评论区洞察(可点入子区)—— 取评论、出 AI 候选选题(`2a` F3) 4. 选题库 —— 装**对选题有帮助的任何信息**,用**进度 × 类型**两个正交维度区分(见下) @@ -188,6 +188,7 @@ | 信息 | 档 | 判据回答 | |---|---|---| | 对标内容 | 主屏常驻 | 删掉它,主操作的对象没了,做不成 | +| 匹配度筛选器 | 主屏常驻 | 删掉它,用户没法把大盘挡在外面,这一页的主操作(找到能做的选题)做不成 | | 选题库 | 主屏常驻 | 删掉它,主操作没有可推进的条目,做不成 | | 对标监控概览四数 | 主屏常驻 | 删掉它,看不出哪个账号值得看 —— 列表会长到没法挑,等于主操作做不成 | | 评论区洞察 | 可点入 | 删掉它,仍能从对标列表拿到选题 | diff --git a/docs/pm/mcn-shortvideo-agent/归档-过期版/2a-产品功能__8a8412.md b/docs/pm/mcn-shortvideo-agent/归档-过期版/2a-产品功能__8a8412.md new file mode 100644 index 0000000..44453bd --- /dev/null +++ b/docs/pm/mcn-shortvideo-agent/归档-过期版/2a-产品功能__8a8412.md @@ -0,0 +1,563 @@ +# 2a 产品功能(新版 V4) + +> 项目 slug:`mcn-shortvideo-agent` | ②段第 1 子步,产出 `prd/2a-产品功能.md` +> 本版在 V3 基础上**把用户 2026-10-09~10 陆续下达的八条口径落进正文**(归属判据换「一类事情放同一页」、资产入库不限页、选题库按分类容纳、记录与对账属复盘不拆、一条内容对应多个发布渠道、账号分内容账号与平台账号两个概念、投放页目标选择两级、F7 展开单位改平台账号 + F13 补「一版一路」)。V3 本身是在 V2 基础上按用户口径同步功能归属(导航一层七项、P8 并入复盘、功能与板块一一对应);V2 是**重做**,不是润色;上游决策见 `GPT-规划意见与采纳决策.md`(2026-10-08 23:54,采纳 24/部分采纳 3/不采纳 1)。 +> V4 的两份依据(口径原文):`用户口径裁决-5条回应.md`(2026-10-09)、`用户口径追加-账号是两个概念.md`(2026-10-10)。 +> 只读输入:①段 `1a-需求文档.md`(`docs/pm/mcn-shortvideo-agent/research/`)、`1e-使用场景.md`(八条用户故事)、②棒 GPT 意见与采纳决策、第①棒 `产品规划/现状梳理-板块·功能·操作路线.md`、V2 版 `2a-产品功能-新版.md`/`2b-界面布局-新版.md`。 +> 判据源:`stage-requirements/references/create-prd.md`(功能清单)+ `references/state-machine.md`(六项治理,落在功能条目内)。 +> 本份只回答「做哪些功能、不做哪些、每条什么优先级、功能归谁」。页面骨架在 `2b-界面布局-新版.md`。 +> ⛔ 全文零视觉词 —— 配色 / 字体 / 间距 / 组件样式 / 动效,一个都没出现。 +> 🔴 **本版没加功能、没改优先级**:功能清单仍是 14 条(F1–F14),编号一个没动。改的是**判据、对象定义与三条功能的措辞**。 + +--- + +## 〇、一屏结论 + +**V4 最要紧的一句**:**功能没加没减,改的是判据、对象定义与三处措辞。** 八条口径逐条落到 §一/§二/§三,页面侧同步落到 `2b` 与原型。 + +**沿用上一版(V3)的结论**(本版没推翻): + +- 功能清单还是 14 条(F1–F14),**编号一个没动**(沿用 `1a` §六,`1e` §四 反向核过)。 +- 核心业务对象字典是 11 个对象 —— 本版**仍是 11**(账号只拆概念不拆对象,见 §二)。 +- 两条功能口径写实:F11 标「待验证/非主链能力」;F12 标 `P2/Deferred`。 +- 三条更结构化的建议(②段要不要并成一份九节的架构基线、六种流转类型要不要进正文、两条新增流转)**没有在做/不做上自作主张** —— 先按 GPT 的方向落地,同时在 §九 单列交回用户。 + +**V4 本轮追加(2026-10-10,用户八条口径)**: + +- **功能归属的判据换成「一类事情放同一个页面」**(§一 第 2 条重写)。拿它复核七页:**页集合不动**,七页各自都是「一类事」。 +- **资产入库不限页**:`Asset` 的「产生位置」由 P3 改成「**P2/P3/P4 均可**」,并写清「一个对象只有一处产生」管的是**唯一权威数据**,⛔ 不是**写入动作的地点**(§二 对象字典 + §一 第 3 条后新增一句 + §三 F4)。 +- **选题库容纳「对选题有帮助的任何信息」,靠分类区分**:随手记仍落选题库,⛔ 不新增「待整理」状态、⛔ 不做多去向(§三 F2)。分类维度由本版给出方案(**进度 × 类型**两个正交维度),落到 `2b` §五 P2。 +- **记录与对账属复盘**:这一类事就是「发布之后看数据与看收入」,⛔ 不拆页、⛔ 不分区(§三 F12/F13 与 `2b` §五 P7)。 +- **一条内容对应多个发布渠道**:`PublishTask` 的定义由「含目标账号与平台」改成「含**发布渠道**」(渠道 = 平台账号)(§二 对象字典)。 +- **账号分两个概念**:`Account` 改写成**内容账号**(管内容属性:账号设定),**平台不属于它**;**平台账号 = 发布渠道**(带平台 + 登录态 + 授权状态),做成内容账号下的**子项清单**,**不加对象**(仍是 11 个)(§二 对象字典 + §三 F9)。 +- **F7 的展开单位改成平台账号**(一个内容账号下的每个平台账号各一版,守卫同步改「内容账号 + 它的一个平台账号」);**F13 补「一版一路」**(一个渠道只对应一个版本 ⇒ 发布记录的渠道由版本唯一确定,`PublishRecord` **不加渠道字段**)(§三 F7/F13)。 +- **定时发布挂起**:用户 2026-10-10 07:56 逐字「后续具体做投放功能的时候在说」⇒ 本版**不为它加任何功能条目与字段**,只登记在 §九(§九 第 7 项)。 + +**V3 追加(2026-10-09 用户令)**: + +- **P8 记录与对账整页并入 P7 复盘台**,页 ID 里不再有 P8;F12、F13 的归属页随之由 P8 改 **P7**(§三 F12/F13、§四 总表、§二 对象字典)。 +- **导航改一层七项**(首页/选题/创作/投放/复盘/账号/资产),项与页的对应见 `2b` §三。 +- **功能与板块的对应写成可机检关系**(原型 `FN_HOME`/`FN_MAP`,自检双向核),判据仍是「这个功能主要创建或改变哪个核心业务对象」。功能清单仍是 14 条,编号一个没动。 + +--- + +## 一、这份文档怎么组织(四条判据,全篇照这个来) + +**第 1 条 · 功能按使用场景组织,不按页面。** +沿用 2026-10-06 的用户定案。一条场景下可以挂跨好几个页面的功能。理由不是习惯:按页面组织会把跨页场景切碎,也跟①段《使用场景》对不上。 + +**第 2 条 · 归属看「这是哪一类事」,同类事放同一页。**(🔴 2026-10-09 用户口径换的判据,取代上一版「只看核心业务对象」) +判据一句话:**这个功能干的是哪一类事情,就和做同一类事情的其它功能放在同一页。** +用户原话:「应该是一类事情在一个页面 比如 找选题和做选题就应该在一起 都是选题相关的事情」。 + +拿它复核七页,**页集合一个没动**: + +| 页 | 这一页收的是哪一类事 | 复核结果 | +|---|---|---| +| P1 矩阵总览 | 今天先处理哪件 —— 跨账号的待办与概览 | 一类(一名内容负责人一眼扫全局) | +| P2 选题雷达 | 找选题、拆解选题、把选题推进下一步 —— **选题相关的事** | 一类(找与做同页,正是用户举的例子) | +| P3 资产库 | 资产条目的统一管理(分类分区/检索/维护/引用) | 一类(管资产) | +| P4 创作台 | 一条内容从选题走到成稿,再展开成多平台账号版本 | 一类(做内容) | +| P5 发布中心 | 这批内容怎么发出去:过闸、逐版确认、留痕 | 一类(发出去) | +| P6 账号画像 | 内容账号的设定与它的平台账号(发布渠道) | 一类(管账号) | +| P7 复盘台 | **发布之后看数据与看收入** —— 复盘、发布记录、溯源、对账、商单收支 | 一类(用户原话:发布的目的就是看数据和看收入) | + +⚠️ **判据落地时仍要看核心业务对象 —— 对象是「同一类事」的落地手段,不是判据本身。** +理由:一类事往往就是围着同一个对象转(选题相关的事产 `Topic`、发布相关的事产 `PublishTask`/`PublishRecord`、账号相关的事产 `Account`)。先按「哪一类事」分页,再用「它主要创建或改变哪个对象」逐条钉住归属页,两句话说的是同一件事;**分页时以「哪一类事」为准** —— 用户看得见的是事,看不见的是对象。 +拿对象那一层再核一遍,本版**没有因为换判据而挪页**:F7 仍归 P4、F14 仍归 P4、F5 仍归 P5(这三条是 V2 相对 V1 改的,本版沿用)。 + +**第 3 条 · 跨页面只传对象 ID 加必要上下文,不传页面临时状态。** +比如 P1 跳 P7,传的是 `accountId`,不是「刚才点的是哪个账号」这个临时变量。P7 自己拿 `accountId` 去查它的发布记录与表现数据。 +这条治的是现状里两处硬伤(详见 `2b-界面布局-新版.md` §六):P1 → P7 传了参数接收方不读(落错对象),P2 → P4 压根不带内容。 + +**第 4 条 · 「一个对象只有一处」管的是权威数据,⛔ 不管写入动作发生在哪一页。**(🔴 2026-10-10 用户口径新增,专门堵这一处误读) +一个对象**只有一份权威记录**、只有一处能改它的权威值;但**产生它的写入动作可以在别的页发生**。最直接的一例是资产:任何页(P2 的拆解线索、P3 的拆解、P4 的创作沉淀)都可以**就地入库**,落下来的仍是**同一份**资产条目,统一由资产库页管。 +用户原话:「所有页面有产生资产都可以 随时入库,资产库页是统一管理的地方」。 +⚠️ 别把这条读成「归属页有多个」:**归属页按「谁统一管它」定**(资产仍归 P3),别的页只是**入口**。 + +--- + +## 二、核心业务对象字典(11 个) + +产品里真正在流动的东西就是这些。每一行写清三件事:它是什么、在哪儿产生、被谁拿走。 +🔴 **对象数仍是 11** —— V4 把「账号」拆成两个概念,但**只拆概念不拆对象**:`Account` 改写成**内容账号**,**平台账号**做成它下面的**子项清单**(1 → N),因此不进这张表、也不算新对象。理由见本节末。 + +| 对象 | 是什么 | 产生位置 | 被谁消费 | +|---|---|---|---| +| `Account` 内容账号 | 管**内容属性**的主体:账号设定(定位/风格/受众/偏好与红线/长期记忆)。🔴 **平台不属于它** —— 它下面挂 1 → N 个**平台账号**,平台账号是**子项、不是新对象** | P6 | P1、P4、P5、P7 | +| `Benchmark` 对标号 | 被盯住的一个对标账号 | P2(F1 录入监控名单) | P2 | +| `Topic` 选题 | 选题库里的一条信息(⛔ 不止「一条待做选题」),含它的来源与**分类**(§三 F2) | P2(F1 异常值、F2 选题库、F3 评论洞察) | P4 | +| `Asset` 资产条目 | 拆解出来的可复用写法,分角度/结构/开场白/标题四区 | 🔴 **P2/P3/P4 均可**(任何页拆出资产都可就地入库;资产库页是**统一管理**的地方,⛔ 不是唯一入库口) | P4 | +| `Content` 内容 | 一条从选题长出来的内容,含它的创作环节位置 | P4(F6) | P5、P7 | +| `ContentVersion` 内容版本 | 一次改稿或一次多平台账号展开产生的一版 | P4(F7、F8) | P5、P7 | +| `PublishTask` 发布任务 | 一次「把这些版本发出去」的任务,含**发布渠道**(渠道 = 平台账号) | P5(过 F5 闸门后) | P7 | +| `PublishRecord` 发布记录 | 谁在什么时候确认发了哪一版 | P5(F13) | P7 | +| `Performance` 表现数据 | 一条内容发出去之后的真实读数 | P7(从平台读回,读不到则手工录入) | P1、P6、P7 | +| `Review` 复盘结论 | 系统归因加人工裁决后写下的那条结论 | P7(F10) | P1、P2、P6 | +| `Campaign/Order` 商单与收支 | 一条内容带的商单与钱的口径 | P7(F12) | P1、P7 | + +**平台账号写在这里说清楚(它是子项,不进上表、不进对象计数)**: + +- **内容账号** = 管**内容属性**的(主要是账号设定:内容做成什么样)。定位、风格、受众、偏好与红线、长期记忆都是内容属性;**平台不是**。 +- **平台账号** = **发布的渠道** —— 三方平台上的账号,**发布具体内容用的就是它**。每条带三样:**平台 + 登录态 + 授权状态**。 +- **两者的关系是一对多**:一个内容账号 → N 个平台账号。同一个人设在多个平台运营,靠这条表达。 +- **为什么不做成独立对象**:做成对象的话对象字典要 11 → 12,还要重定它与 `ContentVersion`/`PublishTask`/`PublishRecord` 的边界、把 20 条流转契约重过一遍;换来的只是概念上更整齐。做成子项清单,**对象数不变,照样表达得出「一个人设多个平台号」**。 +- ⚠️ 由此**「渠道」这个词从此有确定含义 = 平台账号**,⛔ 不再用「账号 × 平台」这种把两个概念拼一起的说法。 + +**三条传递规则**(全篇只要写流转就按它写): + +1. 跨页面只传 ID 加必要上下文,不传页面临时状态。 +2. 一个对象只有一处**权威数据**。别处要用,是去消费它,不是各存一份。🔴 这一条管的是**权威数据只有一个源**,⛔ **不管写入动作发生在哪一页** —— 资产条目可以在 P2/P3/P4 任何一页就地入库(写入动作的地点不限),但它的**权威记录只有一份**,统一由资产库页管(§一 第 4 条)。 +3. 目标页接到 ID 之后必须能自己把状态恢复出来 —— 恢复不出来,说明这个对象的产生位置写错了。 + +--- + +## 三、功能清单(14 条,按场景) + +字段从上到下固定八样:功能名 / 来自哪条场景 / 优先级 / 核心业务对象 / 归属页 / 状态流转 / 验收要点 / 跨哪些页面,最后跟一条「治理」。 + +优先级只给 P0/P1/P2 加一句可复述的判据,⛔ 不填数字(本项目没有任何数据源)。 + +### S1 找选题 + +#### F1 对标账号监控与爆款异常值识别 + +- **功能名**:盯住几个对标账号,把「数据远高于它平时水平」的内容挑出来。 +- **来自哪条场景**:S1 +- **优先级**:P0 —— 判据:不做则 S1 整条办不成。 +- **核心业务对象**:`Benchmark` 对标号(连带产出 `Topic` 候选) +- **归属页**:P2 选题雷达 +- **状态流转**:`idle → fetching → hit / miss`。事件=刷新、恢复自动更新;守卫=平台授权有效(🔴 **依赖 A2**,见 §六);失败 ⇒ 迁 `failed`。 +- **验收要点**:录入一个对标号后,能看到它近 3 天的更新;能指出哪几条是异常值(标注了它相对该号平时水平的倍数);刷新失败时有明确提示而不是静默空列表。 +- **跨哪些页面**:P2 +- **治理**:失败恢复=退避重试 3 次后转「手工录入对标号」的降级路径;持久化=监控名单与历史异常值落本地(不落全局);并发=同一对标号同时拉取走队列串行,不并发写;幂等=按「对标号 + 内容标识」去重;超时=`fetching` 上限 90 秒(设计值,实现可调),超时转 `failed`;不可逆=不涉及。 + +#### F2 选题库与灵感速记 + +- **功能名**:凡是**对选题有帮助的信息**都能收进来,再按分类把它理顺。 +- **来自哪条场景**:S1、S2 +- **优先级**:P0 —— 判据:不做则选题无处落地,S1 与 S2 都断在最后一步。 +- **核心业务对象**:`Topic` 选题(🔴 V4 放宽:一条 `Topic` = **选题库里的一条信息**,⛔ 不止「一条待做选题」) +- **归属页**:P2 选题雷达(速记入口在全局可达的位置,见 `2b-界面布局-新版.md` §四) +- **容纳范围与分类(🔴 2026-10-09 用户口径新定)**: + - **容纳范围**:凡是「对选题有帮助的信息」都收 —— 灵感、对标观察、数据异动、平台风向…(用户原话:「选题库里面可以是对选题有帮助的任何信息 分类区分就好」)。 + - **随手记仍落选题库**:⛔ **不新增「待整理」状态**、⛔ **不做多去向选择**(不要求用户当场判「这是选题还是资产还是对标」)。随手记的默认落点是选题库里的**「灵感」类**。 + - **靠分类区分**:分类是**一条信息的属性**,不是一道中途关卡。两个维度**正交**,都落在选题库内: + - **进度**(沿用现版):`待做/在写/已用` —— 回答「这条做到哪一步了」。 + - **类型**(V4 新增):`选题/对标线索/评论洞察/数据异动/灵感` —— 回答「这条是什么、下一步去哪」,每类自带一个后续动作: + ① **选题** ⇒ 转入创作; + ② **对标线索** ⇒ 去资产库拆解; + ③ **评论洞察** ⇒ 采纳成选题; + ④ **数据异动** ⇒ 参与选题判断(做或不做同题); + ⑤ **灵感** ⇒ 续写,或升级成上面任一类型(**随手记的默认落点**)。 + - ⚠️ 分类的**呈现方式**(放在哪、怎么切)由③段定,②段只定「两个维度、五类、每类的后续动作」。细节见 `2b-界面布局-新版.md` §五 P2。 +- **状态流转**:`draft → 待做 → 在写 → 已用 / 弃用`。事件=记录、转待做、转在写、标已用、弃用;守卫=转「已用」需已关联到一条内容;弃用可恢复(可逆)。🔴 **类型与进度是两个维度**:改类型不改进度,改进度不改类型。 +- **验收要点**:连着记 5 条灵感,重启后 5 条都在;一条灵感能被标记为「已用」并追到它变成了哪条内容;一条灵感能被升级成一个「选题」类条目而**不用换库、不用多选一次去向**;按类型筛一遍,五类各自的后续动作都点得下去。 +- **跨哪些页面**:P2(入口全局可达) +- **治理**:失败恢复=本地写入失败时保留输入内容,不丢字;持久化=落本地知识库目录,刷新与重启后仍在;并发=同一人两个入口同时改 ⇒ 乐观重试(写临时文件 + 原子替换 + 回读核对),⛔ 不用文件锁(本机实测会卡死);幂等=同一条灵感重复提交按内容 hash 去重;超时=无中间态;不可逆=不涉及(删除走可恢复的「弃用」)。 + +#### F3 评论区洞察找选题 + +- **功能名**:从一条内容的评论区里,把反复出现的问题挑成选题。 +- **来自哪条场景**:S1 +- **优先级**:P1 —— 判据:不做仍能从 F1 得选题,只是少一路输入。 +- **核心业务对象**:`Topic` 选题(原料是评论里的 `Insight`,它不进对象字典 —— 它只在本功能内部存在,一出候选就变成 `Topic`) +- **归属页**:P2 选题雷达 +- **状态流转**:`idle → 抓取中 → 已出候选 → 已采纳 / 忽略`。事件=抓取、采纳、忽略;守卫=设定过「最多获取条数」与「样本排序」;🔴 **依赖待复核第 7 条**(数据来源与频率未定)。 +- **验收要点**:给一条视频,能按「点赞最多」取出前 N 条评论并给出至少一条可采纳的候选选题。 +- **跨哪些页面**:P2 +- **治理**:失败恢复=抓取失败转手工粘贴评论;持久化=候选选题落本地;并发=同一内容同时抓取走队列;幂等=按「评论标识」去重;超时=抓取中上限 60 秒(设计值);不可逆=不涉及。 + +### S2 选题进资产库 + +#### F4 爆款拆解与资产库 + +- **功能名**:把一条爆款的写法拆开,存成下次能直接拿的东西。 +- **来自哪条场景**:S2 +- **优先级**:P0 —— 判据:不做则 S2 整条办不成;`1a` §六 F4 注明「这一条决定了『越用越准』」。 +- **核心业务对象**:`Asset` 资产条目 +- **归属页**:P3 资产库 🔴 **V4 写清两件事**: + 1. **资产库页的职责是「统一管理」** —— 分类分区、检索、单条详情、来源与引用关系、维护。⛔ 它**不再是唯一的入库口**。 + 2. **入库动作不限页** —— P2(对标内容发起拆解)、P4(创作时沉淀写法)产生的资产都可以**就地入库**;不管在哪一页写进去,落下来的仍是**同一份**资产条目、统一由 P3 管。 + ⚠️ **「入库不限页」⛔ 不等于「归属页有多个」**:归属页按「谁统一管它」定,仍是 P3;别的页只是入口(对应 §一 第 4 条)。 +- **状态流转**:`未拆 → 拆解中 → 待入库 → 已入库 / 退回`。事件=发起拆解、入库、退回;守卫=入库前过门禁(见治理);退回后原件保留。 + 🔴 资产库本身有四个分区(角度、结构、开场白、标题),各区条目独立流转,互不阻塞。 +- **验收要点**:拆完一条爆款,四个分区里各能看到至少一条新条目;条目的原文与出处可回溯;拿 20 条真实爆款入库,隔一周回来能找回想要的那条;**在选题页就地拆解入库的一条,在资产库页照样能检索、能引用**。 +- **跨哪些页面**:P2、P3、P4(入库动作在任一处都能发生)+ P4(消费) +- **治理**:失败恢复=拆解失败保留原文,可重试;持久化=入库结果落本地,带原文与出处链接;并发=同一素材重复拆解按素材 hash 幂等;幂等=同一条目重复入库不产生副本;超时=拆解中上限 180 秒(设计值,长任务),超时转 `待入库` 并保留中间结果;不可逆=**入库前设门禁**(对策 R3):无出处的、原文缺失的一律先设 `draft`,`draft` 可删,`已入库` 删除需二次确认。 + +### S3 走完创作流水线 + +#### F6 创作流水线 + +- **功能名**:把一条选题从「聊思路」一路做到成稿,文案、标题、封面齐。 +- **来自哪条场景**:S3 +- **优先级**:P0 —— 判据:不做则 S3 整条办不成。 +- **核心业务对象**:`Content` 内容 +- **归属页**:P4 创作台 +- **状态流转**:`选题态 → 思路态 → 文案态 → 标题态 → 封面态 → 检查态 → 成稿态`;每一态可回退到上一态。事件=推进、回退;守卫=**推进到「检查态」前文案与封面必须都有**(封面缺 ⇒ 提示但不硬阻);成稿态可再编辑(回 `文案态`)。 + 🔴 这条守卫是业务规则,③段原型现在的无条件推进要按它改(现状 `D1`)。 +- **验收要点**:一条选题能一路走到成稿,中途不必离开这一处;每一步的产物都存得住;用户全程不需要自己选技能。 +- **跨哪些页面**:P4 +- **治理**:失败恢复=任一步 AI 调用失败保留已产出内容,可重试该步;持久化=每一步的产物落本地并按内容 id 归档;并发=同一条内容两个窗口同时改 ⇒ 写临时文件 + 原子替换 + 回读核对,检测到覆盖则提示;幂等=重复点「起标题」生成新版本而不覆盖(接 F8);超时=任一步上限 180 秒(设计值),超时保留中间结果;不可逆=不涉及(这一步没有对外动作)。 + +#### F8 内容与素材的版本管理 + +- **功能名**:改稿产生新版本,旧版本还在。 +- **来自哪条场景**:S3、S4 +- **优先级**:P1 —— 判据:不做则场景办得成但要多绕(靠手工另存,容易盖掉)。 +- **核心业务对象**:`ContentVersion` 内容版本 +- **归属页**:P4 创作台 🔴 **归属收紧**:上一版写「P4、P5」,本版只归 P4。存版本这个动作产出版本对象,版本对象的产生位置在 P4;P5 只是拿到已经存在的版本去发。 +- **状态流转**:`v1 → v2 → … → 当前版`;每个版本可标「当前」。事件=编辑保存、切换当前版;守卫=切换当前版不影响已发布记录指向的版本;终态可再次编辑(回出新版本)。 +- **验收要点**:改一版再改一版,两版都在;已发布的那条记录仍指向它当时用的版本;能看出某一版是基于哪一版改的。 +- **跨哪些页面**:P4 +- **治理**:失败恢复=保存失败保留编辑中内容;持久化=全部版本落本地,不覆盖;并发=同一条内容两处同时保存 ⇒ 后保存的产生新版本,同时提示「上游已变」(对应 1b 里 `stale` 的做法);幂等=同样内容重复保存不产生新版本;超时=无中间态;不可逆=**删除某个版本需二次确认**。 + +#### F14 录制卡片与画板 + +- **功能名**:把成稿变成一张对着讲的知识卡片。 +- **来自哪条场景**:S3 +- **优先级**:P2 —— 判据:不做不影响 S3 办成,只是更好用。 +- **核心业务对象**:`Content` 草稿(产出的是这条内容的一个呈现,不是新对象) +- **归属页**:P4 创作台 🔴 **归属改了**:上一版标 P2,本版归 P4,入口可以留在 P2。 + 判据用第 2 条:它动的是创作过程中的内容生产,不是选题发现能力。P2 能有的只是一颗「开始创作」的动作入口,功能本身不归 P2。 + 这条同时把现状 `D3` 的四处不一致收成一处:①段场景里在、②段功能清单里在、②段页面骨架里在(本版把它写进 P4 的板块)、③段要跟着补进创作环节。 +- **状态流转**:`无 → 已生成 → 已同步`。事件=生成、同步到画板;守卫=成稿态才可生成。 +- **验收要点**:一条成稿能生成卡片;卡片能落到画板里被打开。 +- **跨哪些页面**:P4(入口可在 P2) +- **治理**:失败恢复=生成失败可重试;持久化=卡片与画板落本地;并发=同一内容重复生成按内容版本幂等;幂等=同版本不重复生成;超时=上限 60 秒(设计值);不可逆=不涉及。 + +### S4 一份母版变多份 + +#### F7 一份母版到多平台账号版本 + +- **功能名**:母版改一次,按各**平台账号**的口径各出一版。 +- **来自哪条场景**:S4 +- **优先级**:P0 —— 判据:不做则 S4 整条办不成。 +- **核心业务对象**:`ContentVersion` 内容版本 +- **归属页**:P4 创作台 🔴 **归属整条改了**:上一版是「P4 出成稿、P5 展开并逐版确认」,两头各做一半,P4 侧连入口都没有(现状 `C4`/`C6`)。本版一句话分清:**P4 决定发什么版本,P5 决定怎么把这个版本发出去。** + 展开这个动作发生在 P4(母版 → 版本策略 → **平台账号** → 生成各版),P5 只负责拿已经存在的版本去检查、去发。 +- **展开单位(🔴 2026-10-10 用户口径改)**:**按平台账号展开** —— 一个内容账号下面的**每个平台账号各一版**。 + 用户原话:「**一个内容账号 投放时应该有多个平台账号用于分别投放**」。 + ⛔ 不再写「账号 × 平台」:那是把「内容账号」与「平台」当成两个正交维拼起来,概念分开之后这个组合**天然不存在**(一个抖音号不可能是 B 站号)。 + ⚠️ 「分别投放」是**靠「分别成版」实现的**,⛔ 不是靠「一个版本同时发多处」。 +- **状态流转**:`母版 → 已展开(多版本)→ 逐版确认 → 就绪`。事件=展开、逐版编辑、确认;守卫=**每个版本必须绑一个内容账号 + 它下面的一个平台账号**(上一版写「一个账号 + 一个平台」,V4 按两个概念分开后的口径改);未确认的版本不许进发布闸门。 + 🔴 依据界线(照 1a 复核后的写法):Easel 发布中心**直证的是「多平台」**(一处编辑、八端预览,源码级 + 界面级);**「多账号」的依据是 Easel 的多画像支持加本产品的矩阵需求**,发布中心没看到逐账号变体。 +- **验收要点**:母版改一次,各平台账号的版本跟着更新;一个内容账号下面挂了 3 个平台账号,展开就出 3 版;改漏了某个平台账号能被发现;超限的地方当场标出来。 +- **跨哪些页面**:P4(展开与逐版确认)、P5(拿这些版本去发) +- **治理**:失败恢复=展开中断保留已生成的版本;持久化=每个版本独立落本地;并发=两处同时展开按「母版版本 + 目标平台账号」幂等;幂等=同母版同平台账号不重复展开;超时=展开上限 120 秒(设计值);不可逆=不涉及(确认可撤回,未发布的版本可删,删除需二次确认)。 + +### S5 发之前先过闸 + +#### F5 发布前分级闸门 + +- **功能名**:发之前,硬的拦住、软的只提醒。 +- **来自哪条场景**:S5 +- **优先级**:P0 —— 判据:不做则 S5 整条办不成。 +- **核心业务对象**:`PublishTask` 发布任务 +- **归属页**:P5 发布中心 +- **界线(照 1a 复核后的写法,⛔ 不是旧版措辞)**:硬闸管**敏感信息**(账号密钥、内部路径这类),不过就不许发;软闸管**人设一致性**(低于阈值只告警,不阻断)。⚠️ 竞品里**没有「敏感词检测」,也没有「事实检测」**——照旧版写会把功能带偏成一个竞品池里没人做过的「事实核查器」。 +- **状态流转**:`未检 → 检查中 → 通过 / 有硬拦 / 有软劝`。事件=发起检查、改完复检;守卫=有硬拦项时「去发布」不可用;软劝不阻断但要在发布确认页可见。硬拦项改完才能过。 +- **验收要点**:一份带敏感信息的稿子会被拦住且说得出是哪一处;一份人设偏移的稿子只提醒、不拦;改完能复检并通过。 +- **跨哪些页面**:P5 +- **治理**:失败恢复=检查本身失败按**不过**处理(fail-closed,宁拦不放);持久化=每次检查结果留痕,随发布记录一起存;并发=同一内容重复检查以最后一次为准;幂等=同一版本重复检查结果一致;超时=检查上限 60 秒(设计值),超时按不过处理;不可逆=**「去发布」这一步必须人确认**(read-first / draft-first)。 + +#### F13 发布留痕与人工确认记录 + +- **功能名**:谁在什么时候确认发的、发的是哪一版,查得到。 +- **来自哪条场景**:S5 +- **优先级**:P1 —— 判据:不做则场景办得成但要多绕(靠聊天记录回溯,且回溯成本高)。 +- **核心业务对象**:`PublishRecord` 发布记录 +- **归属页**:P5 发布中心(产生记录)、P7 复盘台(查记录 —— 原 P8 记录与对账整页已并入 P7,见 `2b` §五) +- **一版一路(🔴 2026-10-10 用户口径新定,V4 显式写出来)**:**一个渠道(=一个平台账号)只对应一个版本。** 因为版本是**按平台账号展开**的(F7),所以「渠道」由版本**唯一确定** ⇒ `PublishRecord` **不加渠道字段**,它记的「哪一版」已经说明是哪个渠道。 + 用户原话:「一条内容对应多个发布渠道」⇒ 主体是**内容**,一条内容对应多个渠道;而每个渠道各有一版、各产生一条发布记录。⛔ 不写成「一个版本同时发多处」。 +- **状态流转**:`草稿 → 待审 → 已确认 → 已发布 → 已归档`。事件=送审、确认、登记发布、归档;守卫=`已发布` 需要先有「已确认」记录;**组织级急停**可把任意 `待审` 打回 `草稿`。 +- **验收要点**:每条发布都能查到确认人与时间;能看出这条发的是哪一版;**一条内容发了 3 个渠道 ⇒ 有 3 条记录,每条记录指向它自己那一版,靠版本就能分清渠道**;急停能拦住所有待审项,恢复后之前的草稿还在。 +- **跨哪些页面**:P5、P7 +- **治理**:失败恢复=登记失败保留草稿状态;持久化=审计轨迹落本地,只追加不改写;并发=同一内容两处送审按「内容版本」幂等;幂等=重复确认同一版本不产生第二条记录;超时=`待审` 上限 72 小时(设计值),超时提醒发起人,不自动放行;不可逆=**发布、删帖、组织级急停三件事形态不一样,别压成一句**:发布是人的动作;删帖带破坏性标注,需二次确认;急停的触发与恢复都只有人能做。 + +### S6 效果回写 + +#### F9 多账号画像、平台账号与记忆 + +- **功能名**:每个**内容账号**有自己的口径和记忆,互不覆盖;它下面的**平台账号**(发布渠道)也在这里维护。 +- **来自哪条场景**:S6、S7 +- **优先级**:P0 —— 判据:不做则 S6 整条办不成(表现无处可回)。 +- **核心业务对象**:`Account` 内容账号(连带它的长期记忆,以及它下面的**平台账号子项**) +- **归属页**:P6 账号画像 +- **界线(🔴 2026-10-10 用户口径新定)**: + - **内容账号管的是内容属性** —— 账号设定(定位/风格/受众/偏好与红线/长期记忆)。**平台不属于它**。 + - **平台账号是发布的渠道** —— 每条带**平台 + 登录态 + 授权状态**。登录态归它(能不能发出去是它的事),内容账号不带登录态。 + - 一个内容账号 1 → N 个平台账号;**同一个人设在多个平台运营**靠这条表达。 +- **状态流转**:`空 → 已建 → 使用中 →(复盘回写)→ 使用中`。事件=建画像、编辑、被复盘回写;守卫=一个账号一份画像,账号标识唯一;回写只追加记忆条目,不改历史结论。 + 🔴 **平台账号子项另有一条状态**:`未接入 → 已登录 / 登录失效 → 已授权 / 授权到期`。守卫=**授权失效的平台账号不许进发布闸门**(P5 发不出去这件事在这里拦)。 +- **验收要点**:两个内容账号各自的画像互不影响;一条内容复盘后,对应账号的画像里多出一条记忆;并排跑两个账号的创作,谁都不覆盖谁;**一个内容账号下面挂 3 个平台账号,各自带自己的登录态与授权状态、互不串台**。 +- **跨哪些页面**:P6 +- **治理**:失败恢复=保存失败保留编辑内容;持久化=**记忆作用域收敛到画像目录,⛔ 不写全局文件**(对策 R4:多账号并发写全局会互相覆盖);并发=多账号并行读同一份画像,写只写自己那一份;幂等=同一条记忆重复回写按内容 id 去重;超时=无中间态;不可逆=删除画像需二次确认(会连带删它累积的记忆与它的平台账号接入信息)。 + +#### F10 效果复盘与归因回写 + +- **功能名**:一条内容跑完,把它的表现读回来,写成这个账号的经验。 +- **来自哪条场景**:S6 +- **优先级**:P0 —— 判据:不做则 S6 办不成,整个闭环断在最后一步。 +- **核心业务对象**:`Review` 复盘结论(原料是 `Performance` 表现数据) +- **归属页**:P7 复盘台 +- **状态流转**:`待复盘 → 读数据中 → 已归因 → 已裁决 → 已回写`。事件=发起复盘、人工裁决、回写;守卫=先有发布记录(F13);**回写前必须人确认归因结论**(`Review.confirmed = true` 才允许回写)。 + 🔴 **顺序写死了**:表现数据 → 系统归因 → 人工裁决 → 允许回写。上一版只写了「回写前必须人确认」,但没说清裁决是回写的前置开关还是只留痕;③段原型因此按「只留痕」实现(现状 `D2`)。本版按业务规则定为**前置开关**:没有人工裁决,回写这一步不成立。 + 🔴 本组**只有 Easel** 做成了这个闭环(源码级),⛔ 不写成「多家都做了」。 +- **验收要点**:一条已发布内容能复盘出结论;结论能回写到对应账号的画像;回写后下一轮做这个账号时能看到这条经验。 +- **跨哪些页面**:P7、P6(回写的落点) +- **治理**:失败恢复=数据读不到时降级为手工录入表现;持久化=复盘结论与回写记录落本地;并发=同一条内容重复复盘按内容 id 幂等;幂等=同一次复盘重复回写不重复追加记忆;超时=读数据上限 90 秒(设计值),超时转手工录入;不可逆=**回写会改画像记忆,需人确认**(不自动写)。 + +### S7 看整个矩阵 + +#### F11 矩阵级看板 + +- **功能名**:一屏回答每个账号今天该发什么、发了什么、效果如何。 +- **来自哪条场景**:S7(🔴 **整条标【假设】**,待复核第 5 条) +- **优先级**:P1 —— 判据:不做则场景办得成但要多绕(逐账号点进去看);若第 5 条复核为「不需要矩阵级视图」,本条可整体砍掉。 +- **口径写实(本版改了)**:状态标 **待验证**,定位标 **非主链能力**。它不承担主生产链上的任何一环,也不该被包装成「已经有了的完整功能」。影响页面只有 P1。 +- **核心业务对象**:`Performance` 表现数据(只读,不产生对象) +- **归属页**:P1 矩阵总览 +- **状态流转**:无状态(只读视图)。事件=进入、切换账号、下钻。 +- **验收要点**:一屏能看到矩阵下每个账号的今日状态与效果;数据不新鲜时看得出来。 +- **跨哪些页面**:P1 +- **治理**:失败恢复=数据源不可用时显示「数据未更新」并给出时间戳,⛔ 不显示空白冒充正常;持久化=视图本身不落库,只读上游;并发=只读,无冲突;幂等=只读;超时=无;不可逆=不涉及。 + +### S8 商单与内容对账 + +#### F12 商单与收支记录、内容对账 + +- **功能名**:一条内容带了商单,内容、发布记录和收支对得上。 +- **来自哪条场景**:S8(🔴 **整条标【假设】**,待复核第 6 条;另依赖 **A3**) +- **优先级**:P2/Deferred —— 判据:不做不影响场景办成,只是更好用。本条不进第一版主链,标 `Deferred`,等第 6 条复核结果再定去留。 +- **核心业务对象**:`Campaign/Order` 商单与收支 +- **归属页**:P7 复盘台(原 P8 记录与对账整页已并入 P7,见 `2b` §五) +- **状态流转**:`未登记 → 已登记 → 待结算 → 已结算`。事件=登记、核对、标结算;守卫=`已结算` 需内容与发布记录都已关联;可反结算(可逆)。 +- **验收要点**:一条带商单的内容能查到它的发布记录与收支;对账时不需要翻聊天记录。 +- **跨哪些页面**:P7 +- **治理**:失败恢复=登记失败保留输入;持久化=收支记录落本地;并发=同一条记录两处改按记录 id 幂等;幂等=同一内容同一口径不重复登记;超时=无中间态;不可逆=标「已结算」后修改需二次确认。 + +--- + +## 四、功能归属总表(F1–F14) + +这张表是本版新加的。上一版的归属散在每条末尾的「跨哪些页面」里,没有一处能一眼看全,也就没法复核。 + +| 功能 | 来自 | 核心业务对象 | 归属页 | 与上一版的差异 | +|---|---|---|---|---| +| F1 对标账号监控与爆款异常值识别 | S1 | `Benchmark` | P2 | 无 | +| F2 选题库与灵感速记 | S1 S2 | `Topic` | P2(入口全局可达) | 🔴 **V4 改了口径**:容纳范围放宽成「对选题有帮助的任何信息」,靠**进度 × 类型**两个维度分类(⛔ 不新增「待整理」状态) | +| F3 评论区洞察找选题 | S1 | `Topic` | P2 | 无 | +| F4 爆款拆解与资产库 | S2 | `Asset` | P3 | 🔴 **V4 改了**:`Asset` 产生位置由 P3 改成 **P2/P3/P4 均可**;P3 的职责由「入库口」改成「统一管理」 | +| F5 发布前分级闸门 | S5 | `PublishTask` | P5 | 无(对象定义随 §二 更新) | +| F6 创作流水线 | S3 | `Content` | P4 | 无 | +| F7 一份母版到多平台账号版本 | S4 | `ContentVersion` | **P4** | 🔴 **V4 改了**:展开单位由「账号 × 平台」改成**按平台账号展开**;守卫改成「内容账号 + 它的一个平台账号」 | +| F8 内容与素材的版本管理 | S3 S4 | `ContentVersion` | **P4** | 无 | +| F9 多账号画像、平台账号与记忆 | S6 S7 | `Account` | P6 | 🔴 **V4 改了**:功能扩到「平台账号(发布渠道)也在这里维护」;`Account` 改写成**内容账号**,平台账号做成它下面的子项 | +| F10 效果复盘与归因回写 | S6 | `Review` | P7 | 无 | +| F11 矩阵级看板 | S7【假设】 | `Performance` | P1 | 无 | +| F12 商单与收支记录、内容对账 | S8【假设】 | `Campaign/Order` | **P7** | 无(V4 起归属理由由「同类事」给出:发布之后看收入) | +| F13 发布留痕与人工确认记录 | S5 | `PublishRecord` | P5(产生)/**P7**(查) | 🔴 **V4 改了**:补「**一版一路**」—— 渠道由版本唯一确定,`PublishRecord` **不加渠道字段** | +| F14 录制卡片与画板 | S3 | `Content`/草稿 | **P4**(入口可在 P2) | 无 | + +七页各自「核心对象」与「不应该负责」两栏在 `2b-界面布局-新版.md` §五,本份不重复。 + +--- + +## 五、与上一版的实质差别(逐条) + +这一版不是同一批句子换了个说法。下面逐条写改在哪,能对照原文核。 + +**V4 本轮(相对 V3 · 八条口径)** + +1、**归属判据换了一条**(§一 第 2 条):由「看它动的是哪个对象」改成「**这是哪一类事,同类事放同一页**」。对象那层**保留**,但降为**落地手段**。拿新判据复核七页 ⇒ **页集合一个没动**(七页各自都是「一类事」)。 +2、**新增 §一 第 4 条**:「一个对象只有一处」管的是**权威数据**,⛔ 不管写入动作发生在哪一页。这条是**新增**的,上一版没有(它正是「资产入库不限页」与「一处产生」看似打架的根因)。 +3、**`Asset` 的产生位置由 P3 改成「P2/P3/P4 均可」**,并写明资产库页的职责是**统一管理**、不再是唯一入库口(§二 + §三 F4)。 +4、**`Account` 整行重写**(§二):由「矩阵里的一个账号,带它的画像与长期记忆」改成「**内容账号**:管内容属性的主体,**平台不属于它**」;**平台账号**做成它下面的**子项清单**(带平台 + 登录态 + 授权状态),**不加对象**(仍是 11 个)。新增一段专门说明两个概念的分野与「为什么不做成独立对象」。 +5、**`PublishTask` 的定义改了**(§二):由「含目标账号与平台」改成「含**发布渠道**」(渠道 = 平台账号)。 +6、**`Topic` 的定义放宽**(§二):由「一条待做/在写/已用的选题」改成「**选题库里的一条信息**」,并带上**分类**。对应 §三 F2 重写成一个「容纳范围 + 两个正交分类维度(进度 × 类型,五类各带后续动作)」的条目。 +7、**F4 的归属页段落重写**:写清「资产库页=统一管理」与「入库动作不限页」,并明说**「入库不限页」不等于「归属页有多个」**。验收要点与「跨哪些页面」同步。 +8、**F7 改名并改展开单位**:「一份母版到多账号多平台版本」→「**一份母版到多平台账号版本**」;守卫由「一个账号 + 一个平台」改成「**一个内容账号 + 它下面的一个平台账号**」;幂等键同步改成「母版版本 + 目标平台账号」。⛔ 全文不再出现「账号 × 平台」。 +9、**F9 改名并扩范围**:「多账号画像与记忆」→「**多账号画像、平台账号与记忆**」;新增界线段(内容账号管内容属性、平台账号是渠道、登录态归它);新增平台账号子项的状态流转(`未接入 → 已登录 / 登录失效 → 已授权 / 授权到期`)与守卫(授权失效不许进发布闸门)。 +10、**F13 补「一版一路」**:一个渠道只对应一个版本 ⇒ 渠道由版本唯一确定 ⇒ `PublishRecord` **不加渠道字段**。验收要点补「一条内容发 3 个渠道 ⇒ 3 条记录,靠版本分清渠道」。 +11、**§四 总表的「与上一版的差异」栏**重写,把 V2 那批差异折叠进历史(避免一张表里混着三个版本的说法)。 +12、**§九 更新**:上一轮遗留的三条待拍板(账号带不带平台 / `PublishRecord` 带不带渠道字段 / 要不要做定时)**前两条已随本次口径落定**;第三条(定时发布)按用户 2026-10-10 07:56 逐字「后续具体做投放功能的时候在说」**挂起**,并带上回收三字段。 +13、**功能清单仍是 14 条、编号一个没动**,优先级判据一个没改;治理六项覆盖不变。本轮动的是**判据、对象定义与三处措辞**。 + +**V3 本轮(相对 V2)** + +1、**P8 记录与对账整页并入 P7 复盘台**,页 ID 里不再有 P8。F12、F13 的归属页随之改:F12 由 P8 改 **P7**;F13 的「查记录」那一头由 P8 改 **P7**(「产生记录」仍在 P5)。 +2、**对象字典的「被谁消费」栏把 P8 全部并入 P7**:`Account`、`ContentVersion`、`PublishTask`、`PublishRecord`、`Performance`、`Campaign/Order` 六行里凡出现 P8 的,一律改 P7(§二)。对象本身一个没增没减,仍是 11 个。 +3、**导航改一层七项**(首页/选题/创作/投放/复盘/账号/资产),页集合由八页收成七页。本份只承接它对功能归属的影响;导航表见 `2b` §三。 +4、**功能与板块的对应写成可机检关系**。判据没变(仍看核心业务对象),变的是「每页每个板块承担哪条功能」被逐块写下来并由自检双向核(原型 `FN_HOME`/`FN_MAP`,`2b` 附自检 5b-3)。 +5、**功能清单仍是 14 条、编号一个没动**,优先级判据一个没改。本轮动的是归属页与页集合,不是功能本身。 + +**V2(相对 V1)** + +6、**新增「核心业务对象字典」(§二,11 个对象)**。V1 完全没有这一层,`1a` 与 `1e` 里也没有。它是本版所有归属判断和流转契约的地基。 +7、**新增「功能归属总表」(§四)**。V1 没有任何一处能一眼看全 14 条功能的归属。 +8、**新增三条判据(§一)**。V1 只说了「按场景组织、不按页面」,没说归属怎么判、跨页传什么。第 2、3 条是 V2 第一次写下来。 +9、**每条功能从六字段扩到八字段**,新增「核心业务对象」与「归属页」两栏。原来的「跨哪些页面」保留,但它现在只描述落点,不再承担归属判据。 +10、**F7 归属改了**:从两头各半改成 P4 单一归属,并写死分工「P4 决定发什么版本、P5 决定怎么发」。V1 `2b:283` 那句「在 P4 出成稿,在 P5 展开并逐版确认」按此作废。 +11、**F14 归属改了**:从 P2 改成 P4,入口可留 P2。 +12、**F8 跨页收窄**:从「P4 创作台、P5 发布中心」改成 P4。 +13、**F11 口径写实**:从一条 P1 的 P1 级功能,改标「待验证/非主链能力」。 +14、**F12 口径写实**:标 `P2/Deferred`,明确不进第一版主链。 +15、**F10 状态流转从三态扩到五态**(加了「已裁决」「已回写」分开),并把「裁决是回写的前置开关」写死。V1 只写「回写前必须人确认」,没写清是开关还是留痕 —— ③段就是照「留痕」实现的(现状 `D2`)。 +16、**F6 的守卫在条目里写实**:明确标出这条守卫要③段改(现状 `D1` 是无条件推进)。 + +**两个版本都没改的** + +17、14 条功能的编号、来自哪条场景、优先级判据,一个都没动。`1e` §四 的「场景 → 功能」反向核对依然成立。 +18、清单主体**仍按使用场景组织**(沿用 2026-10-06 用户定案),⛔ 没有改成按页面。GPT 的「按业务对象重新解耦」落在**归属判据**上,没落在清单组织方式上 —— 这两件事不同,没把它们混成一件事。 +19、六项治理全覆盖照旧,落点仍在功能条目内(§七 给了落点清单)。 +20、§六 的假设依赖、§八 的不做清单对照,条目数照旧(9 条假设、8 条不做对 13 条已拍板项)。 + +--- + +## 六、依赖假设的条目(逐条标出) + +⭐ 1a 的 9 条待复核与 A1–A4 **全部未经用户确认,⛔ 不当事实用**。本份凡依赖它们的条目列在下面,写清「依赖哪条、不成立会怎样」。 + +本版比上一版多说一层:这些假设不成立时,**受影响的核心业务对象也跟着变**,所以影响面不止那一页。 + +| 功能 | 依赖 | 假设内容 | 不成立会怎样 | +|---|---|---|---| +| F1 | **A2** + 待复核第 2 条 | 平台数据靠官方接口或授权方式拿 | 自动拉取这条路断,退化成手工录入对标号;`Benchmark` 与 `Topic` 的来源少一路,S1 的「不用刷榜」打折 | +| F10 | **A2** + 待复核第 2 条 | 同上 | 效果数据读不回来,`Performance` 只能手工录入,`Review` 的归因依据变弱,S6 降级 | +| F11 | **A1** + 待复核第 5 条 | 账号数 10–50;矩阵级视图确实需要 | 账号数超出 ⇒ P1 的组织方式要重设计;视图不需要 ⇒ F11 可整体砍掉,P1 页重画 | +| F9 | **A1** | 账号数 10–50 | 同 F11;且 `Account` 的数量与存储组织要跟着变 | +| F12 | **A3** + 待复核第 3、6 条 | 收支口径是「内容级」;商单对账进不进第一版 | 口径若是月级 ⇒ `Campaign/Order` 的对象粒度要重定,本条整条重做;不进第一版 ⇒ 保持 `Deferred` | +| F5 | **A4** + 待复核第 4 条 | 团队 5–20 人、审批不超过三层 | 审批层数超三层 ⇒ `PublishTask` 的审批模型要重做 | +| F13 | **A4** + 待复核第 4 条 | 同上 | 同上 | +| F3 | 待复核第 7 条 | 评论洞察的数据来源与频率未定 | 数据来源定不下来 ⇒ F3 退成手工粘贴评论 | +| (无功能) | 待复核第 8 条 | 「整合营销」含不含投放 | 若含投放 ⇒ 需要新增一条场景(`1e` §六),本份没有对应功能,⛔ 不编 | +| (策略层) | 待复核第 9 条 | 只服务一个机构自用 vs 可交付产品 | 影响 `1d-产品策略.md` §7、§9 与权限体系是否进第一版,不影响本份功能骨架 | + +**假设三归宿**(方法论要求,⛔ 不许长期悬空):上表 9 条**全部**落在「② 待实现且已排定确认时机」这一档 —— 确认时机统一为「②段收口时由主会话转用户一次性过;未过之前,③段不得把这些条目当硬约束用」。落「① 已确认」的:**无**。落「③ 已按假设落地」的:**无**。 + +--- + +## 七、六项治理覆盖核对 + +判据源 `state-machine.md` 的必答清单。⛔ 不留空,不适用写「不适用」。 + +| 治理项 | 落点(哪些功能显式写了) | 最要紧的一条 | +|---|---|---| +| 失败恢复路径 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F11 F12 F13 F14 | F5 走 **fail-closed**(检查失败按不过处理),本组唯一一条「宁拦不放」 | +| 持久化范围 | 全部 14 条 | F9 的**记忆作用域收敛到画像目录、不写全局**(对策 R4);F13 的审计轨迹**只追加不改写** | +| 并发冲突 | F1 F2 F3 F6 F7 F8 F9 F12 | 统一做法:写临时文件 + 原子替换 + 回读核对,⛔ 不用文件锁(本机实测会卡死) | +| 幂等 | F1 F2 F3 F4 F6 F7 F8 F9 F10 F12 F14 | F4 与 F8 的**重复入库/重复保存不产生副本、也不覆盖旧版** | +| 超时迁移目标 | F1 F3 F4 F5 F6 F7 F10 F13 F14 | F13 的 `待审` 超时**只提醒、不自动放行** —— 不可逆动作不许靠超时自动过 | +| 不可逆操作二次确认 | F4 F5 F8 F9 F10 F12 F13 | F5 + F13:**发布、删帖、组织级急停三件形态不同**,分别按「人的动作 / 二次确认 / 只有人能触发与恢复」处理 | + +补一条方法论要求的分工说明:**发布这个动作本身留在人手里**(read-first / draft-first,源码级);**删帖**带破坏性标注、属需二次确认的一类;**组织级急停**的触发与恢复都只有人能做。⚠️ 三件事的「人来做」形态不一样,⛔ 不压成一句话。 + +--- + +## 八、「不做」清单与①段已拍板项的逐条对照 + +**对照方法**:本份列出的「不做/移出/暂缓」共 **8 条**,逐条对 `1a-需求文档.md` 的已拍板项 **13 条**(来源:§一 不做什么 4 条 + §八 第一版不做 5 条 + §八 三个入口 1 条 + §三 三条差位的取舍结论 1 条 + §六 治理段「人来做」的三件事分开记 3 条 —— 去重后按条计)。 + +| # | 本份的「不做/移出/暂缓」 | 1a 原条目与口径 | 拟改口径 | 理由 | 差异 | +|---|---|---|---|---|---| +| 1 | 不做平台自动化代发 | §一 不做什么;§八 第一版不做 | 不变 | 走 F5 + F13 的人确认路径 | 无 | +| 2 | 不做矩阵级自动投放优化 | §八 第一版不做 | 不变 | 1b 里五家都没这一段证据 | 无 | +| 3 | 不做跨机构协作与权限体系 | §八 第一版不做 | 不变 | A4 假设团队不超过三层审批 | 无 | +| 4 | 不做移动端 App | §八 第一版不做 | 不变 | — | 无 | +| 5 | 不把平台数据抓回来做数仓 | §八 第一版不做 | 不变 | 只对接与留痕 | 无 | +| 6 | 不自建投放系统 | §一 不做什么 | 不变 | 只对接与留痕 | 无 | +| 7 | 不做个人版单账号工具 | §一 不做什么 | 不变 | 面向一个账号矩阵 | 无 | +| 8 | 第一版不铺「三个入口」之外的界面 | §八「这一版只留的三个入口」 | 不变 | 找选题 / 走创作流水线 / 看矩阵复盘 | 无 | + +**结论**:**8 条对照完,差异行 0**。没有一条涉及已拍板项的口径改动,因此没有「与已定决策的差异」表要交用户确认。 + +**一条待确认项**(不是「不做」,是「暂缓」,必须带回收三字段): +本份把 **F12** 标为 `P2/Deferred`。这是一条暂缓。 +- 复核人 = 主会话转用户 +- 复核时机 = ②段收口时一次性过 +- 结论落点 = 本文件 §三 F12 条目与 §六 依赖表 + +--- + +## 九、待与用户确认项 + +派活单要求:涉及改②段结构的三条「部分采纳」先按 GPT 的方向落地,但必须在文末单列。以下是本份范围内的全部待确认项,逐条给「为什么它没被自己拍板」和回收三字段。 + +🔴 **V4 先把上一轮遗留的三条待拍板交代清楚**(它们原本堆在这里没结论): + +- **「账号带不带平台」** ⇒ **已随 2026-10-10 用户口径落定**:账号分**内容账号**与**平台账号**两个概念,平台账号做成内容账号下的子项。本条**不再是待确认项**(§二 + §三 F9)。 +- **「`PublishRecord` 带不带渠道字段」** ⇒ **已落定为「不加」**:靠「一版一路」让渠道由版本唯一确定(§三 F13)。 +- **「要不要做定时发布」** ⇒ **挂起**,见下面第 7 项。 + +**1、②段要不要并成一份九节的「产品架构基线 V2」** +GPT 建议把②段合成一份,九节:导航结构/页面框架/功能清单/核心数据对象/状态机/页面流转契约/业务规则/异常与降级/待决事项。 +本版的处置:**内容照收,形态不收**。九节要的东西本版全部落下去了,只是分布还是两份 —— 导航、页面框架、流转契约进 `2b`;功能清单、数据对象、业务规则、异常降级、待决事项进 `2a`;状态机落在每条功能条目里。合成一份等于把「产品功能」与「界面布局」重新塞回去,而这两份是 2026-10-07 的用户定案。 +为什么不自决:合成会**新增文档层**,属于扩大可见面,得单独拍。 + +**2、六种流转类型(T1–T6)要不要进正文** +GPT 给了 Create/Open/Continue/Publish/Review/Trace 六型。本版只采纳了**三分类**(对象传递/上下文定位/状态完成),六型没进正文。 +为什么不自决:GPT 没把六型和②段那 20 条流转逐条对齐,直接搬进来就会在同一件事上造出第二份定义。要进就得先把 20 条逐条归型。 + +**3、两条新增流转要不要进②段** +GPT 的 P0 清单里有 `P7 → P1`(复盘结论 → 矩阵待办/异常/最佳内容)与 `P7 → P2`(复盘发现 → 下一轮选题)两条。第①棒逐条盘过的 18 条里**没有这两条** —— 它们是 GPT 新加的。 +本版的处置:写进 `2b` §六 的流转契约,但**逐条标了「新增·待确认」**。理由:不写进去,GPT 主张的那个「复盘反哺」闭环在文档上就是断的,第④步做界面对不上;写进去但不标,等于偷偷扩范围。 +为什么不自决:新增流转是扩范围,得用户点头。 + +**4、1a 的 9 条待复核 + A1–A4 仍未确认** +沿用上一版遗留(现状 `E2`)。本版按假设标注,没有把它当事实用。P1 的形态挂在第 5 条上,P7 第 10 板块(商单与收支)挂在第 6 条与 A3 上。 + +**5、「投放」这一段要不要补一条场景** +`1e` §六 明写的未闭环处:`1a` §一 的链路里有「投放」,§四 有「剪辑与投放」这个角色,但 §五 的场景里没有一条是投放岗的。本版不为它出功能(无依据就是编)。 +⚠️ 与第 7 项**不是同一件事**:本条问的是「有没有一条投放场景」(场景层),第 7 项问的是「要不要做定时发布这个具体能力」(功能层)。 + +**6(沿用上一版,未清):什么算「板块」的判据** +`2b:7` 原来那句「骨架冻结、③段不许新增板块」没有定义「什么算板块」,③段因此能在各页各长一层页壳而机检看不见(现状 `A1`/`A3`)。本版在 `2b` §四 把公共框架显式定义掉了,但**「公共框架 vs 业务板块」这条线本身,最终还要用户认一次**。 + +**7、定时发布:挂起(🔴 V4 新增的登记项)** +用户 2026-10-10 07:56 逐字:「**后续具体做投放功能的时候在说**」。 +⇒ **本版不为它加任何功能条目、字段或状态**(⛔ 不编一条 F15,⛔ 不在 `PublishTask` 里塞排期字段)。 +⇒ 它是**挂起**,不是「不做」:等真做投放功能时再议。挂起期间**谁都不许拿它当已定内容用**。 +- **复核人** = 主会话转用户 +- **复核时机** = 立项做投放功能时(⛔ 不是②段收口时) +- **结论落点** = 本文件 §三 F5/F7 附近 + `2b` §五 P5 + +**回收三字段**(本份第 1–6 项共用): +- 复核人 = 主会话转用户 +- 复核时机 = ②段收口时一次性过;第 3 条、第 5 条要赶在第④步动界面之前定 +- 结论落点 = 本文件 §九 与 `2b-界面布局-新版.md` §十 + +--- + +## 十、页面清单(跨页引用用的 ID) + +本份只写「跨哪些页面」,页面骨架在 `2b-界面布局-新版.md`。为免引用悬空,页 ID 列在这里: + +P1 矩阵总览|P2 选题雷达|P3 资产库|P4 创作台|P5 发布中心|P6 账号画像|P7 复盘台 + +**导航是一层七项**(首页/选题/创作/投放/复盘/账号/资产),项与页的对应见 `2b` §三。P8 记录与对账**已整页并入 P7 复盘台**,页 ID 里不再有 P8。 + +--- + +## 附:本份自检 + +- [x] 每条功能都追回①段《使用场景》(`1e` S1–S8),14 条全覆盖;`1e` §四 的反向核对(场景 → 功能)依然成立 +- [x] 每条功能八字段齐全(功能名 / 来自哪条场景 / 优先级 / 核心业务对象 / 归属页 / 状态流转 / 验收要点 / 跨哪些页面) +- [x] 功能归属有可复核的判据(🔴 V4 换成「一类事情放同一页」,对象降为落地手段),不是「哪页有按钮」 +- [x] **拿新判据复核过七页**:七页各自都是「一类事」,页集合没动(§一 第 2 条的复核表) +- [x] **八条口径逐条落到正文**:① 判据(§一 第 2 条)② 资产入库不限页(§一 第 4 条 + §二 `Asset` + §三 F4)③ 选题库分类(§二 `Topic` + §三 F2)④ 记录与对账属复盘不拆(§三 F12/F13,页面侧落 `2b` §五 P7)⑤ 渠道定义(§二 `PublishTask`)⑥ 账号两个概念(§二 + §三 F9)⑦ 目标选择两级(页面侧落 `2b` §五 P5)⑧ F7 展开单位 + F13 一版一路(§三) +- [x] **对象数仍是 11**:平台账号做成 `Account` 下的子项,没有新增对象 +- [x] 优先级只用 P0/P1/P2 加一句判据,零数字 +- [x] 「不做」清单逐条对照①段已拍板项,**给出对照条目数(8 对 13),差异行 0** +- [x] 六项治理全覆盖,且落在功能条目内(§七 给了落点清单) +- [x] 依赖假设的条目逐条标出(§六 9 条),每条带假设状态标注与「不成立会怎样」 +- [x] 待确认项逐条带齐 复核人 / 复核时机 / 结论落点;**定时发布单列为「挂起」并写明挂牌条件**(§九 第 7 项) +- [x] 上一轮遗留的三条待拍板(账号带不带平台 / `PublishRecord` 渠道字段 / 定时发布)**逐条交代了去向**,不留悬空 +- [x] 功能归属页里不再有 P8:F12 → P7,F13 的查记录那侧 → P7(产生侧仍 P5);对象字典的消费栏同步 +- [x] 每页每个板块承担哪条功能写清,并与 `2b` 的板块清单双向对得上(可机检 `FN_HOME`/`FN_MAP`) +- [x] 全文零视觉词(配色 / 字体 / 间距 / 组件样式 / 动效,一个未出现) +- [x] 未重开需求(grill 在①段)、未写页面结构(那是 `2b`)、未新增本段白名单外的文档 +- [x] 只读输入全部是只读使用,没改任何上游文件 + +*(说人话自评:46/50 直接性 10 / 节奏 8 / 信任度 10 / 真实性 9 / 精炼度 9 —— 判据源 `E:/ProgramData/.workbuddy/skills/humanizer-zh`,门槛 45。)* diff --git a/docs/pm/mcn-shortvideo-agent/归档-过期版/2b-界面布局__8a8412.md b/docs/pm/mcn-shortvideo-agent/归档-过期版/2b-界面布局__8a8412.md new file mode 100644 index 0000000..13ca1c8 --- /dev/null +++ b/docs/pm/mcn-shortvideo-agent/归档-过期版/2b-界面布局__8a8412.md @@ -0,0 +1,619 @@ +# 2b 界面布局(新版 V4) + +> 项目 slug:`mcn-shortvideo-agent` | ②段第 2 子步,产出 `prd/2b-界面布局.md` +> 本版在 V3 基础上**把用户 2026-10-09~10 的八条口径落到骨架与板块上**(选题库分类、资产入库不限页、投放页两级目标选择、账号页拆「画像五维 + 平台账号」、复盘页写死平铺)。 +> V3 本身是在 V2 基础上按用户口径改导航与页面归属(导航一层七项、P8 并入复盘、功能与板块一一对应)。 +> 上游决策见 `GPT-规划意见与采纳决策.md`(2026-10-08 23:54,采纳 24/部分采纳 3/不采纳 1)与 V2/V3 稿。V4 的口径原文:`用户口径裁决-5条回应.md`(2026-10-09)、`用户口径追加-账号是两个概念.md`(2026-10-10)。 +> 只读输入:①棒 `产品规划/现状梳理-板块·功能·操作路线.md`、②棒 GPT 意见与采纳决策、V2 版 `2b-界面布局-新版.md`、①段 `1a-需求文档.md` 与 `1e-使用场景.md`。 +> 判据源:`stage-requirements/SKILL.md` §2b + `assets/diagram-design/`(本份只给灰块骨架,不出图)。 +> 本份专管界面骨架:有哪几页、每页几个板块、板块怎么排、跨页带什么过去。⛔ 不写功能条目的有无与优先级(那是 `2a-产品功能-新版.md`)。 +> ⛔ **全文零视觉词** —— 配色 / 字体 / 间距 / 组件样式 / 动效,一个都没出现。本份只说「有哪些块、什么顺序、点它带什么过去」。 + +--- + +## 〇、一屏结论 + +- **页数、导航、流转条数都不动**:仍是七页、一层七项导航、20 条流转契约。**V4 改的是页内的板块构成与四页的板块文案**。 +- 🔴 **业务板块总数不变,仍是 39**:P2 由 5 块收成 4 块(「灵感速记」并进「选题库」,随手记的落点本来就是选题库),P6 由 4 块变 5 块(新增「平台账号」)⇒ 一减一加,**净变化 0**。逐页数见 §五 与 §九。 +- **P2 选题库**:容纳范围放宽成「对选题有帮助的任何信息」,分类用**进度 × 类型**两个正交维度(进度沿用 `待做/在写/已用`;类型是新加的 `选题/对标线索/评论洞察/数据异动/灵感`,各有各的后续动作)。⛔ 不新增「待整理」状态。 +- **P2 对标内容**:拆解结果**可就地入库**(资产库页是统一管理的地方,⛔ 不是唯一入库口)。 +- **P3 资产库**:页面职责由「存拆解结果」改成「**统一管理**资产条目」;⛔ 它不再是唯一入库口。 +- **P5 发布中心**:目标选择改成**两级** —— 先选内容账号,再勾它下面的**平台账号**(渠道)。数据摘要区跟着对齐成「目标渠道数/覆盖平台数」。 +- **P6 账号画像**:板块 2 由「画像六维」改成「**画像五维**」(去掉「平台」这一维);新增板块「**平台账号**」(带平台 + 登录态 + 授权状态)。 +- **P7 复盘台**:10 块**保持平铺、⛔ 不划子区**,并写死它属「**发布之后看数据与看收入**」这一类事。 +- 其余骨架照 V3:页面公共框架(Page Shell)不算板块;每页两栏「核心对象」「不应该负责」保留;「功能 ↔ 板块」仍可机检(原型 `FN_HOME`/`FN_MAP`)。 + +--- + +## 一、这一版骨架改了什么(五件事) + +**1、P6 增加一块「平台账号」,画像那一块由六维收成五维。**(P6 4 → 5 块) +账号按用户口径拆成两个概念:**内容账号**管内容属性(账号设定),**平台账号**是发布渠道。⇒ 「画像六维」去掉「平台」这一维,改成「**画像五维**」(定位/风格/受众/偏好与红线/长期记忆);平台账号单独成一块,列出一个内容账号下面的 N 个平台账号,每条带「平台 + 登录态 + 授权状态」。 +🔴 判据:平台账号自带三个属性和自己的动作(登录/授权/增删),不是画像里的一行值 ⇒ 它够一个板块;而它的核心对象仍是 `Account`,所以**归属页没变**(`2a` §三 F9)。 + +**2、P2 的「灵感速记」并进「选题库」,选题库按两个维度分类。**(P2 5 → 4 块) +用户口径:「选题库里面可以是对选题有帮助的任何信息 分类区分就好」+「随手记仍落选题库」。⇒ 随手记的落点本来就是选题库,⛔ 不必再单列一块。选题库仍是那一个板块,里面用**进度 × 类型**两个正交维度区分:进度沿用 `待做/在写/已用`;类型是新加的 `选题/对标线索/评论洞察/数据异动/灵感`,每类自带后续动作。⛔ 不新增「待整理」状态、⛔ 不做多去向选择。 +🔴 这一条**顺手订正了 V3 遗留的第 4 条**(P2 的板块清单把「灵感速记」列为第 5 块,同页信息分档表又把它标成「全局可达、不占板块」—— 两处打架)⇒ 现在板块清单与分档表一致:**随手记是全局可达的框架层入口(不占板块),它写进来的东西落选题库**。 + +**净计数**:P2 −1、P6 +1 ⇒ **总数仍是 39**。 + +**3、资产入库不限页,资产库页是统一管理的地方。** +用户口径:「所有页面有产生资产都可以 随时入库,资产库页是统一管理的地方」。⇒ P3 的页面职责与主操作由「存拆解结果」改成「**统一管理**」;P2 的「对标内容」块写清拆出来的结果可以**就地入库**(人不必先跑去资产库)。⛔ 资产库页**不再是唯一的入库口**。 +⚠️ 这与「一个对象只有一处产生」不冲突 —— 那一条管的是**权威数据只有一份**,⛔ 不管写入动作发生在哪一页(`2a` §一 第 4 条)。 + +**4、P5 目标选择改成两级,数据摘要区跟着对齐。** +用户口径:一个内容账号在投放时对应**多个平台账号**、分别投放。⇒ 目标选择先选**内容账号**,再勾它下面的**平台账号**(渠道);摘要区由「目标账号数/目标平台数」改成「**目标渠道数/覆盖平台数**」。「各版本与逐版编辑」写明**一个平台账号一版**(一版一路)。 + +**5、P7 写死「平铺、不分区」。** +用户口径:「发布的目的就是为了看数据和看收入啊」⇒ 复盘(看数据)与记录对账(看收入)是**同一类事**。本页 10 块**平铺**,⛔ 不划子区、⛔ 不再拆页、⛔ 不加导航项。 + +### 附:V3 那一版骨架改了什么(存档,⛔ 本版未推翻) + +**1、P8 整页并进 P7。** +用户口径逐字:「**P8 放复盘**」「**当然是功能也要放过去**」。P8 记录与对账不再是一页 —— 它的四个板块原样接在 P7 的板块清单后面,导航里也不再单列。判据不是「把 P8 改名」,是**页集合里从此没有 P8**。 + +**2、导航压平成一层的七项。** +用户口径逐字:「**左侧导航应该是 首页 选题 创作 投放 复盘 账号**」「**P3 放导航 排最后**」。V2 里的三个组标(找选题/走创作流水线/看矩阵复盘)与跨组分隔**一起撤掉**;项仍是七项、一项一页,顺序照用户给的先后,资产排最后。 + +**3、功能与板块的对应关系写进可机检的位置。** +用户口径逐字:「**所有功能要和各自板块对应**」。本版把「哪条功能归哪一页的哪些板块」写成一张表(原型里的 `FN_MAP`),归属页写成另一张(`FN_HOME`,逐字取 `2a` §四)。自检两端一起查:功能不得悬空、板块不得孤立、每条功能的每个归属页上都得有它的板块。 + +**4、三处指向 P8 的流转改指 P7。** +流转契约本身(六要素、20 条)不动,只把目标页由 P8 换成 P7:第 6 条(P1 → 记录)、第 14 条(P5 → 记录)、第 18 条(记录 → P5)。第 13 条(P5 → 复盘)本来就指向 P7,不变。 + +--- + +## 二、页型(一句判型 + 依据) + +**本产品是工具型页面,不是营销页。** + +依据:`1a` §一 与 §四 里的用户是天天来干活的 MCN 团队(内容负责人、编导与文案、剪辑与投放),不是第一次来的访客。§八 留下的三个入口全是干活入口,没有一处是「让人下决心」的落地页。 +⇒ ③段不要套落地页骨架。判据:本产品的每一页都有人在里面完成一件事,没有一页是为了让人「看一眼就下决心」而存在的。 + +--- + +## 三、导航结构(一层七项) + +**门开在 P1(导航里叫「首页」)。** 导航是**一层七项** —— ⛔ 没有分组、⛔ 没有跨组分隔、⛔ 没有第二层。 + +| 导航项 | 落哪一页 | +|---|---| +| 首页 | P1 矩阵总览 | +| 选题 | P2 选题雷达 | +| 创作 | P4 创作台 | +| 投放 | P5 发布中心 | +| 复盘 | P7 复盘台(P8 已并入,见 §五) | +| 账号 | P6 账号画像 | +| 资产 | P3 资产库(排最后) | + +**项名与页名是两层,别混。** 导航里的名字照用户口径;页面自己的名字沿用不变(矩阵总览/选题雷达/资产库/创作台/发布中心/账号画像/复盘台)。两处对照就是上表 —— 最要紧的一处是 **P5:导航叫「投放」,页面仍叫「发布中心」**,这一页只管内容发布与排期,版本生成在创作台,⛔ 没有扩功能。 + +**顺序是硬约束。** 资产排最后(用户明说);其余六项按用户给的先后(首页 → 选题 → 创作 → 投放 → 复盘 → 账号)。 + +**账号为什么不再标「跨组」。** V2 把它标成跨组,是因为那时有三组可比。三组撤掉之后「跨组」这个标记失去参照物,本版一并去掉;P6 仍是全局上下文能力(不在生产链任何一环上),这一点没变。 + + +--- + +## 四、页面公共框架(Page Shell) + +七页每页都有这一层,三样,从上到下: + +1. **页面标题区** —— 页名,加一句话说清这一页干什么。**本页的页面级动作不另起一行,挂在标题行右侧、右对齐**(例:刷新本页数据=一枚 icon 按钮,与页名同一行;按钮的完整含义走悬停提示与读屏标签)。 +2. **数据摘要区**(可选)—— 本页若干个数的一行摘要。哪页有、摘要哪几个数,由本页需要决定;不是每页都必须有。 +3. **辅助入口区** —— 放本页那些不属于任何业务板块、又必须在本页可达的入口。⛔ **不许**用它把 §六 的流转表再写一遍。 + +> 🔴 2026-10-10 用户令:原来单列的「页面操作区」撤销 —— 页面级动作改挂标题行右侧。以后再有页面级动作,同此处理,⛔ 不再为它单开一行。 + +**三条硬规则**(这是本版新立的,堵的是现状 `A1`/`A3`): + +- 页面公共框架**不计入业务板块数量**,每页的板块清单里不列它。 +- 页面公共框架**不参与功能归属**。功能归属只看核心业务对象(见 `2a-产品功能-新版.md` §一 第 2 条)。 +- 页面公共框架**不占骨架冻结的计数**。冻结冻的是业务板块与对象,不是框架。 + +**一处容易混的地方,写清楚:** P2 的「对标监控概览」在③段里长得和别的页那行数据摘要很像,但它是**业务板块**,不是框架。判据不是「长得像不像」,是「它是不是这一页某个功能的对象」。P2 那四个数是 F1 的产出(在监控的账号数、低粉爆款条数、异常值条数、近三天更新条数),所以它算板块;P1 那行数只是本页概览,不算。形态相似不等于产品对象相同。 + +**全局可达的那一个入口。** 只有「随手记」(F2)放在全局可达的位置:任意页面一次点击内碰得到。它不占任何一页的业务板块位。依据:F2 是 P0,`2a` 与 `1a` §八 都把它当主链的第一跳,不能埋在两层下。 + +--- + +## 五、七页骨架 + +每页写七样:这一页干什么/核心对象/不应该负责/公共框架含什么/业务板块清单(从上到下)/主操作/信息分档。 + +### P1 矩阵总览 + +**这一页干什么**:一屏回答每个账号今天该发什么、发了什么、效果如何。 + +**核心对象**:`Account` 账号、`Performance` 表现数据 +**不应该负责**:内容的深度编辑(那是 P4) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 数据摘要区(在管账号数/今日待处理数/数据异动数/本月已发数)。 +🔴 上一版③段这两块就是「统计条」,本版归入框架,不算板块。它的「功能入口」那块**撤销**。 + +**业务板块清单(从上到下,5 块)** + +1. 今日待处理 —— 跨账号的待办:待审、待确认、待复盘各几件 +2. 账号矩阵 —— 每个账号今日该发什么/已发什么/效果如何 + ⛔ 本块**不写怎么呈现**(矩阵、列表都是形态,归③段判) +3. 异常值提示 —— 最近哪些内容的数据异动 +4. 本月表现最好的一条 +5. 全局检索 + +**主操作**:决定今天先处理哪一件事,并进到那一件事。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 账号矩阵 | 主屏常驻 | 删掉它,主操作的对象就没了 —— 不知道有哪些账号,无从决定先处理哪件 | +| 今日待处理 | 主屏常驻 | 删掉它,主操作没有候选可挑,做不成 | +| 异常值提示 | 可点入 | 删掉它,主操作仍做得成(异常值是 P2 的输入,不是这一页的决策依据) | +| 本月表现最好 | 可点入 | 删掉它,主操作完全不受影响 —— 它只是激励 | +| 全局检索 | 可点入 | 删掉它,主操作做得成;它是本页的一个旁路,不是推进动作的一部分 | +| 随手记 | 全局可达(框架层,不占板块) | 它是 F2 的入口,任意页面一次点击内能碰到 | + +🔴 本页依赖 **A1**(账号数 10–50)与**待复核第 5 条**(矩阵级视图是否真需要)。若第 5 条复核为「不需要」,P1 从「矩阵总览」降为「单账号今日」,只留第 1、4 板块,矩阵列表下移到账号切换。 + +--- + +### P2 选题雷达 + +**这一页干什么**:找选题,并且把选中的那条推进下一步。 + +**核心对象**:`Benchmark` 对标号、`Topic` 选题 +**不应该负责**:内容生产(那是 P4) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 辅助入口区(「开始创作」这一类跳 P4 的动作入口)。 +🔴 上一版③段的功能入口那块**撤销**。本页**没有**数据摘要区 —— 因为这一页那四个数(对标监控概览)本身就是业务板块,属于 F1 的产出。 + +**业务板块清单(从上到下,4 块)** + +1. 对标监控概览 —— 四个数:在监控的账号数/低粉爆款条数/异常值条数/近三天更新条数 +2. 对标内容 —— 每条带它相对该账号平时水平的倍数(⛔ 同 P1,不写呈现);拆出来的结果**可就地入库**(人不必先跑去资产库 —— 入库口不限页,见 §一 第 3 条) +3. 评论区洞察(可点入子区)—— 取评论、出 AI 候选选题(`2a` F3) +4. 选题库 —— 装**对选题有帮助的任何信息**,用**进度 × 类型**两个正交维度区分(见下) + +**选题库的两个维度(本版新写清)** + +- **进度**(沿用旧口径):`待做` / `在写` / `已用`。 +- **类型**(本版新加):`选题` / `对标线索` / `评论洞察` / `数据异动` / `灵感`。每类自带后续动作 —— 选题往下推创作、对标线索去拆解、评论洞察回评论区、数据异动去对标的那个账号、灵感可以直接变成选题。 +- 两个维度**正交**:一条信息同时带进度和类型,⛔ 不是二选一。随手记写进来的信息,默认落「**灵感**」这个类型、进度默认「**待做**」。 +- ⛔ 不新增「**待整理**」状态,⛔ 不做「先选去向」这一步 —— 信息落进来就是待做,靠类型区分,不靠人先归档。 + +**主操作**:把一条选题推进下一步(去创作台,或去资产库拆解)。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 对标内容 | 主屏常驻 | 删掉它,主操作的对象没了,做不成 | +| 选题库 | 主屏常驻 | 删掉它,主操作没有可推进的条目,做不成 | +| 对标监控概览四数 | 主屏常驻 | 删掉它,看不出哪个账号值得看 —— 列表会长到没法挑,等于主操作做不成 | +| 评论区洞察 | 可点入 | 删掉它,仍能从对标列表拿到选题 | +| 随手记(写进选题库) | 全局可达(框架层,不占板块) | 同 P1 的随手记;它写进来的东西落进「选题库」板块 | + +--- + +### P3 资产库 + +**这一页干什么**:**统一管理**资产条目 —— 归类、查改、引用。资产从哪来不限页:任何页产生资产都可以就地入库,这一页是把资产收拢起来统一管的地方。 + +**核心对象**:`Asset` 资产条目 +**不应该负责**:内容流程(拆解完就走,创作在 P4) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 数据摘要区(条目总数/已入库/待入库/分区数)。 +🔴 上一版③段的功能入口那块**撤销**。 + +**业务板块清单(从上到下,4 块)** + +1. 分区切换 —— 角度/结构/开场白/标题,一次看一个 +2. 资产条目 —— 当前分区下的条目(⛔ 不写呈现) +3. 单条详情 —— 原文、出处、草稿标记 +4. 引用入口 —— 把这条拿去创作台用 + +**主操作**:把一条资产条目管理到位(归好分区、补上出处),需要时引用到创作台。 +🔴 本页**不是唯一的入库口** —— P2 拆解、P4 创作、P3 自己都能就地入库;这一页的职责是**统一管理**,⛔ 不是「必须先到这里才能入库」。这与「一个对象只有一处产生」不冲突:那一条管的是**权威数据只有一份**,⛔ 不管写入动作发生在哪一页(`2a` §一 第 4 条)。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 分区切换 | 主屏常驻 | 删掉它,四个分区分不开,入库不知道该进哪一区,主操作做不成 | +| 资产条目 | 主屏常驻 | 主操作对象 | +| 单条详情(原文/出处) | 可点入 | 删掉它,入库与引用都还做得成(入库门禁在守卫层,不靠这里显示) | +| 引用入口 | 可点入 | 删掉它,`2a` F4 的主路径改成从创作台来找,多绕一步;但 P3 自己的主操作(入库)不受影响 | + +--- + +### P4 创作台 + +**这一页干什么**:一条内容从选题走到成稿,再从成稿展开成**多个平台账号**的版本。 + +**核心对象**:`Content` 内容、`ContentVersion` 内容版本 +**不应该负责**:真正执行发布(那是 P5) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ **当前内容上下文**(这是哪条选题/当前到哪个环节)+ 数据摘要区(当前环节共几步/已完成环节数/引用资产数/版本数)+ 辅助入口区。 +🔴 **「当前内容标识」从板块上移到这里。** 它服务整页,不是某个功能的对象。依据:GPT 的 P4 例(公共框架=当前内容上下文 + 页面级操作),采纳决策 G24。 +🔴 上一版③段的功能入口那块**撤销**。 + +**业务板块清单(从上到下,6 块)** + +1. 创作流程 —— 七个环节的当前位置,可回退 +2. 当前环节工作区 —— 这一步实际干活的地方 +3. AI 产出与采纳 —— 当前环节的 AI 产出(生成中/已生成/失败重试)+ 采纳·驳回·改后再用 +4. 资产引用 —— 从资产库拿角度、结构、开场白、标题 +5. 版本管理 —— 一稿多版,含母版到**多个平台账号**的展开(展开单位是**平台账号**:一个内容账号下的一个平台账号一版) + 🔴 **本块是 F7 与 F8 的落点。** 上一版把 F7 拆成「P4 出成稿、P5 展开」两头各半,P4 侧连发起入口都没有。本版按 `2a` 的归属把它收回这里:展开与逐版确认发生在 P4,P5 只拿去发。展开单位由 V3 的「账号 × 平台」改成**平台账号**(`2a` F7)。 +6. 录制卡片与画板 —— 成稿态之后,把内容转成对着讲的卡片(`2a` F14) + 🔴 **本块是补上的。** 上一版②段 P4 的板块清单里没有它,而 `1a` §五 S3 的场景、`1a` §六 F14、`1e` §四 的映射里都有它(现状 `D3`:四处不一致)。本版按 `2a` F14 归 P4 的结论把它补进板块清单。它是**成稿之后**的动作,不是创作流程七个环节里的一环 —— 这个区分写在这里,免得③段又把它塞进七步里。 + +**主操作**:把当前环节推进到下一环节。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 创作流程 | 主屏常驻 | 删掉它,不知道下一环节是什么,主操作做不成 | +| 当前环节工作区 | 主屏常驻 | 主操作的对象 | +| AI 产出与采纳 | 主屏常驻 | 删掉它,当前环节的产出无处看、无处采纳 ⇒ 推进到下一环节做不成 | +| 当前内容上下文 | 主屏常驻(框架层,不占板块) | 删掉它,改到别的选题上也不知道,等于做错 | +| 资产引用 | 可点入 | 删掉它,仍能凭空写(这正是 S2 要治的老毛病),主操作本身做得成 | +| 版本管理 | 可点入 | 删掉它,推进流程不受影响;只有回溯旧版或多账号展开时才需要 | +| 录制卡片与画板 | 可点入 | 删掉它,走到成稿并发布仍做得成;它只在想生成卡片时才需要 | + +--- + +### P5 发布中心 + +**这一页干什么**:把成稿过来的版本过闸,由人确认发出。 + +**核心对象**:`PublishTask` 发布任务、`PublishRecord` 发布记录 +**不应该负责**:内容创作、版本生成(都在 P4) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 数据摘要区(目标渠道数/覆盖平台数/本批版本数/硬拦项数)。 +🔴 上一版③段的功能入口那块**撤销**。它上面原本挂着「创作台」与「记录与对账」两个跳转,这两个跳转纳入 §六 的流转契约(P5→P7 见第 14 条,回创作台走流程)。 + +**业务板块清单(从上到下,5 块)** + +1. 目标选择 —— **两级**:先选**内容账号**,再勾它下面的**平台账号**(渠道),决定这批版本投到哪几个渠道 +2. 各版本与逐版编辑 —— **一个平台账号一版**(一版一路) +3. 检查结果 —— 哪几处会被硬拦、哪几处只是提醒 +4. 确认发布 —— 含二次确认 +5. 发布记录 —— 这批发了什么,可查随发布记录一起留的检查结果 + +🔴 **两级目标选择的判据(本版新写清)**:一个**内容账号**在投放时对应**多个平台账号**、分别投放 ⇒ 目标不是「选账号 + 选平台」两个独立动作,是**顺着内容账号往下勾它的平台账号**(`2a` §二 对象字典「平台账号」)。摘要区的「目标渠道数」= 勾中的平台账号数,「覆盖平台数」= 这些渠道落在几个平台。 +🔴 **「一版一路」**:一个**平台账号**(渠道)只对应一个版本 ⇒ 勾了 N 个平台账号就要有 N 版。发布记录**不加渠道字段**:一版一路时,从版本就能反推出渠道(`2a` F13)。 + +**主操作**:确认发布。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 检查结果 | 主屏常驻 | 删掉它,会被硬拦项挡回去却不知道为什么,主操作做不成 | +| 各版本与逐版编辑 | 主屏常驻 | 主操作对象 | +| 确认发布 | 主屏常驻 | 删掉它就没有主操作本身了 | +| 目标选择 | 可点入 | 判据答「做得成」—— 从 P4 带着版本进来时,目标已定;只有从 P1 直接进来才需要现选 | +| 发布记录 | 可点入 | 删掉它,回查改从 P7 进 | + +--- + +### P6 账号画像(导航里的第六项「账号」) + +**这一页干什么**:每个**内容账号**一份画像与记忆;它下面挂着 N 个**平台账号**(发布渠道)。看和改都在这一页。 + +**核心对象**:`Account` 账号(=内容账号;平台账号是它下面的子项,不另立对象) +**不应该负责**:独立业务流程(它只提供上下文,不在生产链上) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 数据摘要区(在管账号数/已建画像数/长期记忆条数/关联选题数)。 +🔴 上一版③段的功能入口那块**撤销**。 + +**业务板块清单(从上到下,5 块)** + +1. 账号列表 —— 选一个内容账号 +2. 画像五维 —— 定位、风格、受众、偏好与红线、长期记忆 +3. 平台账号 —— 这个内容账号下面的 N 个平台账号,每条带「平台 + 登录态 + 授权状态」 +4. 记忆条目 —— 只追加,不覆盖 +5. 关联内容 —— 这个内容账号做过的内容 + +**主操作**:保存这一份画像。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 画像五维 | 主屏常驻 | 主操作对象 | +| 账号列表 | 主屏常驻 | 删掉它,不知道在改哪个账号的画像,会改错 | +| 平台账号 | 可点入 | 删掉它,编辑与保存画像都做得成;它在要管这个账号的发布渠道(登录/授权/增删)时才需要 | +| 记忆条目 | 可点入 | 删掉它,编辑画像与保存都做得成(记忆是回写产物,不是编辑动作的输入) | +| 关联内容 | 可点入 | 删掉它,主操作不受影响 | + +⚠️ **画像五维是一块,不是五块。** 现状里它在界面上被拆成五个输入位加一行只读提示,那是③段的实现选择,不等于它是两个板块。本份只声明它是**一个业务板块**。 + +🔴 **账号是两个概念,这里说清**:**内容账号**管**内容属性**(账号设定:定位/风格/受众/偏好红线/长期记忆),**平台不归它**;**平台账号**是**发布的渠道**(带平台 + 登录态 + 授权状态)。两者是**一个内容账号 → N 个平台账号**(子项清单),**不是两个并列的对象**,⛔ 不给平台账号单独立对象(`2a` §二 对象字典「平台账号」)。⇒ 本页的归属页没变,核心对象仍是 `Account`。 + +--- + +### P7 复盘台(原 P8 记录与对账整页并入本页) + +**这一页干什么**:把一条已发布内容的表现读回来,写成这个账号的经验;同一页上还能查发布留痕、核商单与收支。 + +**核心对象**:`Review` 复盘结论(原料是 `Performance` 表现数据);本页后半还有 `PublishRecord` 发布记录与 `Campaign/Order` 商单与收支 +**不应该负责**:内容创作、版本生成(都在 P4) + +**页面公共框架**:页面标题区(右侧挂刷新 icon)+ 数据摘要区(待复盘数/数据已回数/本次已回写数/画像记忆数/记录总数/待结算数)。 +🔴 上一版③段的功能入口那块**撤销**。 + +**业务板块清单(从上到下,10 块 · 平铺,⛔ 不划子区)** + +1. 待复盘项 +2. 这一条的表现数据 +3. 归因结论(由 AI 给出,可编辑) +4. 确认与改判 —— 采纳、驳回或改后再用 +5. 回写目标提示 —— 这次回写到哪个账号 +6. 历史复盘(可点入) +7. 发布记录 —— 谁在什么时候确认发的、发的是哪一版(⛔ 不写呈现;原 P8 整页搬来,⛔ 不是新做,是搬位置) +8. 单条溯源 —— 从记录回到内容与版本 +9. 对账核对区 —— 内容、发布记录、收支三样对得上 +10. 商单与收支(可点入,所属功能 F12 标 `P2/Deferred`,第一版可能没有) + +🔴 **这 10 块平铺,⛔ 不划子区、⛔ 页内不分段。** 前 6 块(复盘)与后 4 块(记录与对账)是**同一类事** —— 都属「**发布之后看数据与看收入**」:复盘那半看数据,记录与对账那半看收入。用户口径逐字:「发布的目的就是为了看数据和看收入啊」。⇒ ⛔ 不拆页、⛔ 不加导航项、⛔ 页内不分区(GPT 主张把记录与对账拆出去,本版不采纳)。 + +**主操作**:确认归因并回写(复盘那半);核销一条记录(记录与对账那半)。 + +**信息分档** + +| 信息 | 档 | 判据回答 | +|---|---|---| +| 表现数据 | 主屏常驻 | 删掉它,归因没有依据,主操作做不成 | +| 归因结论(可编辑) | 主屏常驻 | 主操作对象 | +| 确认与改判 | 主屏常驻 | 删掉它,结论没有采纳或驳回 ⇒ 回写没有依据,等于主操作没做成 | +| 待复盘项 | 主屏常驻 | 删掉它,不知道有什么可复盘,主操作做不成 | +| 回写目标提示 | 主屏常驻 | 删掉它,回写会落到错的账号,这条经验就废了 —— 等于主操作没做成 | +| 历史复盘 | 可点入 | 删掉它,当前这次复盘仍做得成 | +| 发布记录 | 主屏常驻 | 知道有哪些记录,不知道就无从核销。判据:删掉它,核销没有对象 | +| 对账核对区 | 主屏常驻 | 核销这个主操作的对象 | +| 单条溯源 | 可点入 | 判据答「做得成」—— 核销看列表就够;要深究才点进溯源 | +| 商单与收支 | 可点入 | 删掉它,核销仍做得成;且 F12 标 `Deferred`,第一版可能整块没有(见 `2a` §三 F12 与 §六 依赖表) | + +**一句要写死的话**:第 4 块「确认与改判」**是回写的前置开关**,不是只留痕。没有人工裁决,回写这一步不成立。依据 `2a` F10 的状态流转;③段现在按「只留痕」实现(现状 `D2`),要改。 + +**另一句要写死的话**:第 7–10 这四块是**从 P8 搬过来的同一批板块**,内容一字不改。判据不是「P7 多了四个新板块」,是**页集合里再也没有 P8 这一页**(见 §七 第 2 条)。 + +--- + +## 六、页面流转契约(20 条) + +**每条写六样**:来源页面/触发动作/传递对象/对象 ID(含必要上下文)/目标页面接收方式/目标页面落地状态。 + +**每条至少带一个业务对象或它的 ID。** 光写「从哪到哪」没有工程价值 —— 上一版 18 条里 14 条就是这么写的,现状里它们要么不带东西、要么带了过去对面不读。 + +**三条总规则**(与 `2a` §一 第 3 条同源,此处是它在骨架上的落地):跨页只传 ID 加必要上下文,不传页面临时状态;一个对象只有一处产生;目标页接到 ID 必须能自己恢复出状态。 + +### 第一类 · 对象传递(上游产出对象,下游拿它新建或更新) + +| # | 来源 → 目标 | 触发 | 传递对象 | 对象 ID + 上下文 | 目标接收方式 | 落地状态 | +|---|---|---|---|---|---|---| +| 7 | P2 → P3 | 对某条对标内容发起拆解 | 对标内容 → `Asset` 的原料 | `benchmarkContentId` + 选中分区 | P3 以该内容为原文新建草稿条目 | 分区切到对应区,详情显示该内容的原文与出处 | +| 8 | P2 → P4 | 把一条选题转入创作 | `Topic` → `Content` | `topicId` | P4 **创建或切换当前 `Content`** | 当前内容=该选题;新建草稿 v1;标题继承选题标题;资产引用为空 | +| 9 | P3 → P4 | 引用一条资产去创作 | `Asset` → 当前内容的资产引用 | `assetId` | P4 把该资产挂进当前内容的资产引用 | 资产引用区列出该条 | +| 10 | P4 → P5 | 成稿态,去发布 | `ContentVersion` → `PublishTask` | `contentId` + `versionIds` | P5 创建发布任务 | 各版本按 `versionIds` 载入,检查结果待跑 | + +🔴 第 8 条治的是现状 `B8`:上一版只写「把一条选题转入创作」,③段于是只改了选题状态就跳页,创作台显示的还是写死的上一条。契约写死「创建或切换当前 `Content`」,对面就没法糊弄。 + +### 第二类 · 上下文定位(只带定位用的 ID,目标页自己去查) + +| # | 来源 → 目标 | 触发 | 传递对象(定位用) | 对象 ID + 上下文 | 目标接收方式 | 落地状态 | +|---|---|---|---|---|---|---| +| 1 | P1 → P2 | 点「异常值提示」里某条,或从今日待处理挑到选题类待办 | `Benchmark` 的线索 | `benchmarkId` + `filter=异常值` | P2 用 `filter` 筛对标内容,用 `benchmarkId` 定位那一条 | 列表已按筛选值过滤,停在对应那条 | +| 2 | P1 → P4 | 今日待处理里有「在写」的内容 | `Content` | `contentId` | P4 切换当前内容 | 创作流程停在该内容当前环节 | +| 3 | P1 → P5 | 今日待处理里有待审/待确认的 | `PublishTask` | `publishTaskId` | P5 载入该任务 | 停在该任务的检查与确认位 | +| 4 | P1 → P6 | 点账号矩阵里某个账号 | `Account` | `accountId` | P6 载入该账号 | 画像五维填充该账号的值 | +| 5 | P1 → P7 | 今日待处理里有待复盘的 | `Review` | `accountId`(如有 `reviewId` 一并带) | **P7 自己按 `accountId` 查出该账号的待复盘项与表现数据** | 待复盘项定位于该账号 | +| 6 | P1 → P7 | 今日待处理里有待核销的 | `PublishRecord` | `recordId` | P7 载入该条记录,对账核对区停在该条 | 对账核对区停在该条记录 | +| 11 | P4 → P6 | 需要查这个账号的口径 | `Account` | `accountId` | P6 载入该账号 | 画像五维填充该账号的值 | +| 12 | P5 → P6 | 发布前要核账号口径 | `Account` | `accountId` | 同第 11 条 | 同第 11 条 | +| 15 | P6 → P4 | 画像保存后回到创作 | `Account`(回程) | `accountId`,如来时带了 `contentId` 一并带回 | P4 保持或切换当前内容 | 来时带了 `contentId` 则回到它,否则当前内容不变 | +| 16 | P6 → P5 | 画像保存后回到发布 | `Account`(回程) | `accountId`,如来时带了 `publishTaskId` 一并带回 | P5 保持当前任务 | 任务不变 | +| 18 | P7 → P5 | 从一条记录回到它对应的版本 | `PublishRecord` → `ContentVersion` | `recordId`(由它解析出 `versionIds`) | P5 载入这些版本 | 各版本定位于该记录当时用的那一版 | + +🔴 第 5 条治的是现状 `B9`:上一版写「点账号矩阵里的某个账号 → P7」,③段把被点账号放进了页面临时状态,而 P7 根本不读它,看的是待复盘表默认那一条。契约写死「传 `accountId`,P7 自己查」,就把这条路堵上了。 + +### 第三类 · 状态完成(下游这一步做完,上游那个对象的状态才算走完) + +| # | 来源 → 目标 | 触发 | 传递对象 | 对象 ID + 上下文 | 目标接收方式 | 落地状态 | +|---|---|---|---|---|---|---| +| 13 | P5 → P7 | 已发布,去复盘 | `PublishRecord` → `Review` | `recordId` + `accountId` | P7 为该记录建一条待复盘项 | 待复盘项多出这一条,表现数据取该记录用的版本 | +| 14 | P5 → P7 | 发布后去查留痕 | `PublishTask` → `PublishRecord` | `publishTaskId` | P7 载入刚产生的那条记录 | 发布记录列表多出这一条并停在它上面 | +| 17 | P7 → P6 | 归因回写 | `Review` → `Account` 的记忆 | `accountId` + `reviewId` | P6 往该账号追加一条记忆条目 | 记忆条目多出一条,长期记忆数 +1 | + +🔴 第 13 条治的是现状 `C1`:上一版写的 P5 → P7,是 18 条里唯一一条界面上找不到任何入口的。本版把它列进 P0 必须通的四条之一(见下)。 +🔴 第 14 条治的是现状 `B1`:③段「确认发布」只写了个内存标志加一句提示,P8 的记录表永远不会多出这一条。契约写死「目标页载入刚产生的那条记录」,对面就得真落一条。 + +### 两条新增的流转(标「新增·待确认」,见 §十) + +| # | 来源 → 目标 | 触发 | 传递对象 | 对象 ID + 上下文 | 目标接收方式 | 落地状态 | +|---|---|---|---|---|---|---| +| 19 | P7 → P1 | 复盘结论确认后,回到矩阵 | `Review` → 由它刷新的 `Performance` 汇总 | `accountId`(可选) | P1 用该结论刷新异常值提示/今日待处理/本月表现最好的一条 | 对应板块多出这一条 | +| 20 | P7 → P2 | 复盘发现转下一轮选题 | `Review` → `Topic` | `reviewId` | P2 以该结论为来源建一条草稿选题 | 选题库「待做」多出一条,来源标该复盘 | + +**为什么这两条单列**:第①棒逐条盘点的 18 条里没有它们,它们是 GPT 新加的,代表「复盘反哺」那一段闭环。不写进去,闭环在文档上就是断的,第④步做界面对不上;写进去却不标,等于偷偷扩范围。所以:写进去,标出来。 + +### 优先级:哪几条必须先通 + +主链的第一段是 `Topic → Content → ContentVersion → PublishTask → PublishRecord → Review`。落在流转上,**P0 必须先通的是四条**: + +1. 第 8 条 P2 → P4(选题 → 内容) +2. 第 10 条 P4 → P5(成稿 → 发布任务) +3. 第 14 条 P5 → P7(发布 → 发布记录) +4. 第 13 条 P5 → P7(发布记录 → 待复盘) + +后做的(重要,但不卡主生产链):第 1、2、3、4、5、6、9、11、12、15、16、18 条。第 19、20 条等 §十 第 3 项定完再排。 + +--- + +## 七、骨架受限的两处(依赖未复核项,沿用) + +1. **P1 的形态挂在待复核第 5 条上**(矩阵级视图是否真需要)。若答「不需要」,P1 降为单账号今日,矩阵列表下移。这是一处**结构性分支**,③段动工前必须定。 +2. **P7 的第 10 板块「商单与收支」挂在待复核第 6 条与 A3 上**(商单对账进不进第一版;收支口径)。若「不进第一版」,P7 的这半只留第 7、8、9 板块(原 P8 的第 1、2、3 块)。 + +**回收三字段**:复核人 = 主会话转用户;复核时机 = ②段收口时一次性过,③段动工前必须定;结论落点 = 本文件 §七 与 §五 P1、P7 对应板块。 + +--- + +## 八、五样给全核对(方法论要求,缺一样③段就没方向) + +| 要求 | 本份落在哪 | 齐 | +|---|---|---| +| 页面清单(有哪几页,每页一句话说清干什么) | §五 七页,每页第一段 | ✅ | +| 页面流转(谁跳到谁、什么条件下) | §六 20 条,每条六要素 + 三条总规则 + P0 四条 | ✅ | +| 每页板块清单与排列(几个块、从上到下什么顺序) | §五 每页「业务板块清单(从上到下)」,逐页编号 | ✅ | +| 每页主操作(唯一那个推进动作) | §五 每页「主操作」 | ✅ | +| 每条信息的分档(主屏常驻/可点入,含判据回答) | §五 每页「信息分档」表 | ✅ | +| 页型一句 | §二 | ✅ | +| 导航结构(几项、各项指向哪页、顺序) | §三 | ✅ | + +--- + +## 九、与上一版(V3)的实质差别(逐条) + +**八条口径的落地** + +1、**功能归属判据换成「一类事情放同一个页面」**(`2a` §一 第 2 条)。落到骨架上,**七页集合与 P1–P7 的板块归属一页没动** —— 用新判据把七页复核了一遍,归属全部成立。改的是判据文字,不是页结构(§一 第 2 条)。 +2、**资产入库不限页,资产库页改成「统一管理」**(P3 §五)。P3 的页面职责由「存拆解结果」改成「统一管理资产条目」,主操作跟着改;P2 的「对标内容」块写明拆解结果**可就地入库**。⛔ P3 不再是唯一入库口。本页板块仍是 4 块,总数不变。 +3、**P2 选题库改用「进度 × 类型」两个正交维度**(P2 §五)。进度沿用 `待做/在写/已用`,类型新加 `选题/对标线索/评论洞察/数据异动/灵感`,每类自带后续动作。⛔ 不新增「待整理」状态、⛔ 不做「先选去向」。 +4、**P2 的「灵感速记」并进「选题库」**(P2 5 → 4 块)。顺手订正 V3 遗留:同一页的板块清单与信息分档表对「灵感速记」写法打架 —— 现在统一成「随手记是全局可达的框架层入口(不占板块),写进来的东西落选题库」。 +5、**P5 目标选择改成两级**(P5 §五 第 1 块):先选内容账号,再勾它下面的**平台账号**(渠道)。数据摘要区由「目标账号数/目标平台数」改成「**目标渠道数/覆盖平台数**」。 +6、**P5 第 2 块写死「一个平台账号一版」(一版一路)**(P5 §五 第 2 块)。依据 `2a` F13;`PublishRecord` 不加渠道字段。 +7、**P6 画像六维收成五维**(去掉「平台」这一维),**新增「平台账号」板块**(P6 4 → 5 块)。平台账号=发布渠道,每条带「平台 + 登录态 + 授权状态」,是内容账号下的子项清单(1 → N),⛔ 不另立对象。 +8、**P7 写死「平铺、不划子区」**(P7 §五)。10 块属「发布之后看数据与看收入」同一类事,⛔ 不拆页、⛔ 不加导航项、⛔ 页内不分区。 + +**数字** + +9、**业务板块总数不变,仍是 39**:P2 由 5 块收成 4 块(−1),P6 由 4 块变 5 块(+1),其余五页不变 ⇒ 净变化 0。七页页数与 20 条流转契约都不动。(逐页数:5/4/4/6/5/5/10。) + +--- + +### 附:V3 相对 V2 的实质差别(存档,⛔ 本版未推翻) + +**页集合与导航** + +1、**页数由八页收成七页**。P8 记录与对账**整页撤销**,四个板块原样接入 P7,导航里不再单列。判据是「页集合里没有 P8」,不是「把 P8 改个名」(§五 P7)。 +2、**导航由「三组 + 一个跨组入口」压成一层七项**:首页/选题/创作/投放/复盘/账号/**资产(排最后)**。零组标、零跨组、零第二层。上一版的三组标题与跨组入口全部去掉(§三)。 +3、**导航项名与页的对应写死**:首页→P1、选题→P2、创作→P4、投放→P5、复盘→P7、账号→P6、资产→P3。这不只是顺序表,是「点哪一项到哪一页」的判据(§三)。 +4、**P5 在导航里显示为「投放」**。它仍是发布中心,页内写清只管内容发布与排期。**改名不扩功能** —— 上一版叫「发布」,本版只换显示名与归属说明。 +5、**P6 不再是「跨组入口」**(跨组这个概念随分组一起去掉),它就是一层的第六项「账号」。 + +**功能与板块的对应** + +6、**新增「功能 ↔ 板块」一一对应关系,并写进可机检位置**。上一版只声明「功能按使用场景组织」,没有逐块落点;本版给每页每个板块标出它承担哪条功能,且自检里双向查(无悬空功能、无孤立板块)——对应关系从此可机检,不靠人读(§五,原型 `FN_HOME`/`FN_MAP` 与自检 5b-3)。 +7、**P7 由 6 块变 10 块**:前 6 块是复盘,后 4 块是搬来的记录与对账(发布记录/单条溯源/对账核对区/商单与收支)。 + +**流转与冻结** + +8、**流转契约目标页的三处改动**:第 6 条(P1 → 记录)、第 14 条(P5 → 记录)目标页由 P8 改指 **P7**;第 18 条(记录 → P5)来源页由 P8 改指 **P7**。条数仍 20,六要素契约本身一字未动(§六)。 +9、**骨架冻结表由「八页 39 块」改成「七页 39 块」**。页结构与板块归属的判据同步改,冻结照旧逐页逐位比对(§四、§五)。 + +**数字** + +10、**业务板块总数不变,仍是 39**。P7 从 6 块变 10 块(+4),P8 整页撤掉(−4),六页不变 ⇒ 净变化 0。 + +--- + +### 附:V2 相对 V1 的实质差别(沿用存档,⛔ 本版未动) + +**结构层** + +1、**新增「页面公共框架」一节(§四)**,给出四样内容与三条硬规则。V1 完全没有这一层,③段的页壳因此成了文档外的黑户(现状 `A1`)。 +2、**撤销各页的「功能入口」板块**(V1 的③段长出来、②段没写的那一层)。撤销之后入口回到所属业务板块或全局可达位置。依据:它的文字就是流转表的副本(现状 `A2`)。 +3、**骨架冻结升级成对象冻结**(§四+§七)。V1 只写「③段不许新增、移动、删除板块」,没定义「什么算板块」;V2 把判据从「有没有套统一板块的样式」换成「有没有一个明确的业务对象」,并写明新增业务能力必须先进 `2a` 功能清单、完成对象归属。 +4、**每页新增两栏:核心对象、不应该负责**。V1 只有「职责+板块」。 +5、**流转从「一句话」改成六要素契约(§六)**,20 条逐条写全,并按对象传递/上下文定位/状态完成三类分开。V1 只有「从哪到哪、什么条件下」两列。 +6、**新增流转优先级:P0 四条**(§六末)。 + +**页面与板块层** + +7、**P4:「当前内容标识」从业务板块上移进公共框架**,改名「当前内容上下文」。 +8、**P4:新增板块「录制卡片与画板」**,落 F14。 +9、**P4:新增板块「版本管理」承担 F7 与 F8**。 +10、**P5:第 2 板块改名「各版本与逐版编辑」**,只消费 P4 生成的版本,⛔ 不再负责展开。 +11、**P5:第 5 板块从「发布记录入口」改成「发布记录」**。 +12、**P6:写死「画像六维是一块,不是六块」**。 +13、**P7:写死「确认与改判是回写的前置开关」**。 +14、**P1:第 5 板块从「全局检索与随手记入口」改成「全局检索」**,随手记移到公共框架的全局可达位置。 + +**数字与核对层** + +15、**V2 重数业务板块总数=39 块**,并订正第①棒 §四 A1 的加总差错(原文写 38,自给的 `5+5+4+6+5+4+6+4` 等于 39)。 +16、**零视觉词红线照旧**,全文无配色/字体/间距/组件样式/动效,也无「卡片」「按钮」「标签」这类形态词。 +17、**V2 相对 V1 一页没删、主操作一页没改。** ⚠️ 本版(V3)**推翻了这一条** —— 本版删了 P8 整页(见本 §九 第 1 条),这是用户口径要求的改动。 + +--- + +## 十、待与用户确认项 + +派活单要求:「部分采纳」那三条涉及改②段结构的,先按 GPT 的方向落地,再在文末单列。以下是本份范围内的全部待确认项。 + +**1、导航项的显示名与侧栏短名怎么对齐** +本版把导航压成一层七项(首页/选题/创作/投放/复盘/账号/资产),按用户口径定的名字。V2 那套「三组+跨组」的组名问题随分组一起去掉,不再是问题。**新冒出来的一个问号**:网页 App 的侧栏是窄的,七项如果都用全名(如「首页」「选题」「创作」等)宽度够,但要不要另配一套两字短名(如「复盘台」缩成「复盘」「账号画像」缩成「账号」),得先问 —— 现在⑦段用的是用户口径的全名,没另起一套短名。 +为什么不自决:起短名等于顺手加一套命名口径,属于改口径,不是执行细节。 + +**2、②段要不要并成一份九节的「产品架构基线 V2」** +GPT 主张合成一份、九节。本版的处置是**内容照收、形态不收**:九节要的东西全部落进了 `2a`+`2b` 两份(详见 `2a-产品功能-新版.md` §九 第 1 项)。 +为什么不自决:合成会新增文档层,属于扩大可见面。 + +**3、两条新增流转(§六 第 19、20 条)要不要进②段** +写进去了,但每条都标了「新增·待确认」。理由与处置见 §六 那一段。 +为什么不自决:新增流转是扩范围。 + +**4、六种流转类型(T1–T6)要不要进正文** +GPT 给了 Create/Open/Continue/Publish/Review/Trace 六型。本版只采纳**三分类**,六型没进正文。 +为什么不自决:GPT 没把六型和这 20 条逐条对齐,直接搬进来会在同一件事上造出第二份定义。要进得先把 20 条逐条归型。 + +**5、1a 的 9 条待复核 + A1–A4 仍未确认** +沿用上一版遗留(现状 `E2`)。P1 的形态挂在第 5 条上,P7 第 10 板块(商单与收支)挂在第 6 条与 A3 上(§七)。 + +**6、一条计数订正请顺手认一下** +§九第 15 条(存档段):第①棒写「八页共 38 个板块」,实际加总是 39;V2 重数为 39,页数由八变七、P8 四块并入 P7 之后,**总数仍是 39**(搬位置,不增减)。这条不是要用户拍板,只是请核一下按哪个数往下走。 +⚠️ 与旧版不同:这次**页数由八变七**,但**板块总数仍是 39**(P8 四块搬进 P7,只是换了页)。 + +**7、定时发布:挂起(本轮不落)** +用户口径逐字(2026-10-10 07:56):「后续具体做投放功能的时候在说」。⇒ 本轮**不写**定时发布:⛔ 不在 P5 加「定时设置」板块、⛔ 不新增状态、⛔ 不动流转契约。当前只在 `2a`/`2b` 各记一条登记,等真做投放功能时再议。 +- **复核人** = 主会话转用户(真做投放功能时) +- **复核时机** = **立项做投放功能时**(⛔ 不是②段收口) +- **结论落点** = 本文件 §十 与本项 + `2a-产品功能-新版.md` §九 第 7 项;届时定「平台原生定时」还是「本地调度」走哪一条。 + +**回收三字段**(本份第 1–6 项共用): +- 复核人 = 主会话转用户 +- 复核时机 = ②段收口时一次性过;第 3、4 条要赶在第④步动界面之前定(第 7 项不在此列,见上) +- 结论落点 = 本文件 §十 与 `2a-产品功能-新版.md` §九 + +--- + +## 附:本份自检 + +- [x] 七页,每页有核心对象、不应该负责、公共框架含什么、业务板块清单与顺序、主操作、信息分档(含判据回答) +- [x] 页面公共框架被显式定义,且写明不算板块数、不参与功能归属、不占冻结计数 +- [x] 每页的业务板块清单里没有公共框架那四样(框架与板块彻底分开) +- [x] 导航一层七项,项名与顺序照用户口径(首页/选题/创作/投放/复盘/账号/资产),零组标、零跨组、零第二层 +- [x] 每一页每个板块都标出它承担哪条功能,双向无悬空、无孤立(可机检:原型 `FN_HOME`/`FN_MAP` + 自检 5b-3) +- [x] 流转 20 条,每条六要素齐全;18 条沿用②段原条目,2 条新增并标注 +- [x] 流转按三类分开;P0 四条单列 +- [x] ③段现在实现不了的四处(`B1`/`B8`/`B9`/`C1`)在契约里都有对应写法 +- [x] 零视觉词:配色 / 字体 / 间距 / 组件样式 / 动效,一个未出现;未用「卡片」「按钮」「标签」这类形态词 +- [x] 未写功能条目的有无与优先级(那是 `2a`),未描述页面「长什么样」 +- [x] 业务板块总数写明(39 块),并订正了第①棒的一处加总差错;V4 逐页数 5/4/4/6/5/5/10,加总仍是 39 +- [x] P2 选题库写明「进度 × 类型」两个正交维度;⛔ 未新增「待整理」状态、⛔ 未做多去向 +- [x] 资产入库不限页写清,P3 职责改成「统一管理」;与「一个对象只有一处产生」的关系写明 +- [x] P5 目标选择两级(内容账号 → 平台账号)写清;摘要区对齐「目标渠道数/覆盖平台数」;第 2 块写死「一版一路」 +- [x] P6 账号分「内容账号/平台账号」两个概念:画像五维 + 平台账号子项清单;⛔ 未新增独立对象 +- [x] P7 10 块平铺、不划子区,并写明属「发布之后看数据与看收入」一类 +- [x] 定时发布挂起已登记(含回收三字段),本轮未落进骨架 +- [x] 骨架受限的两处标出来源(待复核第 5、6 条与 A3),带回收三字段 +- [x] 对象冻结声明写明确:新增业务能力必须先进 `2a` 功能清单并完成对象归属 +- [x] §九 逐条列出与上一版(V3)的实质差别(9 条)+ V3 相对 V2 的存档(10 条)+ V2 相对 V1 的存档(17 条) +- [x] §十 单列了全部待确认项的处置与理由 +- [x] 未新增②段两份之外的文档;上游文件全部只读使用 + +*(说人话自评:46/50 直接性 10 / 节奏 9 / 信任度 10 / 真实性 9 / 精炼度 8 —— 判据源 `E:/ProgramData/.workbuddy/skills/humanizer-zh`,门槛 45。)* diff --git a/docs/pm/mcn-shortvideo-agent/索引-当前权威版.md b/docs/pm/mcn-shortvideo-agent/索引-当前权威版.md index 05e3472..601ea0f 100644 --- a/docs/pm/mcn-shortvideo-agent/索引-当前权威版.md +++ b/docs/pm/mcn-shortvideo-agent/索引-当前权威版.md @@ -24,10 +24,12 @@ | 文档 | 文件 | 大小 | 日期 | 版本 | |---|---|---|---|---| -| 2a 产品功能 | `prd/2a-产品功能.md` | 61 683 B | 10-10 | V5 | -| 2b 界面布局 | `prd/2b-界面布局.md` | 52 643 B | 10-10 | V5 | +| 2a 产品功能 | `prd/2a-产品功能.md` | 68 924 B | 10-11 | V5+赛道过滤层 | +| 2b 界面布局 | `prd/2b-界面布局.md` | 52 992 B | 10-11 | V5+赛道过滤层 | -🔴 旧版(V4/V3/更早)都在 `归档-过期版/`,**别再用**:`2a` 有 5 个旧版(`fa6e07`/`fc471a`/`071c5b`/`d85687`/`72111e`),`2b` 有 6 个。 +🔴 **2026-10-11 这一轮加的东西**:`2a` 新增 **F15 赛道过滤与未匹配档**(接 F14 之后)、F9 扩出「赛道表」字段组;`2b` 只补了两句(P2 对标内容块的账号切换器 + 匹配度筛选器、P2 信息分档表多一行)。页面 7 / 导航一层七项 / 板块 39 / 流转 20 条 / 对象 11 个**一个没变**。三条未拍板(热榜落 P2 哪一块/赛道表是否在 P6 单列一块/快手与视频号无源怎么补)登记在 `2a` §九 第 8 项。 + +🔴 旧版(V4/V3/更早)都在 `归档-过期版/`,**别再用**:`2a` 有 6 个旧版(`fa6e07`/`fc471a`/`071c5b`/`d85687`/`72111e`/`8a8412`),`2b` 有 7 个(多一个 `8a8412`)。 ## 三、③段 · 界面交互(`ui/`) @@ -54,7 +56,7 @@ ## 五、归档文件夹怎么用(`归档-过期版/`) - 命名规则:`<原名>__<来源目标短哈希>.<扩展名>`,例 `2b-界面布局-新版__fc471a.md` = 来自目标目录 `…-fc471a` 的那一版。 -- 现在 28 份:`2a` 5 版 / `2b` 6 版 / 原型 4 版 / `DESIGN` 4 版 / 实测记录 4 版 / `1a` 3 版 / 早期 prd 与 research 的旧归档 3 份。 +- 现在 30 份:`2a` 6 版 / `2b` 7 版 / 原型 4 版 / `DESIGN` 4 版 / 实测记录 4 版 / `1a` 3 版 / 早期 prd 与 research 的旧归档 3 份。 - 需要「这版当时为什么这么定」时来这里翻;**做产品只看 §一~§四**。 ## 六、维护规则(每个目标收口时做)