核心修复: - 状态机加 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>
167 lines
7.2 KiB
Markdown
167 lines
7.2 KiB
Markdown
# 智慧医养居家上门服务平台
|
||
|
||
面向政府、医院、养老机构和社区服务中心的居家上门服务闭环管理平台。覆盖**申请受理 → 能力评估 → 方案制定 → 智能派单 → 上门执行 → 过程监管 → 验收评价 → 结算归档**全流程。
|
||
|
||
---
|
||
|
||
## 项目结构
|
||
|
||
```
|
||
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 签到/执行/异常/离线补传)
|
||
- 微信支付 SDK(JSAPI 下单 + 回调验签 + 退款)
|
||
- 调度算法(硬约束过滤 + 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)
|