WIP-206 代码质量审计 v4 — 小渔(基线重跑)

🗄 已归档快照(2026-09-13 文档时效治理):本文件为历史阶段设计快照,最新口径以 docs/contracts/api-v1.3-matrix.md、docs/plans/2026-09-14-白标化内核抽取-两实例对比.md 及 TASKS 现行为准。设计思路仍可参考,数据与结论已过时。
审计日期: 2026-09-07 22:20
基线 HEAD: c1a5966f(落后量=0,与 FETCH_HEAD 同步)
审计性质: 只查问题不改代码

一、口径校正(v3→v4)

口径v3 值v4 实测值校正说明
数据库表数76107(静态 SQL)/ 109(生产实测)v3 只扫 002-048 新建表,漏了 001 baseline 52 张;生产多出 2 张(疑似视图或手动 DDL)
C端页面数120119 目录 / 118 注册目录 payment-confirm 和 task-review 在目录中但未在 app.json 注册
B端页面数2325(app.tsx 路由)/ 27(.tsx 文件)v2 漏计 2 个路由
云函数9 个废弃(用户确认)代码仍保留但不使用

二、已修项标注(不复报)

以下 9 项已被小冈 349c449 + 阿仁 2aee605 修复,本次不复报:

编号问题修复 commit修复内容
F-1401 未清 token349c449request.ts 401 清 token + 跳登录
F-2弱网无重试349c449GET 自动重试 1 次(1200ms)
F-3unwrap 不认 {ok,data}3ace656request.ts unwrap 同时识别 code 和 ok
F-4mockPay 无守卫349c449staging/localhost 白名单外拒
F-5uploadPilgrimageImage 死代码349c449已删
F-6scene-cards 诚实降级文案349c449"接口未建"→"暂未开放"
C-1JWT_SECRET 硬编码默认值2aee605config.py fail-closed
C-2APP_ENV 默认 dev2aee605config.py fail-closed + 生产 APP_ENV=prod
C-3dev_id 无速率限制2aee605prod 403 + 60s/10 次限速

B-1 CORS 白名单(波波已补生产 .env 6 域名)**代码兜底 ["*"] 仍在,继续报为 Minor**。


三、当前未修问题(42 项更新版)

Critical(1 项)

#问题位置详情
A1种子用户一次性回填 SQL 缺失050 迁移已有用户依赖重新登录被动触发回填,非一次性覆盖

Major(9 项)

#问题位置详情
B-3_require_admin 含多余 phone 检查admin.py:9-17未绑手机号的管理员被误拦
B-4站点配置 PUT 允许 staff 修改miniapp_site.py:89-101权限过宽
B-5支付端点无金额服务端校验miniapp_orders.py:758-790接真实支付时需修复
D-1credit_journal.direction 无 CHECK001 baseline:438财务流水必须约束 in/out
D-4user_wallets.balance 无非负 CHECK001 baseline:1949防止负余额
F-18scene-cards 默认 statusBar 文案scene-cards.ts:82-155"接口未建,诚实降级"→已改"暂未开放"(WARN)
F-23guest-archive 硬编码假数据guest-archive.ts:15-38需接真 API 或诚实空态
W-1FeatureFlags 接口未建FeatureFlags.ts:44-52100ms setTimeout 伪异步
W-2B端 token 缓存 30 天 vs 后端 24hauth.ts:72过期后用户请求失败才跳登录

Minor(11 项)

#问题位置
B-1main.py CORS 代码兜底 ["*"] 仍在main.py:28
B-2密码兼容裸 MD5/SHA1/SHA256utils.py:45-67
b-1datetime.utcnow() Python 3.12 弃用security.py:12
b-2登录端点无速率限制auth.py:31,89
b-3核销码指纹复用 jwt_secretminiapp_orders.py:211-214
D-25 张表缺关键索引001 baseline
D-5废弃表(package_items/settlement_ledger)001 baseline
f-1auth.ts 无 token 过期管理auth.ts:87-107
f-2app.ts onLaunch 无登录态预检app.ts:9-12
w-1b-workbench App.tsx 直接读 window.locationApp.tsx:38-45
w-2Network.ts 401 强刷Network.ts:51-58

WARN(unwrap 冗余 double-unwrap,7 处)

#文件:行风险
W1scene-cards.ts:217-221低
W2scene-cards.ts:230-235低
W3products.ts:30-34类型错误,运行时安全
W4products.ts:38类型错误,运行时安全
W5products.ts:91-92运行时安全
W6product-detail.ts:56运行时安全
W7safety.ts:6-7注释过时

四、表数详细清单(107 张 SQL 可解释)

Baseline 52 张 + 净新增 55 张 = 107 张。

Baseline (001): 52 张

users, user_identities, user_wallets, merchants, merchant_staff, merchant_positions, merchant_position_perms, destinations, pois, routes, rules, knowledge, guides, recommendations, calendar_events, transport_routes, certificates, health_records, safety_assessments, sos_alerts, documents, document_versions, document_members, document_comments, document_audit_logs, collab_projects, collab_modules, collab_work_items, collab_work_item_comments, collab_work_item_events, agent_contracts, credit_budgets, credit_journal, credit_tasks, credit_task_claims, friend_inventory, delegations, delegation_items, payment_confirmations, settlement_ledger, settlement_vouchers, split_agreements, quote_sessions, quote_vouchers, verifications, penalty_records, service_items, package_items, transport_slots, room_calendar, system_settings, audit_log

净新增 (002-052): 55 张

packages, package_components, partner_profiles, package_orders, package_order_items, package_order_events, orders, order_items, fulfillment_items, refund_policies, settlement_records, guest_bindings, site_config, road_status, status_daily, app_messages, order_events, user_checklist_states, user_wishlist, merchant_profiles, merchant_updates, passport_temples, user_temple_stamps, user_footprints, user_pilgrimage_counts, user_medals, reviews, key_balances, key_settlements, traveler_origin_stats, redemption_codes, redemption_conflicts, redemption_events, commission_entries, merchant_bills, merchant_bill_lines, weather_windows, distributors, distribution_records, scan_events, guide_profiles, subscriptions, task_templates, travel_demands, demand_interests, merchant_category_subscriptions, private_route_engagement, guide_articles, private_route_user_state, kora_routes, kora_route_waypoints, kora_route_segments, emergency_contacts, service_fee_records, trial_openids

生产 109 vs SQL 107 差距

2 张表差异来源待生产环境执行:

SELECT tablename FROM pg_tables WHERE schemaname='public' ORDER BY tablename;

五、死代码目录

pages/payment-confirm/ 和 pages/task-review/ 存在于目录但未在 app.json 注册,属于死代码。


六、波波底稿交叉核验

波波底稿 docs/reports/2026-09-07-波波交叉核验-10份他人报告.md 中标注的 10 项仍成立清单,经我复核:

波波底稿"更正3"(住宿业态应仅展示)已被同文更正4推翻,我不引用。


*审计结束。署名:小渔 2026-09-07 | 基线 c1a5966f | 落后量 0*