Captures the current working tree after theme slots, ArticleAccess, and the payment / paid-content plugins so subsequent work has a reviewable git history.
3.7 KiB
3.7 KiB
插件扩展面 + 支付 / 内容付费 — 待测清单
状态
- 对应 SPEC:
docs/specs/plugin-extension-commerce/SPEC.md - 最近更新:2026-08-12 01:12
待测项
未启用商务插件
- 场景:免费文 Web;步骤:打开 show;期望:全文可见,行为同现网
- 场景:密码文 Web;步骤:未解锁打开 → 输错 → 输对;期望:密码页 / 错误 / 全文
- 场景:密码文 API;步骤:GET
/api/v1/articles/{id};期望:无content/content_html全文,有access.status=need_password - 场景:密码文 RSS;步骤:打开
/rss.xml;期望:该条目无全文 HTML
依赖与插件管理
- 场景:仅启用 paid-content;步骤:后台启用;期望:拒绝并提示需要 payment
- 场景:先 payment 再 paid-content;步骤:依次启用;期望:成功
- 场景:查看说明;步骤:插件卡片打开 docs;期望:可见 README 内容
- 场景:禁用后 UI;步骤:禁用两插件;期望:订单菜单/付费表单 Section 消失
- 场景:禁用被依赖的 payment;期望:拒绝并提示 dependents
payment Stub
- 场景:登录建单支付;步骤:对测试商品走 checkout → 模拟成功;期望:order=paid、entitlement 有效、触发逻辑可观测
- 场景:后台标记已支付;步骤:pending 订单点标记;期望:同上入账(人工)
- 场景:重复购买;步骤:已有权益再 checkout;期望:拒绝并提示
- 场景:未登录 checkout;步骤:访问建单;期望:重定向
/login.shtml(非 500)
paid-content
- 场景:后台定价;步骤:编辑文章启用付费设价格保存;期望:
article_products有记录 - 场景:互斥;步骤:同时设密码与付费启用;期望:校验失败
- 场景:未购 Web(含未登录);步骤:打开付费文;期望:试读+购买,
need_purchase,无全文 - 场景:购买后 Web;步骤:登录 Stub 支付后打开;期望:全文
- 场景:作者/admin;步骤:作者或 admin 打开未购付费文;期望:全文
- 场景:付费文 API/RSS;步骤:匿名拉取;期望:无全文
- 场景:首页列表;期望:不泄露付费/密码全文
Review 修复验证(Bugbot 2026-08-12)
- 场景:
trial_value大于正文长度的付费短文;期望:Web/API 均看不到结尾内容 - 场景:两个
article.access监听器(先收紧后放行 + 一个返回非法值);期望:最终仍need_purchase - 场景:manifest
docs写../../../../.env;期望:docsPath/readDocs返回 null - 场景:同一商品连续两次 checkout;期望:复用同一 pending 单
- 场景:已由 A 单开通权益后对 B 单
markPaid;期望:抛错拒绝 - 场景:隐藏/未发布付费文 checkout;期望:422 且不建单
- 场景:复用 pending 单时价格已变;期望:订单与明细按新价刷新,仍只有 1 张单
回归
- 场景:免费文 API/RSS;期望:仍有全文(或既有摘要策略不变)
- 场景:主题槽/snippet;期望:不受影响
- 场景:
php artisan test相关用例全绿(40 passed)
变更记录
| 时间 | 原因 | 变更 |
|---|---|---|
| 2026-08-12 00:17 | SPEC 定稿后初版 | 创建待测清单 |
| 2026-08-12 00:50 | 实现+qodercli 闭环 | 勾选自动化覆盖项;后台标记已支付留人工 |
| 2026-08-12 01:01 | Bugbot review 修复 | 新增 6 条 Review 修复验证项,全部自动化覆盖 |
| 2026-08-12 01:12 | 复用单重新定价 | 新增第 7 条验证项(新价刷新且不叠单) |