Files
EveryPublish/docs/prd.md
T

174 lines
10 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# EveryPublish PRD 产品需求文档
> 版本 v1.0 · 2026-08-20 · 状态:待评审 · 技术栈以 docs/tech-stack.md 为准
## 1. 文档信息与文档体系
### 1.1 版本记录
| 版本 | 日期 | 说明 |
|---|---|---|
| v1.0 | 2026-08-20 | 初稿,覆盖一期 MVP 全部功能需求 |
### 1.2 文档体系位置(PRD 与其他文档的关系)
| 层级 | 文档 | 回答的问题 | 本项目对应 |
|---|---|---|---|
| 商业/市场 | MRD / BRD | 为什么做、市场与商业 | 并入本文档 §2,暂不单列 |
| **产品需求** | **PRD(本文档)** | **做什么、给谁用、什么体验** | docs/prd.md |
| 技术需求/规格 | TRD / SRS | 怎么做、接口与协议 | docs/system-design.md + docs/tech-stack.md |
| 流程与进度 | 逻辑图 / 排期 | 流程怎么走、何时交付 | docs/logic-diagrams.md + docs/delivery-plan.md |
> 注:SPDC / MDC 非行业标准缩写。若指「技术方案类」(SPDC≈方案/规格)与「模块开发上下文」(MDC≈模块设计),在本文档体系中分别由 system-design/tech-stack 与 logic-diagrams 承接;待确认团队定义后对齐(见 §12 开放问题)。
## 2. 产品概述
### 2.1 背景与问题(痛点)
- 企业通常只有一个官方账号、多名运营协作;现有开源发布工具均为「单人本地扫码发布」,多人共用账号混乱、无审核、无审计。
- 国内平台(抖音/快手/小红书/视频号)无公开内容发布 API,只能浏览器自动化;IP 风控要求国内账号用国内 IP、国外账号用国外 IP。
- 客户诉求:越简单越好、发布越快、账号越稳、覆盖全部平台、不违反平台官方规则。
### 2.2 产品定位(一句话)
**企业多平台官方账号的发布中台:网页控制台协作、审核、排期,客户端单点持号、自动发布。**
### 2.3 目标用户
| 用户 | 场景 | 优先级 |
|---|---|---|
| 企业新媒体运营团队 | 单官方账号 + 多运营协作,需审核与审计 | 主 |
| 代运营 / MCN | 多客户多账号,需隔离与批量 | 次 |
| 单人创作者 | 自用简化版(隐藏审核流) | 次 |
### 2.4 核心价值主张
- **简单**:装客户端 → 扫码绑定 → 网页排期,三步上手,零配置。
- **快**:任务下发 <300ms,多平台并行发布,失败一键重试。
- **稳**:凭据单机加密持有,设备+IP+行为三固定,账号风控最小化。
- **覆盖**:一期国内四平台(抖音/快手/小红书/B站),二期视频号+国际平台官方 API 通道。
- **合规**:官方 API 优先;自动化通道分级开通、知情告知;明确不做矩阵养号等灰产。
### 2.5 职责边界(网站 vs 客户端,两类账号)
**一句话**:网站 = 任务分配中枢 + 状态看板;客户端 = 持号 + 登录鉴权 + 发布执行。发布流量永不经过网站服务器。
| 账号类型 | 谁负责登录鉴权 | 网站/服务器的角色 |
|---|---|---|
| 控制台用户账号(运营/管理员登录后台,如 demo@everypublish.io) | 网站(注册/登录/JWT) | 管理面板本体,分配任务的人 |
| 平台账号(抖音/快手/小红书/B站/视频号/海外,即发布目标账号) | 客户端 Agent(扫码/验证/本机保存凭据) | 只下发任务 + 接收状态,**零凭据** |
- 网站对平台账号**不负责登录鉴权**,只做两件事:**下发/分配发布任务**(<1KB 元数据经 WSS 推给客户端)与**接收执行状态回传**。
- 平台账号的登录、扫码验证、凭据保存、实际发布全部在客户端(客户自己的电脑)完成;服务器账号表只存 `平台 / 备注 / 状态 / 绑定设备` 等元数据,**不含任何 cookie / 密码 / token**。
- 绑定流程示例:网站生成「挑战」记录并推给客户端 → 客户端拉起扫码 → 客户端回传「已解决」→ 网站把账号标记为「已绑定」。网站全程不接触、不存储平台凭据。
## 3. 范围
### 3.1 一期(MVP)
- 网页端全部功能:用户端(客户工作台)+ 平台端(admin 角色)。
- 客户端 Windows 版:安装配对、托盘常驻、扫码挑战、自动更新。
- 平台:抖音 / 快手 / 小红书 / B站(视频号二期)。
- 素材:服务器本地盘 + 签名直链下载。
- 2FA:能力预留,默认关闭。
### 3.2 二期(不在本期验收)
- 视频号、官方 API 通道(X/IG/YouTube/TikTok)、OSS 双桶与断点续传、托管 Agent、代理采购入口、数据报表增强、Windows 服务化(支持客户 VPS 形态)。
### 3.3 明确不做(红线)
- 矩阵养号、批量注册、搬运去重绕过、刷量、私信轰炸;违反平台规则的功能一律不做。
## 4. 用户角色与权限
| 角色 | 端 | 核心权限 |
|---|---|---|
| 管理员 | 网页端 | 成员/角色、账号台账、绑定/解绑、Agent 设备、审计、设置 |
| 审核员 | 网页端 | 审核通过/驳回、查看素材与任务 |
| 运营 | 网页端 | 素材上传、创建/排期/重试任务、查看结果 |
| 账号负责人(装机人) | 客户端 | 安装配对、扫码绑定、处理登录过期 |
| 平台 admin | 网页端 | 租户管理、Agent 总览、渠道状态(后置) |
## 5. 功能需求
> 优先级:P0 = 一期必须;P1 = 一期尽量;P2 = 二期。
### 5.1 网页端 · 用户端(客户工作台)
| 模块 | 功能 | 优先级 | 验收要点 |
|---|---|---|---|
| 认证与账户 | 账号密码登录、refresh 轮换、登出、登录设备管理;2FA 默认关 | P0 | 登录成功/登出后会话失效;refresh 自动续期 |
| 工作区与成员 | 成员邀请、角色分配、停用 | P0 | 角色权限隔离正确 |
| 账号台账 | 平台账号列表(绑定状态/健康度/代理/最后活跃)、发起绑定(生成扫码挑战)、重新扫码、解绑 | P0 | 绑定→扫码→台账变绿全流程 |
| 素材库 | 上传(multipart+进度)、列表/分组/标签、预览、删除 | P0 | 大文件上传成功;sha256 校验入库 |
| 发布任务 | 新建(选素材→平台账号→标题话题→定时/立即→提交审核)、任务列表(状态筛选)、排期日历、任务详情(事件时间线+回执截图+失败原因)、重试、取消 | P0 | 任务全生命周期流转正确 |
| 审核流 | 待审队列、分平台预览、通过/驳回+批注、可配置跳过 | P0 | 驳回回退草稿;跳过时直接排期 |
| 挑战中心 | QR 从 token 本地渲染、验证码输入、APP确认指引、超时挂起、一键重发 | P0 | 五类挑战均可人工完成 |
| 通知 | 站内通知(挑战/失败/登录过期)、已读 | P0 | 事件产生即推送 |
| 审计 | 全操作日志查询 | P0 | 谁在何时做了什么可查 |
| 设置 | 工作区资料、2FA 开关(默认关)、通知渠道(企微/钉钉/邮件)、Agent 设备列表与吊销 | P0/P1 | 设备吊销后客户端失联 |
### 5.2 网页端 · 平台端(admin)
| 模块 | 功能 | 优先级 | 验收要点 |
|---|---|---|---|
| 租户管理 | 客户列表、状态、配额(简单)、停用 | P0 | 停用后租户不可登录 |
| Agent 总览 | 设备列表:在线/版本/强制吊销/远程指令 | P0 | 在线状态实时 |
| 渠道状态 | 平台适配器状态、灰度开关 | P2 | — |
| 风控台账 | 风控事件、账号冷却记录 | P2 | — |
### 5.3 客户端(Windows)
| 模块 | 功能 | 优先级 | 验收要点 |
|---|---|---|---|
| 安装与配对 | 安装包、配对码绑定工作区、首次引导 | P0 | 新机 5 分钟内完成配对 |
| 托盘常驻 | 开机自启、最小化托盘、在线状态显示 | P0 | 重启后自动恢复连接 |
| 扫码与挑战 | QR 展示/自动刷新、验证码回填、APP确认轮询 | P0 | 与网页端挑战中心联动 |
| 任务执行 | 接收/幂等去重/执行/回传;浏览器档案与指纹 | P0 | 重复任务不重复执行 |
| 运维 | 本地日志、自动更新、连接诊断 | P0/P1 | 断线指数退避自愈 |
## 6. 关键流程(引用 docs/logic-diagrams.md)
- 账号绑定(图8 登录链路优化):API 取码 → 只传 token → 本地重渲染 → 短轮询检测。
- 发布全链路(图6):提交 → 审核 → 排期 → 下发 → 执行 → 回传 → 实时状态;异常分流(网络重试/挑战/风控冷却)。
- 二次验证兜底(图7):五类挑战人工兜底,超时挂起、一键重发。
- 重试状态机(图5):网络退避 1m/5m/15m/1h;登录态转挑战;风控转人工。
## 7. 非功能需求
| 类别 | 指标 |
|---|---|
| 性能 | 任务下发 <300ms;网页页面 P95 <2s;WSS 心跳 10s/离线判定 25s |
| 可靠性 | 断线重连 <10s 恢复;任务幂等(同任务不重复);挑战超时策略完整 |
| 安全 | 四层鉴权;凭据不出本机(服务器零凭据);日志脱敏;审计完整 |
| 易用性 | 三步上手;登录过期提醒+一键重扫;失败原因可见+一键重试 |
| 合规 | 自动化通道知情告知并签署;内容发布前自检提示;红线功能拒绝 |
| 可维护 | 协议版本化(zod/Go 侧校验);平台适配器独立可灰度 |
## 8. 数据需求(一期最小)
- 任务事件流(状态/时间/原因/截图);账号健康度(登录态预测过期);发布统计(成功数/失败原因分布);审计与通知记录。
## 9. 约束与依赖
- 平台风控与前端改版(最大持续风险);IP/代理采购(客户侧);Windows 10/11 环境;扫码需客户手机(微信/抖音等 APP)。
- 一期素材存服务器本地盘:需磁盘配额与清理策略。
## 10. 验收标准
见 docs/delivery-plan.md §7 最终验收清单(登录与权限 / 任务全生命周期 / <300ms 与幂等 / 挑战全流程 / 素材校验 / 四平台真实发布 / Windows 新机全流程 / 凭据不出本机 / 安装包与自动更新)。
## 11. 里程碑
见 docs/delivery-plan.md §6 日计划(D1-D13 + 缓冲):D1-D7 网站端,D8-D11 客户端,D12-D13 联调交付。
## 12. 开放问题(待评审确认)
1. SPDC / MDC 的确切定义——请提供全称,以对齐文档体系。
2. 定价与计费模式(订阅/按账号数/按平台数)。
3. 通知渠道一期范围(企微/钉钉/邮件是否全做)。
4. 代理采购入口是否一期内置(默认客户自带)。
5. 「手机版本」此前表述——指首版还是未来手机端 App,需确认。
6. 单人版是否一期提供(隐藏审核流)。