系统架构总览
读者:新成员、AI Agent、需要快速判断“这个需求应该改哪个 repo”的人。
本页只回答三件事:
- retaintive 的系统由哪些 repo / runtime / 数据存储组成。
- 数据从外部进入系统后,按什么路径被处理并展示给用户。
- 哪些概念容易混在一起,应该拆开理解。
具体 backend 代码分层、auth chain、API request lifecycle 见 Backend 架构 Pattern。后端 pipeline / Lambda / AI prompt 全景见 2-backend.md。前端 5 层架构见 1-frontend.md。
一句话定位
retaintive 是面向健身工作室的 AI 通话分析 + 线索追踪 + 业务运营平台。
核心链路:
架构概念导航图(Level 0)
读 retaintive 架构文档时会碰到多组概念:Plane 分层、Pipeline、Hexagonal / Layered、Multi-tenant。它们不是互相替代的选择,而是从不同角度看同一个系统。下面这张图展示它们的层级关系 — Pipeline、代码分层、Multi-tenant 都是 Data Plane 内部的子问题:
6 个维度,各管什么
系统里有 6 个维度(Plane 分层 + 代码分层 + 多租户)。它们各自管什么、改一处会影响什么 — 用一通电话当例子串起来:
判断你要改的事在哪个维度:
- "我要加一个 Lambda 来处理新事件" → Data Plane / Pipeline,先看 backend.md
- "我要给 admin 加一个配置 store 的页面" → Management Plane,改 studio-api 或 control plane admin UI
- "我要让某个 store 路由到不同 AI provider" → Control Plane,加
PhoneStoreAssignments配置或 control plane 加字段 - "我要重构 contacts-analyzer 的代码结构" → 代码分层,不影响其他 Lambda
- "我要让一个客户的数据放独立数据库" → Multi-tenant,见 multi-tenant/overview.md
详细文档: Multi-Tenant 总览 · Pipeline 全景分析 · Backend 架构 Pattern · Store-Level 隔离
系统全景(Level 1)
7 个核心 repo,各管什么
这 7 个 repo 是 retaintive 业务的核心。每个 repo 控制一个维度,改之前先认清在哪。
不在表里(跟核心业务无关,内部工具 / dormant): docs(本文档站)/ lark-dm-bot(飞书机器人)/ claude-plugins(开发工具)/ botmux(开发工具)/ landingPage(retaintive 官网,dormant)/ .github-retaintive(Org-level workflow 集中库)。
前端怎么调到后端
前端能"把请求传给后端"不是因为它们在同一个 monorepo,而是因为:
apps/webbuild 后部署成静态文件到 Cloudflare Pages- 浏览器加载,JavaScript 发 HTTP request 到
studio-api*.retaintive.ai - 域名背后是 AWS API Gateway + Lambda(
apps/api跑的) - API Lambda 验 token(Cognito JWT)、检查 store 权限、查 Neon / DDB,再返回 JSON
关键: apps/web 和 apps/api 同 repo 不同 runtime。前端 build 失败 ≠ 后端 deploy 失败;后端 deploy 失败 ≠ 前端有问题。
详细数据流见 frontend.md Layer 3 数据流时序;部署细节见 frontend.md Layer 4 部署。
Repo 职责速查
收到任务时,先用这张表定位 repo,再读对应 repo 的 CLAUDE.md / README / 代码。
数据库和共享 schema
跨 Repo 边界:最容易踩坑的地方
共享队列
ringcentralSubscriptionService 写入,callytics-infrastructure 消费。改队列名、region、payload shape 时必须同步两个 repo。
共享表和字段
新增共享资源优先用 SSM Parameter Store 或明确的 shared config,不要在多个 repo 硬编码同一字符串。