神山秘境 代码质量综合审计报告(修正版)

🗄 已归档快照(2026-09-13 文档时效治理):本文件为历史阶段设计快照,最新口径以 docs/contracts/api-v1.3-matrix.md、docs/plans/2026-09-14-白标化内核抽取-两实例对比.md 及 TASKS 现行为准。设计思路仍可参考,数据与结论已过时。
审计日期: 2026-09-07
审计范围: 服务器最新代码(FETCH_HEAD = a1f80bf,1261 commits ahead of 本地快照)
审计性质: 只查问题,不修复代码
工作区: /Users/yujiaxinmeiti/Desktop/kailash-worktrees/xiaoyu-real-gz5gz9/

一、项目真实状态

维度数据
后端FastAPI + PostgreSQL,51 个路由文件,287 个 API 端点
数据库47 个迁移文件,76 张表,110+ 外键,50+ 索引
小程序WXML + TypeScript(miniprogram/),120 个页面,mockMode=false
B端H5React + Vite(b-workbench/),23 个路由,零 mock
协作3 个 AI 代理(小冈/阿仁/小齐)+ 1 个人类(刘总),WIP-192
福钥系统核心创新,完整实现(冻结/抵扣/结算)

二、问题总览

严重度后端数据库前端(C端)B端H5合计
🔴 Critical3———3
🟠 Major557219
🟡 Minor543315
⚪ Info2—215
合计15912642

三、Critical(3 项,需立即处理)

C-1: JWT_SECRET 硬编码默认值

C-2: APP_ENV 默认值为 "dev"

C-3: dev_id 登录无速率限制


四、Major(19 项)

后端 Major(5 项)

#位置问题
B-1main.py:28CORS 默认 ["*"],生产环境未配置时任何域名可跨域访问
B-2utils.py:45-67密码兼容裸 MD5/SHA1/SHA256,长期未登录用户的弱哈希密码永远不升级
B-3admin.py:9-17_require_admin 含多余的 phone is None 前置检查,未绑手机号的管理员会被误拦
B-4miniapp_site.py:89-101站点配置 PUT 端点允许 staff 角色修改全站配置(权限过宽)
B-5miniapp_orders.py:758-790支付端点无金额服务端校验(当前 mock-pay 阶段风险有限,接真实支付时需修复)

数据库 Major(5 项)

#位置问题
D-1001 baselinecredit_journal.direction 无 CHECK 约束(财务流水必须约束 in/out)
D-2001 baseline多表缺关键索引:credit_journal(merchant_id)、guides(is_active,sort_order)、transport_routes(is_active)、health_records(user_id,created_at)
D-3025 迁移DROP CONSTRAINT 和 ADD CONSTRAINT 之间有无约束窗口(并发写入可能插入无效状态)
D-4001 baselineuser_wallets.balance 缺 CHECK (balance >= 0) 非负约束
D-5全局package_items(001) 与 package_components(005) 功能重叠,settlement_ledger 与 settlement_records 并存,可能有废弃表

前端(C端) Major(7 项)

#位置问题
F-1request.ts:53-59401 未清 token 未跳登录页,用户 token 过期后陷入连续失败
F-2request.ts:47-63弱网场景无任何自动重试(高原转山信号极差)
F-3request.ts:20-28unwrap 只认 {code,data} 信封,不认 {ok,data} 信封,部分接口拿到包装对象而非 data
F-4order.ts:89-93mockPay 指向 admin 路径,无环境守卫,生产包暴露 staging 专用接口
F-5content-b.ts:310-327wx.uploadFile 使用相对路径,不经过 API_BASE_URL 拼接且不携带 Authorization
F-6scene-cards.ts:82-155默认场景卡 statusBar.text = '接口未建,诚实降级' 会直接展示给用户
F-7guest-archive.ts:15-38客人档案页硬编码假数据直接渲染给用户

B端H5 Major(2 项)

#位置问题
W-1FeatureFlags.ts:44-52Feature Flags 接口未建,100ms setTimeout 伪异步 + 本地默认值回退
W-2auth.ts:72Token 前端缓存 30 天 vs 后端 TTL 24h,过期后用户请求失败才跳登录

五、Minor(15 项)

后端 Minor(5 项)

#位置问题
b-1security.py:12datetime.utcnow() 在 Python 3.12 已弃用,应迁移 now(timezone.utc)
b-2auth.py:31,89登录端点无速率限制,无暴力破解防护
b-3miniapp_orders.py:211-214核销码指纹复用 jwt_secret 作为 HMAC 密钥
b-4auth.py:89-114密码登录未检查用户 status 是否 active
b-56+ 文件_require_admin 重复定义,实现不一致(见 B-3)

数据库 Minor(4 项)

#位置问题
d-1001 baselinehealth_records.blood_oxygen/heart_rate 缺业务合理性 CHECK
d-2044 迁移kora_route_waypoints/segments 缺 updated_at
d-3008 迁移refund_policies 种子数据插入保护不完善
d-4001 baselineid 类型混用(integer vs bigint),status 字段长度不统一

前端(C端) Minor(3 项)

#位置问题
f-1auth.ts:87-107login 函数无 token 过期时间管理
f-2app.ts:9-12onLaunch 无登录态预检
f-3多处 services错误处理策略不一致(throw vs return 空值 vs return null)

B端H5 Minor(3 项)

#位置问题
w-1App.tsx:38-45React 组件内直接读 window.location,绕过 Router
w-2Network.ts:51-58401 时 window.location.reload() 强刷,体验粗暴
w-3Network.ts无 500/502/503 等服务端错误处理

六、设计亮点(值得保持)

后端

数据库

前端


七、修复优先级路线图

P0 — 立即(3 项,安全底线)

  1. config.py: APP_ENV 和 JWT_SECRET 生产环境校验(fail-closed)
  2. main.py: 生产环境拒绝 CORS * 通配符
  3. 前端 request.ts: 401 拦截清 token + 跳登录页

P1 — 一周内(功能正确性)

  1. request.ts: unwrap 兼容 {ok,data} 信封
  2. request.ts: 弱网自动重试 1 次
  3. 前端 uploadPilgrimageImage: 修复 API_BASE_URL 拼接
  4. admin.py: 移除 _require_admin 的 phone 前置检查
  5. 统一 _require_admin 实现(消除重复)
  6. credit_journal.direction: 补 CHECK 约束
  7. guest-archive.ts: 接入真实 API 或诚实降级

P2 — 两周内(性能与质量)

  1. 数据库补充索引(D-2 清单)
  2. user_wallets.balance: 补非负 CHECK
  3. health_records: 补生理数据范围 CHECK
  4. b-workbench FeatureFlags: 实现后端接口
  5. b-workbench 登录: 实现微信正式登录(WIP-181)
  6. scene-cards.ts: 修正面向用户的文案
  7. 清理废弃表(package_items/settlement_ledger/package_order_events)

P3 — 持续

  1. 批量清理存量弱哈希密码
  2. 登录端点加速率限制
  3. 后端日志体系统一
  4. 全局异常处理中间件
  5. Dockerfile 切换非 root 用户

八、测试覆盖率现状

层现有测试缺口
后端(287 端点)0100% 无覆盖
数据库(76 表)0迁移无回滚测试
前端 C端(120 页)0无自动化测试
B端 H5(23 路由)0无自动化测试
契约测试OpenAPI 类型生成但无运行时校验

建议先补的三类测试(投入产出比最高):

  1. 订单状态机条件更新的并发测试
  2. 认证链路测试(JWT 签发/验证/吊销/token_version)
  3. 前后端契约回归测试

*注:本报告基于远端最新代码(a1f80bf),工作区路径 /Users/yujiaxinmeiti/Desktop/kailash-worktrees/xiaoyu-real-gz5gz9/*