wip: article AI polish, category SEO fields, cover generator, membership plan seeder
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
# 会员插件 — 功能清单
|
||||
|
||||
## 状态
|
||||
- 对应 SPEC:`docs/specs/membership/SPEC.md`
|
||||
- 最近更新:2026-08-12 03:55
|
||||
|
||||
## 完成项
|
||||
|
||||
### payment 核心配套
|
||||
- [x] `entitlements.expires_at` 迁移
|
||||
- [x] `hasEntitlement` / `markPaid.ownedElsewhere` / `scopeActive`/`isActive` 统一未过期语义
|
||||
- [x] `hasActiveAny(userId, productType)`
|
||||
- [x] `resolveCheckoutProduct`:membership 服务端取价;未知类型 422(去掉 query 兜底)
|
||||
|
||||
### 核心扩展
|
||||
- [x] `filament.article.validate_access_restrictions` 挂载(Create/Edit)
|
||||
- [x] `MembershipPluginPage` 导航恒隐藏
|
||||
- [x] paid-content:互斥改到 validate 点;mutate 不再抢先 unset
|
||||
|
||||
### membership 插件
|
||||
- [x] plugin.json `requires` + docs README
|
||||
- [x] migrations:`membership_plans`、`article_membership`
|
||||
- [x] models + PlanSeeder(月度/终身)
|
||||
- [x] Filament PlanResource
|
||||
- [x] `order.paid` 写 expires_at(fail-closed)
|
||||
- [x] 前台套餐页 + status JSON + 资料页状态
|
||||
- [x] 文章表单会员闸 + article.access + 互斥
|
||||
- [x] 删除 plan 守卫(引用/权益)
|
||||
|
||||
### 文档与测试
|
||||
- [x] docs/plugins.md
|
||||
- [x] PHPUnit Membership + PaidContent 回归(50 passed)
|
||||
|
||||
## 变更记录
|
||||
| 时间 | 原因 | 变更 |
|
||||
|------|------|------|
|
||||
| 2026-08-12 03:45 | SPEC 用户确认定稿 | 创建功能清单 |
|
||||
| 2026-08-12 03:55 | 实现完成 | 勾选全部完成项 |
|
||||
Reference in New Issue
Block a user