Dramivio项目文档下载文档包 ↗
2026.10.02 · PRD v3.3方案阶段 · 实现待验证Markdown

Dramivio 后端与管理后台复用方案

本页目录1. 交付范围澄清2. 确定的复用方向3. 数据与权限边界管理命令身份与发布事务4. 先执行B00后台框架接入关口5. 部署与任务运行约束

2026-10-02 · PRD v3.3补充 · 新增框架接入方案,尚未执行兼容PoC。

1. 交付范围澄清

现有文档不是只有前端:已定义服务端身份、播放授权、原子扣次、邀请账本、离线订单、续播同步与后台参数。现有可运行展示是前端高保真原型,真实后端尚未实现。之前Hono仅是API框架,不能自动提供管理后台;这一处补充采用成熟后台框架。

2. 确定的复用方向

管理后台采用自托管Payload CMS开源核心;用户登录继续Better Auth;业务API保留Hono。 不自行建设后台表格、表单、资源上传、基础管理身份和版本浏览。Payload核心为MIT;只用核验为开源的组件,不依赖付费SSO/高级发布工作流。许可证、官方项目。

这是复用优先的折中:Payload包含Next.js运行时,重量高于单Hono,但省去管理后台建设。初期一个代码仓库、同一PostgreSQL实例,业务API与管理后台可分别两个进程,另有worker;不先拆微服务或引入Kubernetes。不要声称Payload可直接嵌入Hono且零成本。若未来合并HTTP宿主,必须另外验证Better Auth路由/Cookie/任务生命周期,不作为首版前置。

能力 直接复用 必要配置/业务代码
运营列表、表单、分页、媒体上传 Payload Admin与Collections 定义字段、双语标签、校验与菜单
运营身份、会话、密码散列 Payload官方管理员认证 管理账号独立集合,仅管理员可登录;角色矩阵与敏感操作校验
用户邮箱OTP、会话 Better Auth官方能力 SMTP、协议、限流、业务Profile接线
内容草稿、版本、历史恢复 Payload Versions/Drafts 发布前10标签/许可校验;恢复旧稿不能撤销已承诺权益
数据/字段访问控制 Payload Access Control 编写运营/审核/财务/超级管理员权限函数;不是角色开箱即符合业务
常规内容后台任务 Payload Jobs 工作任务定义、运行器、重试/监控;不自动保证扣次或发奖恰好一次
剧库去重、源接入 复用CRUD与任务承载 每源适配、统一集映射、去重审核仍需开发
播放次数与邀请奖励 PostgreSQL事务/唯一约束 原子账本、幂等、资格和风控属于专属业务,不能直接CRUD余额
播放位置与离线权限 框架路由/DB基础 CAS/epoch、授权订单和补偿状态机仍需开发

能力依据:访问控制、版本、任务队列、PostgreSQL。版本历史不是覆盖所有后台事件的完整安全审计,登录、拒绝操作、审核、发布与人工调整另外记录不可随意修改的审计事件。

3. 数据与权限边界

  • Payload管理内容、标签、推荐、广告素材和策略草稿;框架生成CRUD只对运营开放。App/Web不直连管理员CRUD,不暴露源地址、私钥或媒体凭证。
  • Better Auth拥有用户认证表;Payload拥有管理员集合;业务模块拥有账本/进度/邀请/离线订单。管理员身份与消费者身份分离,不为用户重复注册第二套账号。两系统迁移各管自己表,不能两套ORM同时迁移同一表。
  • 同一数据库实例优先用独立schema或经过实测的表名前缀,分别用最小权限数据库角色。Payload不能任意写用户认证或余额表;任务必须经有权限的业务命令。
  • 后台“增加次数/审批奖励/撤权/发布配置”调用同一业务命令与审计逻辑;提供只读账本视图。禁止直接编辑余额、直接改paid状态或删除消费记录。
  • 发布把已验证草稿生成不可变policy_version供API读取;在同一业务事务写有效指针及Outbox。框架恢复版本只恢复草稿,再走发布命令;不是直接回滚活跃奖励承诺。
  • Payload Local API默认可绕过访问控制,用户触发的调用必须显式传递user并设置overrideAccess:false;后台服务任务用专用角色/命令。只隐藏按钮不算权限。Local API说明。
  • 管理账号必须关闭公开注册、限制后台网络入口、使用强密码及安全会话;MFA只能采用核验开源且兼容的方案,未验证不得宣称内置。不要为此新增自研认证内核。
  • 业务Outbox仍与业务事务写入;Payload Jobs可调度worker或处理内容任务,但外部邮件/许可证/奖励结果未知仍按PRD对账。定时器不是事务保障。

管理命令身份与发布事务

Payload服务端先验证真实管理员会话和动作权限,再经专用命令适配器调用Hono;不得从请求体/普通Header读取user或role作为可信主体。跨进程复用成熟签名库提供短期、限定aud/用途/动作/操作者/nonce的凭据,业务端验证并重新核对管理员当前权限与会话有效性;仅内网不是身份凭证。nonce重放防护与命令幂等分别处理,网络重试读取原操作结果。浏览器不得持有服务密钥,普通Better Auth消费者身份即使ID相同也无管理权限。禁止自改管理员角色、公开创建管理员;首次引导完成后关闭且重启不重新开启。

发布必须读取并冻结精确draft revision/hash,生成不可变快照;事务CAS校验预期有效版本,提交新指针、Outbox和操作者审计。校验后草稿有变化则拒绝并重新校验,不能提交变化后的未校验内容。Payload保存草稿和业务事务属于不同边界,不能假装一个Payload hook自动让两者原子;失败可按稳定发布操作ID恢复,业务已生效结果是唯一依据。

运行角色与迁移角色分离;Payload运行角色不能写认证表、余额/订单/消费/业务Outbox,不能执行DDL。管理API只允许白名单命令,凭据不提供任意SQL或全库访问。

4. 先执行B00后台框架接入关口

依赖D00;先于D07、D18。仅交付最小管理员登录、标签集合、草稿/版本、访问控制及业务发布命令样例,不一次做全部后台。

可复制任务:

执行B00。阅读PRD、后端复用方案与工程路线。用精确版本的Payload开源核心及PostgreSQL建立最小管理后台,保留Better Auth用户身份和Hono业务API;禁止自建后台CRUD和认证内核。验证同库表归属/迁移、管理账号隔离、角色权限、Local API不绕过、10双语标签草稿校验及发布版本命令。记录CPU/内存/构建与部署成本;不接付费工作流或SSO。输出真实测试结果与失败项,完成后停止。

验收:

  1. 匿名、消费者会话、编辑角色无法调用发布/调整额度接口;绕开UI直接REST/GraphQL/Local API仍拒绝。
  2. 管理注册入口关闭;管理员与用户退出/会话互不混用。认证表不被Payload迁移删除。
  3. 9/11标签、缺英文、重复id发布失败,现行版本不变;并发发布有明确顺序与审计。
  4. 旧稿恢复不立即上线,必须重新校验;策略发布失败不产生半版本,worker重试不重复生效。
  5. 审核员只能审查授权范围;财务可读账本不能通过生成CRUD修改余额;人工命令幂等并记录操作者/理由。
  6. 两进程重启、数据库恢复、配置回滚可复现;记录最低资源与备份步骤。用户请求高峰不应阻塞后台任务无限堆积。

B00通过后,D07用框架Collections管理剧库与标签;D18配置Payload字段与薄命令页面,不另建整套管理界面。消费账本仍按D08/D16的事务测试验收。

  1. 伪造user/role/Header、消费者ID碰撞、服务凭据重放或错aud/动作、管理员撤会话/撤角色后均不能执行命令;分别测试REST、GraphQL、自定义端点与Local API。直接SQL验证运行角色拒写受保护表且不能DDL。
  2. 并发修改草稿/发布旧revision时拒绝未校验快照;故障发生在Payload写入后或业务提交后时,重试查询原operation,不重复生效。

5. 部署与任务运行约束

Payload Jobs必须明确实际运行器和调度入口:单一调度责任方入队,独立runner执行;不只配置schedule,也不让两套调度重复入队。业务Outbox由业务worker消费,所有重试保持操作幂等。

生产禁自动schema push,迁移按模块归属版本化执行:先兼容新增schema,再服务升级,破坏性清理另一期;失败恢复保留账本事实,不用旧库覆盖已发生交易。B00测试两套迁移不越界删表。

记录Payload/Next、Hono、worker各自内存/CPU/数据库连接池与总连接预算;Cloudflare此次仅承载静态文档,不代表这些后端可直接部署Workers,后端宿主另行验证。