# Feature Spec: GrowthInsights · FunnelDefinition 写面(Ops · ECR-047) > Status: `Active`(**Implemented · ECR-047 Closed**) > Map: `§7` · Capability: `GrowthInsights` · BC: `Analytics_OpsB` > Auth: `docs/WAVE0/ECR-047_WRITE_AUTHORIZATION.md`(**仅 ECR-047**) > Predecessor: ECR-039 Closed(只读)· ECR-046 Closed > 关联:[ops-funnel-definition.md](ops-funnel-definition.md) --- ## 1. 目标 运营可 **创建 / 更新 / 上下架** `FunnelDefinition`(漏斗目录);写鉴权 + 审计;**无**新 C 端路由。 **Closed 后立即 STOP**,不自动 ECR-048。 ## 2. In / Out | In | Out | |----|-----| | Admin POST/PUT `/admin/analytics/funnel-definitions*` | ReportTemplate 写 | | 加法 `admin.growth.write` | SystemPrompt · Knowledge · Chunk | | 复用表 `funnel_definitions` | soft-delete · 真支付 · UGC | | 审计 | 题干 · Crisis/Handoff | | | 自动 ECR-048 · 新 C 端路由 | ## 3. Domain | 字段 | 规则 | |------|------| | `code` | 唯一;`^[a-z][a-z0-9_]{1,62}$`;`system=true` **不可改 code** | | `title` | 必填 · ≤128 | | `active` | `false` = 下架(唯一下架手段) | | `system` | 种子行;禁止物理删除 | ## 4. API | Method | Path | 权限 | |--------|------|------| | GET | `/admin/analytics/funnel-definitions` · `/{id}` | `admin.growth.read` | | POST | `/admin/analytics/funnel-definitions` | `admin.growth.write` | | PUT | `/admin/analytics/funnel-definitions/{id}` | `admin.growth.write` | 无 DELETE · 无新 C 端路径。 ## 5. Permission / Migration - Migration `000056_ops_funnel_definition_write`:授予 `super_admin` → `admin.growth.write` - 编码时占号(Max=`000055` → `000056`) ## 6. UI admin-h5 漏斗定义页:列表 + 新建/编辑/上下架。 ## 7. AC | ID | Then | |----|------| | AC-F-01 | POST → list/get 可见 | | AC-F-02 | PUT active=false → list 仍可见且 active=false | | AC-F-03 | 重复 code → 409 | | AC-S-01/02 | 401;仅 growth.read → POST 403 | | AC-A-01 | 写产生审计 | | AC-O-01 | 无 soft-delete · 无 ReportTemplate/Prompt 写路径 | ## 8. Closed 后 **立即 STOP**。ECR-048 须新 Candidate Review + Human 拍板。 ## 9. Trace ECR-047 · BD-2026-047 · CONTRACT_DIFF · ECR-047_WRITE_AUTHORIZATION