Files
Home-Care/hss-home-service/待完善清单.md
comclib 01e1034cc1 feat: 全系统优化 — 并发控制 + 冗余清理 + 数据流修复 + 全面测试
核心修复:
- 状态机加 SELECT FOR UPDATE 行锁,消除并发竞态
- hss_md_staff 加 role 列,登录从数据库读取真实角色
- 申请重复校验排除自身,全流程 20 步闭环通过
- 派单 SQL 修复 + 支付状态机过渡 + 完成服务 plan_item_id 修复

并发控制新增:
- RedisLockService (SET NX PX + Lua 安全解锁)
- RateLimiterService (Redis 滑动窗口 + API 拦截器)
- TransactionIsolationConfig (SERIALIZABLE for 支付回调)
- MqttPublisher (异步队列 + JDK TCP 探测)
- ObjectStorageService (AWS SigV4 预签名, 纯 JDK)

冗余清理:
- 删除 6 个死代码文件 (~620 行)
- hutool-all → JDK MessageDigest, 去 MapStruct, 去 jsr310
- haversine 提取到 GeoUtil, count/round 提取到 JdbcUtil
- 创建 platform layout 组件

前端修复:
- 登录页移除角色选择器, 由后端 JWT 返回
- 移除 ClientOnly 包裹, 页面正常渲染
- SPA fallback Nginx 配置修复

Docker: 运行时镜像 eclipse-temurin:17-jre-jammy (缩小 ~300MB)

文档: 新增系统实现与修复报告.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-22 11:48:07 +08:00

4.8 KiB
Raw Blame History

系统待完善清单

编制日期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