# Feature Spec: ExploreConfig · ImageCardDeck 写面(Ops · ECR-045) > Status: `Active`(**Implemented · ECR-045 Closed**) > Map: `§7` · Capability: `ExploreConfig` · BC: `Explore_Reports` > Auth: `docs/WAVE0/ECR-045_WRITE_AUTHORIZATION.md`(Human 批准 · **仅 ECR-045**) > Predecessor: ECR-037 Closed(只读)· ECR-044 Closed(Rhythm 写) > 关联:[ops-image-card-deck.md](ops-image-card-deck.md) --- ## 1. 目标 运营可 **创建 / 更新 / 上下架** `ImageCardDeck`(牌组目录);写操作鉴权 + 审计;C 端可读 active deck 并影响 `/cards` 可用性;失败回退「现网可抽」。 **Closed 后立即 STOP**,不自动 ECR-046。 ## 2. In / Out | In | Out | |----|-----| | Admin POST/PUT `/admin/explore/image-card-decks*` | **牌面/单卡内容 CRUD** · Star / Rhythm / Scale | | 复用 `admin.explore.write` | SystemPrompt · Knowledge · Chunk | | 复用表 `image_card_decks` | soft-delete · 真支付 · UGC | | C 端 GET active decks | Crisis / Handoff 写 | | `/cards`:无 active → 空态禁抽卡 CTA;失败 → 回退可抽 | 自动 ECR-046 | | 审计 | 新权限子系统 | ## 3. Domain | 字段 | 规则 | |------|------| | `code` | 唯一;`^[a-z][a-z0-9_]{1,62}$`;`system=true` 不可改 code | | `title` | 必填 · ≤128 | | `active` | `false` = 下架(唯一下架手段) | | `system` | 种子行;禁止物理删除 | ## 4. API ### Admin | Method | Path | 权限 | |--------|------|------| | GET | `/admin/explore/image-card-decks` · `/{id}` | `admin.explore.read` | | POST | `/admin/explore/image-card-decks` | `admin.explore.write` | | PUT | `/admin/explore/image-card-decks/{id}` | `admin.explore.write` | 无 DELETE。 ### C 端 | Method | Path | Auth | 语义 | |--------|------|------|------| | GET | `/api/v1/cards/decks` | DeviceAuth | 仅 `active=true`;按 code 排序 | ## 5. C 端生效 | 条件 | user-h5 `/cards` | |------|------------------| | ≥1 active | 保持现网抽卡 | | 成功且 0 active | 「意象牌组暂未开放」空态;禁用抽卡 CTA | | 请求失败 | **回退**不阻断抽卡 | ## 6. Permission / Migration - Migration `000054_ops_image_card_deck_write`:幂等确认 `super_admin` → `admin.explore.write` - 编码时占号(Max=`000053`) ## 7. UI | 端 | 行为 | |----|------| | admin-h5 意象牌组页 | 列表 + 新建/编辑/上下架(仅 Deck) | | user-h5 `/cards` | 按 §5 | ## 8. AC | ID | Then | |----|------| | AC-F-01 | POST → list/get 可见 | | AC-F-02 | PUT active=false → C 端不含 | | AC-F-03 | 有 active → C 端非空 | | AC-F-04 | 重复 code → 409 | | AC-S-01/02 | 401;仅 read → POST 403 | | AC-A-01 | 写产生审计 | | AC-C-01 | 全下架后空态/禁 CTA | | AC-C-02 | API 失败回退可抽 | | AC-O-01 | 无牌面写路径 · 无 soft-delete | ## 9. Closed 后 **立即 STOP**。ECR-046 须新 Candidate Review + Human 拍板。 ## 10. Trace ECR-045 · BD-2026-045 · CONTRACT_DIFF · ECR-045_WRITE_AUTHORIZATION