🕐 时效标注(2026-09-13 文档治理):近期设计件,口径以 TASKS 现行与契约 v1.3 为准。
⛔ 本文档已过时(2026-09-09),现行以 docs/reports/WIP-206-audit-v4.md 为准。
审计日期: 2026-09-07
审计范围: A1 护栏复检 + A2 台账复检 + 小冈 58 文件纯增量复检
基线: FETCH_HEAD = a1f80bf(最新 main)
| 审计项 | 判定 | 严重度 |
|---|---|---|
| A1 护栏 — 写入路径强制执行 | FAIL | P0 |
| A1 护栏 — 防护种子用户污染 | FAIL | P0 |
| A1 护栏 — is_test 传播完整性 | PARTIAL FAIL | P0 |
| A1 护栏 — 护栏中间件 | FAIL | P2 |
| A2 台账 — 迁移总数一致性 | FAIL | P1 |
| A2 台账 — service_fee_records 列差异 | PASS(已识别) | — |
| A2 台账 — 权威查询命令 | PASS | — |
| 小冈 58 文件 — 域边界合规 | PASS | — |
| 小冈 58 文件 — 纯增量 | PASS | — |
| 小冈 58 文件 — auth.ts mock_token_ 清理 | PASS | — |
| 小冈 58 文件 — 涉钱假数据 | FAIL | P0 |
综合判定:3 FAIL P0 + 2 FAIL P1/P2 + 5 PASS
根因:security.py L33 的 get_current_user SELECT 语句未包含 is_test 列:
SELECT id, openid, phone, nickname, status, token_version FROM users WHERE id=$1
下游所有通过 Depends(get_current_user) 获取 user dict 的端点没有 is_test 键,被迫自行用 openid.startswith("dev_") 判断。
受影响端点(5 个文件,trial 用户写入 is_test 永远为 false):
| 文件 | 行号 | 错误写法 |
|---|---|---|
| demand.py | 373 | is_test = bool(user.get("openid", "").startswith("dev_")) |
| merchant_console.py | 384,432 | 同上(涉钱域!service_fee_records 永远 is_test=false) |
| kora_routes.py | 48 | 同上 |
| scenes.py | 38 | 同上 |
| emergency_contacts.py | 28 | 同上 |
正确做法(miniapp_orders.py L413-414 已正确实现):
is_test_row = await pool.fetchrow("SELECT is_test FROM users WHERE id=$1", uid)
is_test = bool(is_test_row and is_test_row["is_test"])
已正确传播的端点(从 users 表读 is_test):miniapp_orders、packages、quotes、tasks_full、miniapp_workbench_redeem
未正确传播的端点(用 openid 前缀判断):demand、merchant_console、kora_routes、scenes、emergency_contacts
完全缺失 is_test 的 INSERT:tasks_api.py(credit_task_claims)、content.py、feed.py
grep "SELECT.*FROM users" backend/app/security.py
grep -n "trial_openids" backend/sql/050_trial_users_guardrail.sql
grep -rn 'startswith.*dev_' backend/app/routers/ --include="*.py"
grep -rn 'is_test.*users.*WHERE' backend/app/routers/ --include="*.py"
sudo docker exec kailash-pg psql -U yos -d kailash -tAc "SELECT count(*) FROM schema_migrations"
ls /srv/kailash/sql/[0-9][0-9][0-9]_*.sql | wc -l
login() 函数已删除 mock fallback,失败即诚实 reject ✅
| 文件 | 内容 | 严重度 |
|---|---|---|
| redeem-log.ts:13-19 | K20260901042, 68/50/45 硬编码核销记录 | P0 |
| workbench-settings.ts:13-16 | 扎西/卓玛/达瓦/央金硬编码员工名册 | P0 |
grep -rn "mock_token_\|游客小张" miniprogram/miniprogram/utils/auth.ts
grep -rn "K20260901042\|古格川菜馆" miniprogram/miniprogram/pages/ --include="*.ts"
*报告结束。署名:小渔 2026-09-07*