7.5 KiB
7.5 KiB
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 生命周期、自动保存和页面性能。