Files
Home-Care/docs/ architecture/边界约束文档.md
comclib c02029a5f3 feat: 初始化居家上门服务系统完整项目代码
- Spring Boot 后端服务 (hss-home-service)
- delivery-miniapp 配送小程序
- website 官网 (Nuxt)
- docs 架构设计文档
- Docker 容器化部署配置

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-19 09:04:49 +08:00

4.4 KiB
Raw Blame History

可以,现在进入 第四步:边界限制。这一阶段的作用是把“哪些可以自由设计、哪些不能动”先锁死。你的 V2.1 文档已经明确了状态机、数据模型、delivery 端、通知、结算、审计等方向,其中状态流转要求“前端只传动作,不传目标状态”,并且相同请求需要幂等处理;数据模型也已经拆出了申请、评估、方案、计划、工单、执行、异常、监管、验收、结算、通知、审计、合规等数据域。 delivery 端也已经被定义为服务人员移动作业端,而不是普通配送端,需要覆盖工作台、工单详情、签到、执行、异常、补录等页面。

我已经把这一节补进文档,生成新版:

下载 V2.2 边界限制增强版

第四步结论:本次实现硬约束

边界项 硬约束结论
后端技术栈 Spring Boot / Java 17+,一期采用模块化单体,不先拆微服务
数据库 PostgreSQL 优先;如果现有平台已统一 MySQL则允许 MySQL 8 替代
Redis 只做缓存、短期幂等、分布式锁、热点字典,不作为最终业务状态来源
MQTT 只做 delivery 端实时通知,不作为业务成功依据
文件存储 照片、音频、视频、签署文件、归档文件进入对象存储,不进数据库大字段
接口风格 外部接口 RESTful状态动作使用 action-style REST
API 契约 必须输出 OpenAPI 3.1 文档
DDL 设计 允许自由设计新表,统一使用 hss_ 前缀
向后兼容 居家子系统从零设计,不兼容商城订单/普通配送模型,但兼容现有账号、角色、机构、文件能力
前端范围 delivery 端小程序属于本次实现范围
性能 SLA 一期按中小规模设计,但接口、索引、分页、异步、幂等必须按生产方式实现
合规安全 敏感数据必须授权、脱敏、审计、控制留存

Spring Boot 官方当前系统要求显示Spring Boot 4.x 至少需要 Java 17这也支持我们把 Java 17+ 作为后端硬约束。(Home) OpenAPI 官方规范说明OpenAPI 是一种标准、语言无关的 HTTP API 描述方式,可让人和机器在不访问源码的情况下理解服务能力,因此适合作为前后端契约。(Swagger) PostgreSQL 对 jsonb 支持索引,适合保存扩展配置、快照、算法解释等半结构化数据,但核心状态和金额仍然必须关系化建模。(PostgreSQL) Redis 官方文档也明确分布式锁是用于多个进程互斥访问共享资源的原语,所以它适合锁、缓存、幂等,不适合当最终业务账本。(Redis)

本阶段最重要的 12 条硬约束

  1. 后端以 Spring Boot / Java 为主,不在核心链路引入多语言服务。
  2. 新增 hss_ 业务表,允许自由设计 DDL。
  3. 方案、服务计划、工单必须分离建模
  4. 工单必须有项目级执行明细。
  5. 所有状态流转必须经过后端状态机。
  6. 前端只发动作,不传目标状态。
  7. 所有写接口必须幂等。
  8. 所有通知必须经过 Outbox。
  9. MQTT 不是业务状态依据。
  10. 结算金额以后端基于方案快照和执行记录计算为准。
  11. delivery 端小程序属于本次实现范围。
  12. 敏感数据必须授权、脱敏、审计、控制留存。

下一步

第五步应该进入 系统模块拆分与工程目录设计,直接输出:

后端模块包结构、delivery 端页面目录、数据库 migration 目录、OpenAPI 契约目录、状态机代码目录、调度算法代码目录、通知 Outbox 目录、测试用例目录。