Files
wordpress-theme-aksrt/.specs/plans/user-creator-center-zibll.md
T
2026-08-06 15:07:35 +08:00

7.5 KiB
Raw Blame History

Plan: 用户中心创作中心与文章价格表

Architectural Decisions

Durable decisions that apply across all phases:

  • 唯一入口使用 posts:将现有“我的文章”面板升级为“创作中心”,不新增重复的 creator 面板或路由。
  • 复用用户中心壳:继续使用 AKSRT\\User\\Center、现有 ?tab=posts、REST panel、运行时配置、侧栏和移动端导航。
  • 复用现有投稿页:新建和编辑文章继续跳转现有 page-submit.php,不把 TinyMCE 编辑器复制到用户中心。
  • 价格使用唯一业务通路:单篇和批量价格修改必须复用 FrontSubmitPay::save_pay_meta(),或先将其抽取为唯一共享价格服务;不复制价格校验逻辑。
  • 价格数据模型不变:继续使用当前 aksrt_pay 及统一付费元数据,订单、购买和收益逻辑无需修改。
  • 服务端权限为最终边界:每篇文章重新检查作者归属、编辑权限和 new_post_pay 能力;前端选择结果不可信。
  • 批量更新采用逐项结果:服务端返回每篇文章的成功/失败结果,前端不得把部分失败伪装成整体成功。
  • 复杂付费资源继续走完整编辑器:价格表优先处理价格和基础付费字段;付费下载资源等复杂结构不重复实现。

Phase 1 — 创作中心文章总览可端到端使用

用户故事:US1、US2、US3、US8

What to build

升级现有 posts 面板的名称、信息层级和文章管理体验:增加创作中心标题及新建文章主操作,整合状态概览、文章列表、编辑/预览/删除操作,并复用现有文章查询、状态筛选、权限和用户中心 REST 加载机制。

Done when

  • src/User/Center.php、用户中心渲染映射和入口文案仍只注册/渲染 posts,不存在第二个重复的 creator 文章管理面板。
  • profile-posts.php 展示创作中心标题、新建文章入口、发布/草稿/待审/私密/全部状态数量,并继续使用现有状态筛选参数。
  • 文章列表展示标题、封面或占位图、状态、更新时间、付费摘要和按权限过滤后的操作按钮。
  • 编辑、预览和删除按钮分别遵循现有 can_edit_post()、文章可访问性和 can_delete_post() 判断;删除继续使用现有 nonce/AJAX 语义。
  • 通过用户中心 REST panel 和 ?tab=posts&post_status=... 深链访问时,服务端和客户端均能激活正确面板与筛选状态。

Phase 2 — 新建与编辑文章工作流连通

用户故事:US3、US8、US9

What to build

将创作中心的新建/编辑操作与现有前台投稿工作台完整连通,保留 zibll 参考中的双栏创作层级,同时只复用 AKSRT 已有的编辑器、文章参数、封面、草稿、审核和付费配置能力。保存或提交后回到创作中心时保留上下文并反馈结果。

Done when

  • 新建按钮使用 aksrt_get_new_post_url(),编辑按钮传递现有文章 ID,并由 FrontSubmit::can_submit()/can_edit_post() 控制可用性。
  • page-submit.php 的标题、编辑器、封面、分类、专题、高级筛选、标签、付费侧栏和操作区保持现有 AJAX、nonce 和权限链路。
  • 草稿保存、提交审核/发布、编辑已有文章和离开页面警告均继续由现有 FrontSubmit 与 front-submit.js 处理。
  • 从创作中心进入编辑器后返回时,能够恢复文章列表的状态筛选或分页上下文,并显示保存/提交结果。
  • 运行 PHP lint 及项目可执行的前端静态检查,确认本阶段未破坏现有投稿页面。

Phase 3 — 文章价格表支持单篇与批量调价

用户故事:US4、US5、US6、US9

What to build

在创作中心增加文章价格表,支持免费/付费阅读/付费资源摘要、现金/积分、普通价格和 VIP 价格展示;实现单篇快速编辑及“选择文章 → 统一价格方案 → 预览 → 确认”的批量调价流程。必要时先抽取共享价格服务,再接入单篇和批量请求。

Done when

  • 价格表按当前用户可管理文章展示免费、付费类型、现金/积分、普通价、VIP1/VIP2 及购买限制摘要;关闭付费时显示“免费”而不是误显示为 0。
  • 单篇编辑支持免费开关、支付模式、普通价、VIP1/VIP2、付费类型、购买限制和登录限制;不修改正文、封面或分类。
  • 单篇保存请求验证登录、作者归属、编辑能力和 new_post_pay,并复用 FrontSubmitPay::save_pay_meta() 或唯一共享价格服务。
  • 批量工具支持多选、免费/现金/积分价格方案、影响数量预览、确认和逐项成功/失败反馈;请求大小受控。
  • 最低/最高价、免费规则、VIP1/VIP2 层级、折扣计算、支付模式和付费类型校验与投稿页一致,且价格失败时保留输入值。

Phase 4 — 移动端、可访问性与完整验收

用户故事:US7、US8、US9

What to build

完成创作中心文章列表和价格表的响应式布局、键盘交互、加载/空数据/失败/部分成功反馈,以及接口和安全边界验收。确保桌面端高密度工作台和移动端卡片/展开式编辑体验都可用。

Done when

  • 在窄屏下文章列表和价格表转换为卡片或垂直字段布局,无页面级横向溢出,筛选、批量选择、编辑和确认操作均可通过触控完成。
  • 加载、空数据、请求失败和批量部分失败均有明确文本反馈;失败时不会显示误导性的 0 或清空用户输入。
  • 关键按钮、价格输入、状态标签和确认弹窗具备语义化结构、可见焦点和键盘操作能力,状态不只依赖颜色。
  • 所有新增 REST/AJAX 入口具备 permission_callback 或 nonce;输入使用项目既有清洗与价格归一化,输出完成转义。
  • php tools/audit-admin-contracts.php 退出码为 0 且无错误,并完成项目可执行的 PHP lint、前端构建或对应静态检查。

Out of Scope

  • 不复制 zibll 的 PHP 函数、字段名、商品规格模型、订单模型或主题配置 API。
  • 不在用户中心新增独立的 creator 页面、第二套文章管理 tab 或第二套前台路由;posts 是唯一文章管理入口,界面标题可升级为“创作中心”。
  • 不把完整 TinyMCE 编辑器复制嵌入用户中心;新建/编辑继续跳转 aksrt_get_new_post_url() 对应的投稿页面。
  • 不修改文章购买、订单结算、收益分成、优惠码、付费下载实际业务规则。
  • 不新增旧选项双读、旧路由兼容层、数据迁移或新旧 UI 并存实现。
  • 不把日常创作工作台迁入配置型 Admin SPA。

Open Questions

  • 默认将 posts 面板的显示标题改为“创作中心”,内部 tab key 保持 posts;若产品希望 URL 也改为 creator,需在实现前明确选择,因为项目规则不允许长期保留两个重复入口。
  • 默认批量调价采用“选择文章 → 统一价格方案 → 预览 → 确认”的模式;不包含按比例涨跌或价格模板市场。后续如需比例调整,应另立需求。
  • 默认价格表只覆盖安全可复用的价格字段;付费下载资源等复杂结构继续通过完整投稿编辑器维护,除非实现阶段确认现有服务可提供等价的批量契约。
  • 默认创作中心不内嵌完整编辑器;若需要无跳转编辑体验,应另行评估 TinyMCE 生命周期、自动保存和页面性能。