merge: 合入本地 Ops 扩展与 origin/main(ECR-009–016)

保留远程用户侧 ECR-009–016 与本地 Ops 目录/RBAC/CMS/危机等能力;文档标注分叉期间 ECR 编号冲突。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
jackyu66git
2026-08-13 01:45:53 +08:00
co-authored by Cursor
593 changed files with 21918 additions and 328 deletions
+51
View File
@@ -0,0 +1,51 @@
# TEST_REPORT — ECR-013A Admin RBAC
Date: 2026-08-07
ECR: ECR-013A · BD-2026-013A
Parent: WAVE0-FROZEN (`27f27a1`)
## Commands
```bash
export PATH="$HOME/.local/go/bin:$PATH"
cd apps/api && go test ./internal/integration/ -run 'TestAdmin(Ops|RBAC)' -count=1 -timeout 120s
cd ../.. && npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-013A
```
## Results
| Check | Result |
|-------|--------|
| `TestAdminOpsPhaseA` | PASS |
| `TestAdminRBAC` | PASS |
| `build:admin` | PASS |
| `ess-validate --phase review` | PASS |
## AC mapping
| AC-ID | Evidence |
|-------|----------|
| AC-F-01 | `TestAdminRBAC` GET `/roles``super_admin` |
| AC-F-02 | PUT limited role permissions → GET 一致 |
| AC-F-03 | GET `/me``permissions[]` + `role` |
| AC-S-01 | limited admin PUT permissions → **403** + `permission.denied` audit |
| AC-S-02 | limited admin membership/grant → **403** |
| AC-S-03 | 无 Admin session GET `/roles`**401** |
| AC-S-04 | `DELETE super_admin` 受 FK/system 约束失败;无 DeleteRole API |
| AC-P-01 | GET `/roles` 本机 &lt; 500ms |
| AC-O-01 | AuditLog `roles.permissions.update` |
| AC-O-02 | AuditLog `permission.denied`(含 permission/path meta |
## Scope guard
- 无 UserStatus / ECR-013B
- 无真支付 · UGC · Prompt
- AdminAuth ≠ DeviceAuth
- Migration `000015_admin_rbac`
## Notes
- admin-h5`/me``role` + `permissions`Shell 只读展示(最小)
- 完整角色编辑 UI 未做(API-first
- **不自动启动 ECR-013B**
+45
View File
@@ -0,0 +1,45 @@
# TEST_REPORT — ECR-013B AccountLifecycle
Date: 2026-08-07
ECR: ECR-013B · BD-2026-013B
Parent: WAVE0-FROZEN · Predecessor: ECR-013A Closed
## Commands
```bash
export PATH="$HOME/.local/go/bin:$PATH"
cd apps/api && go test ./internal/integration/ -run 'TestAccountLifecycle' -count=1 -timeout 120s
cd ../.. && npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-013B
```
## Results
| Check | Result |
|-------|--------|
| `TestAccountLifecycle` | PASS |
| `build:admin` | PASS |
| `ess-validate --phase review` | PASS |
## AC mapping
| AC-ID | Evidence |
|-------|----------|
| AC-F-01 | POST status=`banned` → user.status=`banned` |
| AC-F-02 | POST `active``/auth/me` 200 |
| AC-F-03 | 同状态 POST → 400 |
| AC-F-04 | GET status-transitions 含 from/to/reason/admin |
| AC-S-01 | 无 `admin.users.status.write` → 403 |
| AC-S-02 | banned Bearer → `/auth/me` 401 |
| AC-S-03 | 无 Admin POST status → 401 |
| AC-S-04 | 无 Admin GET transitions → 401 |
| AC-P-01 | GET transitions &lt; 500ms |
| AC-O-01 | AuditLog `users.status.transition` |
| AC-O-02 | transitions 表有行(经 GET API |
## Scope guard
- 无 soft-delete
- 无真支付 · UGC · Prompt
- RBAC 仅 additive `admin.users.status.write`
- Migration `000016_account_lifecycle`
+31
View File
@@ -0,0 +1,31 @@
# TEST_REPORT — ECR-017 AskOperations
Date: 2026-08-07 · Loop continuous · commit: `00a798b`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAskOperations -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-017
python3 scripts/ess-gate-check.py --ecr ECR-017
```
## Results
| Check | Result |
|-------|--------|
| TestAskOperations | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 thread · message_count≥1 |
| AC-F-02 | detail ≥2 messages |
| AC-S-01 | 无 token → 401 |
| AC-S-02 | 仅 users.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+31
View File
@@ -0,0 +1,31 @@
# TEST_REPORT — ECR-018 Entitlement
Date: 2026-08-07 · Loop continuous · commit: `c81f57a`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestUserEntitlements -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-018
python3 scripts/ess-gate-check.py --ecr ECR-018
```
## Results
| Check | Result |
|-------|--------|
| TestUserEntitlements | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | grant 后 flags.report_detail_via_membership=true |
| AC-F-02 | deep_access pay-mock 后 count≥1 |
| AC-F-03 | (空权益仍 200,覆盖于无会员前置态) |
| AC-S-01 | 无 token → 401 |
| AC-P-01 | GET &lt; 500ms |
| AC-O-01 | N/A 只读 |
+32
View File
@@ -0,0 +1,32 @@
# TEST_REPORT — ECR-019 ContentSafety
Date: 2026-08-07 · Loop continuous · commit: `cae3380`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestContentSafetyFilterRules -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-019
python3 scripts/ess-gate-check.py --ecr ECR-019
```
## Results
| Check | Result |
|-------|--------|
| TestContentSafetyFilterRules | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 system 种子 |
| AC-F-02 | evaluate「不想活了」命中 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 无 token → 401 |
| AC-S-02 | 仅 users.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | evaluate 不写工单 |
+32
View File
@@ -0,0 +1,32 @@
# TEST_REPORT — ECR-020 QualityFeedback
Date: 2026-08-07 · Loop continuous · commit: `93227d3`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestQualityFeedback -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-020
python3 scripts/ess-gate-check.py --ecr ECR-020
```
## Results
| Check | Result |
|-------|--------|
| TestQualityFeedback | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | admin POST → list 可见 |
| AC-F-02 | user POST → 200 |
| AC-F-03 | rating=9 → 400 |
| AC-S-01 | 无 token list → 401 |
| AC-S-02 | 仅 ask.read POST → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | AuditLog ask.feedback.create |
+32
View File
@@ -0,0 +1,32 @@
# TEST_REPORT — ECR-021 AICoreConfig
Date: 2026-08-08 · Loop continuous · commit: `140b08c`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAICoreSystemPrompts -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-021
python3 scripts/ess-gate-check.py --ecr ECR-021
```
## Results
| Check | Result |
|-------|--------|
| TestAICoreSystemPrompts | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 ask_default |
| AC-F-02 | get body 非空 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 无 token → 401 |
| AC-S-02 | 仅 users.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+32
View File
@@ -0,0 +1,32 @@
# TEST_REPORT — ECR-022 CrisisCare
Date: 2026-08-08 · Loop continuous · commit: `de22418`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestCrisisCarePolicies -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-022
python3 scripts/ess-gate-check.py --ecr ECR-022
```
## Results
| Check | Result |
|-------|--------|
| TestCrisisCarePolicies | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 system 种子 |
| AC-F-02 | evaluate 命中 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 无 token → 401 |
| AC-S-02 | 仅 users.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | evaluate 不写 Event |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-023 KnowledgeSource
Date: 2026-08-08 · Loop continuous · commit: `bf1ae8b`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAICoreKnowledgeSources -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-023
python3 scripts/ess-gate-check.py --ecr ECR-023
```
## Results
| Check | Result |
|-------|--------|
| TestAICoreKnowledgeSources | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 ask_grounding |
| AC-F-02 | get source_kind 合法 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 无 token → 401 |
| AC-S-02 | 仅 users.read → 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-024 Banner
Date: 2026-08-08 · Loop continuous · commit: `32ac559`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestOpsCMSBanners -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-024
python3 scripts/ess-gate-check.py --ecr ECR-024
```
## Results
| Check | Result |
|-------|--------|
| TestOpsCMSBanners | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list 含 home_promo |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-025 FeedSlot
Date: 2026-08-08 · Loop continuous · commit: `e324663`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestOpsCMSFeedSlots -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-025
python3 scripts/ess-gate-check.py --ecr ECR-025
```
## Results
| Check | Result |
|-------|--------|
| TestOpsCMSFeedSlots | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-026 ScheduledPublication
Date: 2026-08-08 · Loop continuous · commit: `b91806b`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestOpsCMSPublications -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-026
python3 scripts/ess-gate-check.py --ecr ECR-026
```
## Results
| Check | Result |
|-------|--------|
| TestOpsCMSPublications | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-027 KnowledgeChunk
Date: 2026-08-08 · Loop continuous · commit: `c1a8a58`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAICoreKnowledgeChunks -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-027
python3 scripts/ess-gate-check.py --ecr ECR-027
```
## Results
| Check | Result |
|-------|--------|
| TestAICoreKnowledgeChunks | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-028 ToolDefinition
Date: 2026-08-08 · Loop continuous · commit: `00d9ed5`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAICoreToolDefinitions -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-028
python3 scripts/ess-gate-check.py --ecr ECR-028
```
## Results
| Check | Result |
|-------|--------|
| TestAICoreToolDefinitions | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-029 BlockPolicy
Date: 2026-08-08 · Loop continuous · commit: `5846d39`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestContentSafetyBlockPolicies -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-029
python3 scripts/ess-gate-check.py --ecr ECR-029
```
## Results
| Check | Result |
|-------|--------|
| TestContentSafetyBlockPolicies | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-030 ModerationCase
Date: 2026-08-08 · Loop continuous · commit: `b904e6b`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestContentSafetyModerationCases -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-030
python3 scripts/ess-gate-check.py --ecr ECR-030
```
## Results
| Check | Result |
|-------|--------|
| TestContentSafetyModerationCases | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-031 CrisisEvent
Date: 2026-08-08 · Loop continuous · commit: `24a1152`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestCrisisCareEvents -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-031
python3 scripts/ess-gate-check.py --ecr ECR-031
```
## Results
| Check | Result |
|-------|--------|
| TestCrisisCareEvents | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-032 InterventionOutcome
Date: 2026-08-08 · Loop continuous · commit: `447fb6d`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestCrisisCareInterventions -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-032
python3 scripts/ess-gate-check.py --ecr ECR-032
```
## Results
| Check | Result |
|-------|--------|
| TestCrisisCareInterventions | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-033 HandoffCase
Date: 2026-08-08 · Loop continuous · commit: `487bee7`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAskOpsHandoffs -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-033
python3 scripts/ess-gate-check.py --ecr ECR-033
```
## Results
| Check | Result |
|-------|--------|
| TestAskOpsHandoffs | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-034 PrivacyRequest
Date: 2026-08-08 · Loop continuous · commit: `45e98f6`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestAdminPrivacyRequests -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-034
python3 scripts/ess-gate-check.py --ecr ECR-034
```
## Results
| Check | Result |
|-------|--------|
| TestAdminPrivacyRequests | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-035 StarConfig
Date: 2026-08-08 · Loop continuous · commit: `ebc93b6`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestExploreStarConfigs -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-035
python3 scripts/ess-gate-check.py --ecr ECR-035
```
## Results
| Check | Result |
|-------|--------|
| TestExploreStarConfigs | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-036 RhythmConfig
Date: 2026-08-08 · Loop continuous · commit: `bd9e134`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestExploreRhythmConfigs -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-036
python3 scripts/ess-gate-check.py --ecr ECR-036
```
## Results
| Check | Result |
|-------|--------|
| TestExploreRhythmConfigs | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-037 ImageCardDeck
Date: 2026-08-08 · Loop continuous · commit: `5c462ec`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestExploreImageCardDecks -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-037
python3 scripts/ess-gate-check.py --ecr ECR-037
```
## Results
| Check | Result |
|-------|--------|
| TestExploreImageCardDecks | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-038 ReportTemplate
Date: 2026-08-08 · Loop continuous · commit: `5de9a7b`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestGrowthReportTemplates -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-038
python3 scripts/ess-gate-check.py --ecr ECR-038
```
## Results
| Check | Result |
|-------|--------|
| TestGrowthReportTemplates | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-039 FunnelDefinition
Date: 2026-08-08 · Loop continuous · commit: `e955f1e`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestGrowthFunnelDefinitions -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-039
python3 scripts/ess-gate-check.py --ecr ECR-039
```
## Results
| Check | Result |
|-------|--------|
| TestGrowthFunnelDefinitions | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |
+33
View File
@@ -0,0 +1,33 @@
# TEST_REPORT — ECR-040 ScaleDefinition
Date: 2026-08-08 · Loop continuous · commit: `e9c11cd`
## Commands
```bash
cd apps/api && go test ./internal/integration/ -run TestExploreScaleDefinitions -count=1
npm run build:admin
python3 scripts/ess-validate.py --phase review --ecr ECR-040
python3 scripts/ess-gate-check.py --ecr ECR-040
```
## Results
| Check | Result |
|-------|--------|
| TestExploreScaleDefinitions | PASS |
| build:admin | PASS |
| ess-validate review | PASS |
| ess-gate-check | PASS |
## AC
| ID | Evidence |
|----|----------|
| AC-F-01 | list seed/empty ok |
| AC-F-02 | get 200 |
| AC-F-03 | 未知 id → 404 |
| AC-S-01 | 401 |
| AC-S-02 | 403 |
| AC-P-01 | list &lt; 500ms |
| AC-O-01 | N/A 只读 |