- Spring Boot 后端服务 (hss-home-service) - delivery-miniapp 配送小程序 - website 官网 (Nuxt) - docs 架构设计文档 - Docker 容器化部署配置 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
可以,现在进入 第四步:边界限制。这一阶段的作用是把“哪些可以自由设计、哪些不能动”先锁死。你的 V2.1 文档已经明确了状态机、数据模型、delivery 端、通知、结算、审计等方向,其中状态流转要求“前端只传动作,不传目标状态”,并且相同请求需要幂等处理;数据模型也已经拆出了申请、评估、方案、计划、工单、执行、异常、监管、验收、结算、通知、审计、合规等数据域。 delivery 端也已经被定义为服务人员移动作业端,而不是普通配送端,需要覆盖工作台、工单详情、签到、执行、异常、补录等页面。
我已经把这一节补进文档,生成新版:
第四步结论:本次实现硬约束
| 边界项 | 硬约束结论 |
|---|---|
| 后端技术栈 | 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 条硬约束
- 后端以 Spring Boot / Java 为主,不在核心链路引入多语言服务。
- 新增
hss_业务表,允许自由设计 DDL。 - 方案、服务计划、工单必须分离建模。
- 工单必须有项目级执行明细。
- 所有状态流转必须经过后端状态机。
- 前端只发动作,不传目标状态。
- 所有写接口必须幂等。
- 所有通知必须经过 Outbox。
- MQTT 不是业务状态依据。
- 结算金额以后端基于方案快照和执行记录计算为准。
- delivery 端小程序属于本次实现范围。
- 敏感数据必须授权、脱敏、审计、控制留存。
下一步
第五步应该进入 系统模块拆分与工程目录设计,直接输出:
后端模块包结构、delivery 端页面目录、数据库 migration 目录、OpenAPI 契约目录、状态机代码目录、调度算法代码目录、通知 Outbox 目录、测试用例目录。