Files
Home-Care/README.md
comclib f81d9339d7 docs: 更新 README + 删除 GitHub Actions CI (外部不可用)
- README 更新:并发控制体系、测试报告、文档路径修正
- 删除 .github/workflows/ci.yml: 内部 Maven 仓库不可从 GitHub Actions 访问

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

150 lines
5.5 KiB
Markdown
Raw Permalink 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/ # 公共模块ApiResponse, 幂等, 审计, 分布式锁, 限流, GeoUtil
│ ├── main/java/.../config/ # Security/Redis/MyBatis/OpenAPI/MQTT/对象存储/JWT
│ ├── main/java/.../statemachine/ # 四层状态机49条规则, SELECT FOR UPDATE 行锁)
│ ├── main/java/.../module/ # 16个业务模块
│ └── resources/db/migration/ # Flyway 迁移V1~V12
├── website/ # Nuxt3 产品官网
│ ├── pages/ # 11个官网页面 + 5个平台管理页面
│ ├── layouts/ # platform 布局组件
│ ├── components/ # 20+ 公共组件
│ └── tests/ # Playwright E2E (276用例)
├── delivery-miniapp/ # uni-app 服务人员移动端 (12页面)
├── docker-compose.yml # 一键启动全栈
└── Dockerfile # JRE 运行时镜像
```
## 技术栈
| 层 | 技术 |
|---|---|
| 后端 | 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 276用例) + k6 (负载) |
| API 文档 | OpenAPI 3.1 (Swagger) |
## 快速启动
### 全栈启动Docker
```bash
cd hss-home-service
docker compose up -d
```
| 服务 | 地址 | 说明 |
|------|------|------|
| 官网首页 | `http://localhost:3080` | 产品官网 |
| 平台登录 | `http://localhost:3080/platform/login` | 手机号+密码登录 |
| 全流程测试 | `http://localhost:3080/platform/workflow` | 一键执行 20 步闭环 |
| 后端 API | `http://localhost:18080` | REST API |
| Swagger | `http://localhost:18080/swagger-ui/index.html` | OpenAPI 文档 |
测试账号:`13900000001` / `test123456`
### 官网开发
```bash
cd hss-home-service/website
npm install
npm run dev # 开发服务器
npm run generate # 生产构建
```
### 运行测试
```bash
cd hss-home-service/website
npx playwright test # E2E (276用例)
/tmp/k6 run /tmp/k6-final.js # 负载测试
```
## 核心特性
### 并发控制
- **多层防护**API限流 → Redis分布式锁 → SELECT FOR UPDATE行锁 → @Version乐观锁 → ON CONFLICT幂等
- **支付回调**SERIALIZABLE隔离 + RedisLock + ON CONFLICT 三层并发保护
- **通知 Outbox**`FOR UPDATE SKIP LOCKED` 多实例并发热取 + 指数退避重试 + 死信
- **幂等写**`Idempotency-Key` + Redis SET NX + `hss_idempotency_records` DB唯一约束
### 业务特性
- **四层状态机**49条转换规则前端只传动作不传状态
- **调度算法**:硬约束过滤 + 软约束评分(距离/技能/负载/评价/熟悉度)+ Top5推荐
- **GPS签到**Haversine公式距离校验 + GPS轨迹记录
- **数据脱敏**:姓名/手机/地址按角色分级展示
- **审计追溯**`@Auditable` 切面 + `hss_state_transitions` 全状态流转
## 数据流
```
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_acceptances (验收) → hss_complaints (投诉)
→ hss_settlements (结算) → hss_settlement_items → hss_payments
→ hss_ledgers (归档)
hss_notification_outbox + hss_notification_receipts (贯穿全程)
hss_state_transitions + hss_audit_logs (贯穿全程)
hss_consent_records + hss_data_access_logs (合规)
```
## 数据库
49 张表,以 `hss_` 为前缀。Flyway 管理迁移:
| 版本 | 内容 |
|------|------|
| V1 | 30+ 核心业务表 |
| V2 | 主数据种子 |
| V3 | 性能索引补充 |
| V4 | TIMESTAMPTZ 兼容修复 |
| V5 | 状态流转唯一约束扩展 |
| V6 | 官网线索表 |
| V7~V8 | GPS 坐标 + 轨迹 |
| V9 | 认证字段(密码哈希 + 角色) |
| V10~V12 | 外键约束 + 性能索引补充 |
## 测试报告
| 测试 | 结果 |
|------|------|
| Playwright E2E | 268/276 (97.1%) |
| k6 并发压力 | 16,389 请求, 100% 成功率, P95 29ms |
| 全流程闭环 | 20 步全部通过 |
## 需外部服务接入
| 服务 | 用途 | 状态 |
|------|------|------|
| MQTT Broker | delivery 端实时通知 | MqttPublisher 已实现,待配置 broker |
| 微信订阅消息 API | 用户通知推送 | 标记 TODO |
| 短信 SDK | 紧急通知兜底 | 标记 TODO |
| 对象存储MinIO/S3 | 证据文件存储 | ObjectStorageService (AWS SigV4) 已实现,待配置凭证 |
| 地图 API | 调度距离 + ETA | GeoUtil (Haversine) 已实现ETA 待接入 |
| 域名 + SSL + ICP 备案 | 生产上线 | — |
## 相关文档
- [系统实现与修复报告](docs/系统实现与修复报告.md)
- [待完善清单(终极版)](docs/待完善清单_终极版.md) — 62 项
- [外部服务接入清单](docs/外部服务接入清单.md)