Admin POST/PUT 复用 admin.cms.write;C 端 GET /home/feed-slots;首页无 active 槽隐藏推荐区、失败回退展示;无新 migration。 Co-authored-by: Cursor <cursoragent@cursor.com>
41 lines
1.5 KiB
Markdown
41 lines
1.5 KiB
Markdown
# Feature Spec: OpsCMS · FeedSlot 写面(Ops · ECR-042)
|
||
|
||
> Status: `Active`(**ECR-042 Closed**)
|
||
> Map: `§7` · Capability: `OpsCMS` · BC: `Ops_CMS_NoUGC`
|
||
> Write-Wave: `docs/WAVE0/WRITE_WAVE_AUTHORIZATION.md`
|
||
> Predecessor: ECR-025 Closed · ECR-041 Closed
|
||
|
||
## Goal
|
||
|
||
运营可创建/更新/上下架 FeedSlot;C 端可读 active 槽位;首页主信息流区按 `home.main`(或 placement=home 的 active 槽)显隐;失败回退「仍展示推荐区」。
|
||
|
||
## In / Out
|
||
|
||
| In | Out |
|
||
|----|-----|
|
||
| Admin POST/PUT feed-slots · `admin.cms.write` | Banner 再扩 · ScheduledPublication 写 |
|
||
| C 端 GET `/home/feed-slots` | UGC 内容流正文 CMS · soft-delete |
|
||
| 首页:无 active home 槽 → 隐藏推荐区;API 失败 → 仍显示 | 真支付 · Crisis/Handoff · 新权限模型 |
|
||
|
||
## Domain
|
||
|
||
复用 `ops_feed_slots`:`code` 唯一 · `slot_key` · `placement` ∈ {home,explore,ask} · `active` · `system`(system 不可改 code)。
|
||
|
||
## API
|
||
|
||
| Method | Path | Perm |
|
||
|--------|------|------|
|
||
| GET | `/admin/cms/feed-slots*` | cms.read |
|
||
| POST/PUT | `/admin/cms/feed-slots*` | cms.write |
|
||
| GET | `/home/feed-slots?placement=home` | DeviceAuth |
|
||
|
||
无 DELETE;下架 `active=false`。
|
||
|
||
## AC
|
||
|
||
AC-F create/update/conflict/invalid · AC-S 401/403 · AC-A audit · AC-C 首页显隐与失败回退 · AC-O 无 Banner 合并 / 无 soft-delete
|
||
|
||
## Migration
|
||
|
||
无新表;权限已在 `000051`。本切片 **不新增 migration 文件**(Max 保持 `000051`)。
|