技术文档总体架构
总体架构
2026-10-14 核对:下文域名与端口为仓库部署约定,本轮未连接线上确认;当前实现已加入共享券/培训核心、独立分析服务和网页学习。
1. 架构目标
总体架构围绕“统一后端、角色复用、单一权威、可追溯运维”设计:
- 顾客、店长、恢复师、团长和总部人员使用不同入口,但复用同一组核心业务事实;
- 对外交易链路与总部管理链路分开部署,降低相互抢占资源和权限外溢的风险;
- 飞轮中台负责管理、分析和任务编排,不重复制造小程序已经产生的交易事实;
- 外部看板保持轻量,负责展示或触发受控操作,最终状态由后端校验;
- 域名、ECS、RDS、OSS、证书和第三方费用可以映射到明确的系统责任。
2. 逻辑分层
典型调用路径:
3. 仓库部署约定
既有部署配置体现两个业务应用主机边界,分析工程另行部署;下面不是本轮线上巡检结果:
该形态实现了接入和进程隔离,但两个后端共享核心数据库,因此数据库故障、连接数耗尽、错误 SQL 和不受控写入仍可能影响全部业务。
4. 应用责任边界
共享核心与独立分析
双后端接入 spa-coupon-core 和 spa-training-core,分别统一券/体验升级及培训规则。分析工程 spa-analytics 独立运行,Flink CDC 从 source.json 指定的只读来源采集到 ClickHouse,前端以 /analytics-api 访问分析服务,业务 /api 不变。
采集配置、恢复点和审计由独立部署管理,不在业务库新建分析任务表。分析只消费业务事实,最终版本去重、字段清单和就绪门禁决定是否可查询;不能反向改交易事实补平分析差异。
5. 核心数据权威
当前阶段两个后端共用一套 fuspa 数据库,必须通过“领域写入责任”约束共享库使用。
禁止通过以下方式破坏单一权威:
- 前端根据支付页面关闭、网络返回或本地缓存直接标记“已支付”;
- 看板为提高响应速度复制并长期维护另一套预约状态;
- 两个后端各自实现同一状态流转且缺少版本、幂等或审计约束;
- 导入任务覆盖线上已发生变更的数据;
- 指标页面用与财务口径不同的日期、金额或退款规则自行聚合。
6. 身份与权限边界
授权必须在后端再次校验。隐藏菜单、前端路由守卫和按钮禁用只是交互保护,不能替代接口权限。
7. 关键非功能基线
一致性
- 预约提交、支付预下单、支付回调、退款、积分、库存和推广归因必须幂等;
- 可重试操作使用业务唯一键、请求号或版本号防重;
- 异步任务记录运行批次、输入范围、结果和失败原因;
- 金额统一使用最小货币单位传输和计算,避免浮点误差。
可观测性
- API 统一返回
code、message、requestId和时间; - 入口、应用和后台任务日志保留请求路径、操作者、业务主键和结果;
- 支付、退款、库存、会员资产和推广归因异常进入可追踪队列或异常中心;
- 建立应用、数据库、证书、备份和磁盘容量告警。
安全
- 全部正式域名启用 HTTPS,证书续签可验证;
- 敏感信息按角色和用途脱敏,导出和关键变更留审计;
- 开发、测试、生产环境的数据库、密钥、域名和支付配置隔离;
- 账号密码、微信支付证书和云密钥只进入安全配置,不进入 Git 和文档站。
恢复能力
- 数据库至少每日自动备份,重要发布前建立恢复点;
- 后端 JAR 发布前保留旧包,新进程健康检查失败时回滚;
- 数据库升级脚本与应用版本一同评审,先备份、后变更、再验证;
- 定期执行恢复演练,而不是只检查“备份文件存在”。
8. 成本与架构映射
不应为了“架构看起来完整”提前采购资源;Redis、CDN、WAF、灾备和已有分析组件的扩容均应由实际容量、风险和恢复目标驱动。
9. 待决策架构事项
- 官网、协议、服务看板和团长经营台是否继续共用
/docs/路径,还是拆分独立入口。 - 两台 ECS 的长期职责、生产与测试隔离及是否引入负载均衡。
- 共享 RDS 的账号权限、连接池配额、故障域和未来按服务拆分策略。
image.afuspa.com的 CDN、防盗链、私有对象和图片处理策略。- 外部看板长期调用飞轮 API,还是迁移到统一业务 API/专用 BFF。
- 有赞退出范围、历史数据保留周期和 ERP 同步责任。
任何会改变上述边界的决策,都应形成架构决策记录后再实施。