Files
Home-Care/README.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

167 lines
7.2 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.
# 智慧医养居家上门服务平台
面向政府、医院、养老机构和社区服务中心的居家上门服务闭环管理平台。覆盖**申请受理 → 能力评估 → 方案制定 → 智能派单 → 上门执行 → 过程监管 → 验收评价 → 结算归档**全流程。
---
## 项目结构
```
hss-home-service/
├── src/ # Spring Boot 后端
│ ├── main/java/.../common/ # 公共模块(响应体、异常、幂等、审计)
│ ├── main/java/.../config/ # Security/Redis/MyBatis/OpenAPI 配置
│ ├── main/java/.../statemachine/ # 四层状态机(申请/方案/工单/结算)
│ ├── main/java/.../module/ # 16个业务模块
│ │ ├── application/ # 服务申请
│ │ ├── assessment/ # 能力评估
│ │ ├── plan/ # 方案制定
│ │ ├── schedule/ # 服务计划 + 调度算法
│ │ ├── workorder/ # 工单管理 + Delivery + 管理端
│ │ ├── execution/ # 执行记录 + 证据文件
│ │ ├── acceptance/ # 验收评价 + 投诉反馈
│ │ ├── settlement/ # 结算 + 支付 + 绩效
│ │ ├── supervision/ # 过程监管(抽查/违规/整改)
│ │ ├── compliance/ # 合规管理(授权/脱敏/审计)
│ │ ├── notification/ # 通知 Outbox并发锁+重试+死信)
│ │ ├── masterdata/ # 主数据(机构/人员/资质/服务项目/价格)
│ │ ├── capacity/ # 运力运营(网格/容量/预测)
│ │ ├── lead/ # 官网线索
│ │ └── audit/ # 审计日志
│ └── resources/db/migration/ # Flyway 迁移V1~V6
├── website/ # Nuxt3 产品官网
│ ├── pages/ # 11个页面含 /demo /platform/*
│ ├── components/ # 20+ 公共组件
│ ├── composables/ # useLeadForm / useApi / usePlatformAuth
│ ├── data/ # 站点内容数据
│ └── tests/ # Playwright E2E 测试
├── delivery-miniapp/ # uni-app 服务人员移动端
├── docker-compose.yml # 一键启动全栈
└── Dockerfile # 后端构建镜像
```
## 技术栈
| 层 | 技术 |
|---|---|
| 后端 | Spring Boot 3.3 + Java 17 + MyBatis-Plus + PostgreSQL + Redis |
| 前端官网 | Nuxt3 + Vue3 + Tailwind CSS 3.4 |
| 移动端 | uni-app (Vue) |
| 部署 | Docker Compose (Nginx + Spring Boot + PostgreSQL + Redis) |
| 测试 | Playwright (E2E) + JUnit (状态机) |
| API 文档 | OpenAPI 3.1 (Swagger) |
## 快速启动
### 全栈启动Docker
```bash
cd hss-home-service
docker compose up -d
```
| 服务 | 地址 | 说明 |
|------|------|------|
| 官网首页 | `http://localhost:3080` | 产品官网 |
| 平台演示 | `http://localhost:3080/demo` | 4 Tab 平台功能展示 |
| 平台登录 | `http://localhost:3080/platform/login` | 9角色免密登录 |
| 全流程测试 | `http://localhost:3080/platform/workflow` | 一键执行14步数据流 |
| 后端 API | `http://localhost:18080` | 86个 REST 接口 |
| Swagger | `http://localhost:18080/swagger-ui/index.html` | OpenAPI 文档 |
### 官网开发
```bash
cd hss-home-service/website
npm install
npm run dev # 开发服务器 (hot reload)
npm run generate # 生产构建 → .output/public/
```
### 运行测试
```bash
cd hss-home-service/website
npx playwright test # E2E 测试 (89用例)
```
## 核心特性
- **四层状态机**申请→方案→工单→结算49条转换规则前端只传动作不传状态
- **写幂等**`Idempotency-Key` + `hss_idempotency_records` 落库
- **通知 Outbox**`FOR UPDATE SKIP LOCKED` 并发抢占 + 指数退避重试 + 死信
- **审计追溯**`@Auditable` 切面自动记录 + `hss_state_transitions` 全状态流转
- **数据脱敏**:姓名/手机/地址按角色分级展示
- **调度算法**:硬约束过滤 + 软约束评分(距离/技能/负载/评价/熟悉度)+ Top5 推荐
- **支付幂等**`ON CONFLICT (transaction_id, settlement_id) DO NOTHING`
- **E2E 测试**Playwright 覆盖全部页面 + API 连通性 + 幂等去重
## 数据流
```
hss_service_applications (申请)
→ hss_assessment_tasks (评估) → hss_assessment_reports
→ hss_objections (异议)
→ hss_service_plans (方案) → hss_plan_versions → hss_service_plan_items
→ hss_service_schedules (服务计划)
→ hss_work_orders (工单) → hss_work_order_items
→ hss_checkins (签到) + hss_execution_records (执行) + hss_evidence_files (证据)
→ hss_exceptions (异常) → hss_exception_actions
→ hss_spot_checks (抽查) → hss_violations (违规) → hss_corrections (整改)
→ hss_acceptances (验收) → hss_complaints (投诉)
→ hss_settlements (结算) → hss_settlement_items → hss_payments → hss_refunds
→ hss_ledgers (归档) → hss_archive_files
hss_notification_outbox + hss_notification_receipts (贯穿全程)
hss_state_transitions + hss_audit_logs (贯穿全程)
hss_consent_records + hss_data_access_logs (合规)
```
## 数据库
45 张表,以 `hss_` 为前缀。Flyway 管理迁移:
| 版本 | 内容 |
|------|------|
| V1 | 30+ 核心业务表 |
| V2 | 主数据种子(区域/服务项目/价格/机构) |
| V3 | 性能索引补充 |
| V4 | TIMESTAMPTZ→TIMESTAMP 兼容修复 |
| V5 | 状态流转唯一约束扩展 |
| V6 | 官网线索表 |
| V7 | 服务地址经纬度GPS 签到) |
| V8 | GPS 轨迹表 |
| V9 | 认证字段(密码哈希 + 登录时间) |
| V10 | 外键约束补充 |
| V11 | 消息表 + 系统配置表 + 离线同步日志 |
| V12 | 剩余外键 + 性能索引phone/settlement_id 等) |
## 项目状态
### 已完成
- 后端 93 个 REST API + 四层状态机49 条规则)
- 数据库 49 张表 + 12 个 Flyway 迁移
- 官网 11 个页面Nuxt3 + Tailwind CSS
- 平台管理:注册/登录/申请管理/工单管理/全流程测试
- delivery-miniapp 12 个页面uni-app含 GPS 签到/执行/异常/离线补传)
- 微信支付 SDKJSAPI 下单 + 回调验签 + 退款)
- 调度算法(硬约束过滤 + Haversine 距离 + 资质匹配 + Top5 推荐)
- JWT 认证 + 角色权限 + 数据脱敏
- Playwright E2E 测试89 用例)+ CI/CD 管道
### 需外部服务接入
| 服务 | 用途 | 优先级 |
|------|------|--------|
| MQTT Broker | delivery 端实时通知 | P0 |
| 微信订阅消息 API | 用户通知推送 | P0 |
| 短信 SDK | 紧急通知兜底 | P0 |
| 对象存储MinIO/S3 | 证据文件存储 | P1 |
| 地图 API高德/百度) | 调度距离 + ETA | P1 |
| 域名 + SSL + ICP 备案 | 生产上线 | P1 |
### 相关文档
- [待完善清单(终极版)](hss-home-service/待完善清单_终极版.md) — 62 项,含修复状态
- [外部服务接入清单](hss-home-service/外部服务接入清单.md) — 9 项外部服务详细说明
- [官网设计方案 Prompt](hss-home-service/官网设计方案Prompt.txt)