Files
Home-Care/docs/待完善清单.md
comclib 4a2eb09606
Some checks failed
CI / backend (push) Has been cancelled
CI / website (push) Has been cancelled
chore: 文档整理 — 移动至 docs/ 目录, 更新 IMPLEMENTATION_PLAN.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 11:52:03 +08:00

75 lines
4.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 系统待完善清单
> 编制日期2026-05-19
> 审计范围:后端 94 文件 + 前端 40+ 文件 + Docker/部署 + delivery-miniapp 12 页面
> 共发现 **37 项**待完善问题
---
## P0 — 阻碍生产上线的关键缺陷8项
| # | 模块 | 文件 | 行 | 问题 | 修复方向 |
|---|------|------|-----|------|----------|
| 1 | 通知全部空跑 | `NotificationSender.java` | 93 | `doSend()` 仅写日志MQTT/微信/短信完全不发送 | 接入 MQTT Broker + 微信模板消息 + 短信 SDK |
| 2 | MQTT 配置空壳 | `MqttConfig.java` | 8 | 空 `@Configuration`,无任何 Bean | 配置 Broker 地址/认证/Topic/客户端 |
| 3 | JWT 认证未启用 | `PermissionFilter.java` | 26 | 从 Header 读 `X-User-Id`,不验证 JWT 签名 | 解析 `Authorization: Bearer` + 验签 |
| 4 | TestAuthFilter 开放所有请求 | `TestAuthFilter.java` | 21 | dev/docker 模式零验证 | 生产必须禁用此 Filter |
| 5 | 批量结算硬编码 70% 抵扣 | `BatchJobService.java` | 108 | 固定 `* 0.7`,不读价目表 | 从 `hss_md_price_rules` 查询 |
| 6 | 运行时使用 Maven 镜像非JRE | `Dockerfile` | 9 | `FROM maven:3.9-eclipse-temurin-17` | 改为 `eclipse-temurin:17-jre` |
| 7 | 无 CI/CD 管道 | — | — | 无自动构建/测试/部署 | GitHub Actions |
| 8 | 无健康检查端点 | `pom.xml` | — | 无 `spring-boot-starter-actuator` | 添加 actuator |
---
## P1 — 核心功能有缺陷或不完整15项
| # | 模块 | 文件 | 行 | 问题 | 修复方向 |
|---|------|------|-----|------|----------|
| 9 | GPS 距离校验降级 | `WorkOrderService.java` | 236 | 无坐标时返回 0.0 放行 | 拒绝或标记人工审核 |
| 10 | 调度距离分硬编码 | `DispatchAlgorithm.java` | 68 | `distanceScore = 0.80` | 接入地图 API 计算真实距离 |
| 11 | 调度技能分简化 | `DispatchAlgorithm.java` | 95 | 仅按 staff_level 给分 | 按工单所需技能 vs 人员证书匹配 |
| 12 | 对象存储未接入 | `EvidenceService.java` | 28 | 返回本地 URL | MinIO/S3/OSS SDK |
| 13 | 对象存储配置空壳 | `ObjectStorageConfig.java` | 8 | 空 `@Configuration` | `@ConfigurationProperties` |
| 14 | 平台页面硬编码 IP | `work-orders.vue` | 47 | 直连 `172.31.12.249:18080` | 改为 `/api/hss` 代理 |
| 15 | 平台页面无认证守卫 | `applications.vue`, `work-orders.vue` | — | fallback 到 ADMIN/uid=1 | 添加 `isLoggedIn` 检查 |
| 16 | 官网图片全为占位 | 4个组件 | — | loremflickr 随机图 | 替换为真实系统截图 |
| 17 | ICP 备案号缺失 | `AppFooter.vue` | 40 | "上线前补充" | 填写真实备案号 |
| 18 | 网站 Dockerfile 未被使用 | `docker-compose.yml` | — | `nginx:alpine` + 卷挂载 | 使用 `website/Dockerfile` |
| 19 | AuthController 硬编码 tenantId | `AuthController.java` | 42,49,86 | `tenantId=1L, orgId=1L` | 从注册信息或请求上下文获取 |
| 20 | delivery BASE_URL 硬编码 | `delivery-miniapp/api.js` | 1 | `localhost:18080` | 环境变量或构建时注入 |
| 21 | execute.vue 未持久化状态 | `execute.vue` | — | 仅更新内存 | 调用后端 API 持久化 |
| 22 | 拍照无水印 | `api.js` | — | `addWatermark` 未调用 | 在签到和执行中调用 |
| 23 | 轨迹未停止 | `api.js` | — | `stopTrajectory` 未调用 | 在 finish.vue 完成时调用 |
---
## P2 — 可工作但需增强14项
| # | 模块 | 问题 | 增强方向 |
|---|------|------|----------|
| 24 | ETA 预测 | `estimateTravelMinutes` 仅按区域码比较 | 接入地图 API 或 Haversine+预估速度 |
| 25 | 调度权重 | 硬编码 25/25/20/15/15 | 配置化 |
| 26 | 绩效权重 | 硬编码 30/15/10/15/15/15 | 配置化 |
| 27 | 熟悉度评分 | `count * 0.3` 线性增长 | 对数曲线 |
| 28 | 新人员评分 | 默认 0.70 偏袒无评分人员 | 改为 0.50 或冷启动保护 |
| 29 | 申请校验 | 仅检查档案存在 | 按服务类型配置必需附件清单 |
| 30 | Demo 页 | 75% mock 数据 | 全部改为真实 API |
| 31 | Lead 表单 | `server/api/lead.post.ts` 返回假 200 | 代理到真实后端 |
| 32 | Resources 页 | 下载链接为空 | 上传真实 PDF |
| 33 | 微信支付回调 URL | 硬编码 localhost | 改为公网可访问域名 |
| 34 | 数据库外键 | `hss_execution_records` 无 FK | 添加 REFERENCES |
| 35 | Flyway 缺失表 | 无消息/配置/离线日志表 | 按需创建 |
| 36 | iOS 权限声明 | `manifest.json` 中为空 | 补充定位和相机权限描述 |
| 37 | Dockerfile 无 USER | 以 root 运行 | 添加非 root 用户 |
---
## 统计
| 级别 | 数量 | 分布 |
|------|------|------|
| P0 | 8 | 通知×2 / 认证×2 / 结算×1 / 镜像×1 / CI/CD×1 / 监控×1 |
| P1 | 15 | GPS×1 / 调度×2 / 存储×2 / 前端×6 / delivery×4 |
| P2 | 14 | ETA×1 / 调参×4 / Mock×3 / 配置×3 / DDL×2 / 安全×1 |
| **共** | **37** | |