docs: T40 UI 审计报告 + wiki 更新 + Docker 配置

- T40 UI 审计计划和结果文档(docs/qa/)
- wiki 更新:miniprogram 设计系统合规审计记录 + index 关键数字更新
- 审计 V2 完整报告(docs/audits/v2/)
- 讨论记录文档(docs/discussions/)
- 设计规格和实施计划(docs/superpowers/)
- 角色测试计划和结果(docs/qa/role-test-*)
- Docker 生产部署配置
This commit is contained in:
iven
2026-05-13 23:29:42 +08:00
parent 212c08b7ae
commit df1d85bfde
78 changed files with 10345 additions and 39 deletions

View File

@@ -0,0 +1,98 @@
# 技术债务清单
> 审计日期2026-05-04 | 范围:`crates/*` + `apps/*`
## 1. `#[allow(dead_code)]` / `#[allow(unused` 抑制清单17 处)
| 文件 | 行号 | 说明 |
|------|------|------|
| `erp-ai/service/reanalysis.rs` | :14 | FromQueryResult 映射字段 |
| `erp-ai/provider/claude.rs` | :55,:66,:72,:74 | serde 反序列化字段4 处) |
| `erp-auth/service/wechat_service.rs` | :43 | WeChat 服务字段 |
| `erp-plugin/host.rs` | :42,:44 | 插件宿主字段2 处) |
| `erp-plugin/data_service.rs` | :462,:775,:1173,:1536 | FromQueryResult chk/id/check_result 字段4 处) |
| `erp-server/middleware/rate_limit.rs` | :27 | 限流结构体字段 |
| `erp-server/handlers/analytics.rs` | :11 | 客户端上报字段,待接入 |
| `erp-health/service/action_inbox_service.rs` | :119,:131,:140 | FromQueryResult 映射字段3 处) |
| `erp-health/service/stats_service/health.rs` | :295 | FromQueryResult total 字段 |
**根因**:大量来自 SeaORM `FromQueryResult` 宏,字段必须声明但当前未读取。建议在 DTO 转换层使用 `_` 前缀或 `#[serde(skip)]`
## 2. TODO / FIXME / HACK 注释5 处)
| 文件 | 内容 |
|------|------|
| `erp-auth/handler/wechat_handler.rs:45` | TODO: 多租户微信登录需要设计租户解析策略 |
| `erp-auth/handler/wechat_handler.rs:76` | TODO: 多租户微信登录需要设计租户解析策略(重复) |
| `erp-plugin/data_service.rs:1075` | TODO: 未来版本添加 Redis 缓存层 |
| `erp-health/event.rs:51` | TODO: 患者认证和死亡记录流程尚未实现 |
| `web/pages/workflow/PendingTasks.tsx:208` | TODO: 替换为 UserSelect 用户搜索选择组件 |
| `web/pages/health/components/ActionDetailDrawer.tsx:78` | TODO: 调用实际 API 执行操作 |
**风险**wechat_handler 多租户策略未定,影响 SaaS 化路线。ActionDetailDrawer TODO 说明功能未接通。
## 3. 硬编码检测
### 3.1 `localhost` / `127.0.0.1`14 处,排除 lock 文件)
| 文件 | 硬编码值 | 风险 |
|------|---------|------|
| `apps/web/vite.config.ts` | `localhost:3000` | 开发代理,可接受 |
| `apps/web/playwright.config.ts` | `localhost:5174` | E2E可接受 |
| `apps/miniprogram/config/index.ts` | `localhost:3000` | **MP 构建默认值** |
| `apps/miniprogram/src/services/request.ts` | `localhost:3000` | **MP 运行时 fallback** |
| `apps/miniprogram/e2e/helpers/api-client.ts` | `localhost:3000` | E2E |
| `apps/miniprogram/e2e/check-readiness.ts` | `localhost:3000` | E2E |
| `apps/web/e2e/check-readiness.ts` | `localhost:3000` + `localhost:5174` | E2E |
| `apps/web/e2e/fixtures/api-client.ts` | `localhost:3000` | E2E |
| `apps/web/e2e/auth.fixture.ts` | `localhost:3000` | **无 env fallback纯硬编码** |
| `apps/web/e2e/fixtures/auth.fixture.ts` | `localhost:3000` | E2E |
| `integration-tests/test_workflow_module.rs` | `localhost:3000` | 集成测试 |
| `integration-tests/test_common.rs` | `localhost:3000` | 集成测试 |
| `integration-tests/test_auth_module.rs` | `localhost:3000` | 集成测试 |
| `erp-server/tests/integration/test_db.rs` | `localhost:5432` + 明文密码 | **安全风险** |
| `erp-core/test_helpers.rs` | `localhost:5432` + 明文密码 | **安全风险** |
### 3.2 硬编码端口号
`3000`(API)、`5174`(Web dev)、`5432`(PostgreSQL) — 均为开发/测试用途,无生产风险。但 `test_db.rs``postgres:123123@localhost` 明文密码应移至 env。
## 4. 主要依赖版本
### 后端Cargo.toml workspace
| 依赖 | 版本 | 备注 |
|------|------|------|
| axum | 0.8 | 最新 stable |
| sea-orm | 1.1 | 最新 |
| tokio | 1 | LTS |
| serde / serde_json | 1 / 1 | stable |
| chrono | 0.4 | stable |
| thiserror / anyhow | 2 / 1 | thiserror v2 |
| utoipa | 5 | 最新 |
| redis | 0.27 | — |
| reqwest | 0.12 | — |
### 前端apps/web/package.json
| 依赖 | 版本 | 备注 |
|------|------|------|
| react | ^19.2 | React 19 |
| antd | ^6.3 | Ant Design 6 |
| react-router-dom | ^7.14 | React Router 7 |
| dayjs | ^1.11 | — |
| zustand | ^5.0 | — |
| typescript | ~6.0 | TS 6 |
| vite | ^8.0 | Vite 8 |
**结论**:依赖版本均较新,无重大过时风险。
---
## 优先修复建议
1. **P0**`test_db.rs` / `test_helpers.rs` 明文数据库密码移至环境变量
2. **P1**`web/e2e/auth.fixture.ts` 硬编码 API 地址应加 env fallback
3. **P1** — 清理 `wechat_handler.rs` 重复 TODO明确多租户方案
4. **P2** — 统一 SeaORM 查询结果的字段抑制策略(`_` 前缀或 helper 宏)
5. **P2**`ActionDetailDrawer` TODO 接通实际 API