Files
story/docs/adr/0001-modular-monolith.md

21 lines
1.0 KiB
Markdown

# ADR-0001:首期采用Go模块化单体与独立Worker
- 状态:已接受
- 日期:2026-08-23
## 背景
系统需要同时承载设备控制、家庭业务、Agent编排、供应商回调和后台可靠任务。首期需要优先保证事务一致性、联调效率和可部署性,同时保留以后按领域拆分服务的路径。
## 决策
后端采用同一Go模块中的模块化单体,部署为`api`、`callbacks`和`worker`三个独立进程。业务模块只能通过公开的应用层接口协作,不跨模块直接修改数据。跨进程工作先写入PostgreSQL outbox,再由Worker执行;Redis只保存可重建状态。
前端采用React、TypeScript和Vite。业务事实以PostgreSQL为准,实时语音不经过自建应用服务器。
## 影响
- 本地和测试环境可以用一套代码快速启动三个进程。
- 共享数据库不代表可以绕过模块边界,代码评审需检查跨模块访问。
- 将来拆分服务时,以模块公开接口、outbox事件和数据所有权为迁移边界。