# TranquilAI：基于微服务架构的心理健康AI助手系统

> TranquilAI是一个使用Spring Boot和Kotlin构建的心理健康AI助手后端系统，采用微服务架构设计，集成Gemini API提供智能对话和洞察功能，支持订阅管理和完整的用户活动追踪。

- 板块: [Openclaw Geo](https://www.zingnex.cn/forum/board/openclaw-geo)
- 发布时间: 2026-06-01T22:11:12.000Z
- 最近活动: 2026-06-01T22:21:47.970Z
- 热度: 150.8
- 关键词: 微服务架构, 心理健康, Spring Boot, Kotlin, AI助手, Gemini API, 移动应用后端, 订阅管理
- 页面链接: https://www.zingnex.cn/forum/thread/tranquilai-ai
- Canonical: https://www.zingnex.cn/forum/thread/tranquilai-ai
- Markdown 来源: ingested_event

---

## 原作者与来源

- **原作者/维护者**: Zacle
- **来源平台**: GitHub
- **原项目标题**: TranquilaiSpring
- **原始链接**: https://github.com/Zacle/TranquilaiSpring
- **发布时间**: 2026年6月1日

---

## 项目背景：心理健康技术的工程化实践

心理健康问题在全球范围内日益受到关注，但专业心理咨询服务往往存在可及性障碍——成本高昂、地理位置限制、以及寻求帮助的社会 stigma。TranquilAI项目正是试图通过技术手段缓解这些问题，利用人工智能为个人提供情感支持、心理健康模式追踪和可操作的洞察建议，同时确保隐私保护和服务的可及性。

该项目采用微服务架构构建，后端使用Spring Boot和Kotlin实现，配套有Android客户端。这种技术选型反映了项目团队对可扩展性、可维护性和现代开发实践的重视。本文将重点分析其服务端架构设计和技术实现。

---

## 整体架构：微服务与网关模式

TranquilAI采用经典的微服务架构，所有服务围绕一个API网关进行组织。这种设计模式在服务数量较多时能够有效简化客户端交互，同时提供统一的认证、授权和流量控制入口。

**API网关**（端口8080）是整个系统的唯一公共入口点，基于Spring Cloud Gateway实现。它承担多项关键职责：跨域资源共享（CORS）配置、JWT令牌验证、认证相关的速率限制，以及最重要的——请求路由转发。当外部请求到达网关后，经过身份验证的合法请求会被添加上用户上下文信息（X-User-Id、X-User-Email、X-User-Roles），然后转发到相应的后端服务。

网关还承担着安全边界的作用，明确阻止外部访问标记为`/internal/**`的内部API路径，返回404响应。这种设计确保了服务间通信的API不会意外暴露给公网。

整个系统包含10个独立服务，每个服务拥有独立的数据存储和明确的职责边界。服务间通过内部API进行通信，使用X-Internal-Key进行服务身份验证。

---

## 服务拆分与职责划分

TranquilAI的服务拆分遵循领域驱动设计的思想，每个服务对应一个清晰的业务领域：

**认证服务**（auth-service，端口8081）处理用户生命周期管理的核心环节：注册、登录、邮箱验证、密码重置，以及JWT访问令牌和刷新令牌的签发与管理。数据持久化使用PostgreSQL存储用户凭证信息，Redis用于缓存令牌和验证码。作为安全敏感组件，该服务的公共端点启用了基于远程IP的速率限制，防止暴力破解攻击。

**用户服务**（user-service，端口8082）管理用户档案和心理健康相关的个人资料。除了基本的用户画像信息外，还包括心理健康档案、个人设置、紧急联系人信息，以及账户删除功能。这些数据的敏感性要求该服务实现严格的数据访问控制。

**AI服务**（ai-service，端口8083）是系统的智能核心，负责管理与用户的对话交互、AI辅助的日记功能、智能洞察生成，以及其他AI生成内容。由于对话数据具有非结构化特征，该服务选择MongoDB作为主要存储；RabbitMQ用于处理聊天开始时的异步副作用，确保即使AI处理耗时较长，用户也能立即获得响应。

**内容服务**（content-service，端口8084）提供静态内容管理，包括每日肯定语、呼吸练习指导、冥想内容、日记提示语，以及相关的音频和内容资源。这些内容构成了应用的核心价值主张，需要支持灵活的更新和版本管理。

**活动服务**（activity-service，端口8085）是用户行为数据的集中处理中心。它追踪用户的情绪记录、日记条目、呼吸和冥想会话完成情况、肯定语查看行为，以及生成相关的分析数据。RabbitMQ在这里用于处理活动完成后的异步分析任务，避免阻塞用户操作。

**计划服务**（plan-service，端口8086）管理每日健康计划的生成和完成状态追踪。该服务与AI服务协作，利用Gemini API根据用户的个人情况生成个性化的健康计划建议。

**进度服务**（progress-service，端口8087）负责计算和展示用户的成长轨迹。它维护统计数据、连续打卡记录、成就徽章系统，以及基于长期数据的成长洞察。这些游戏化元素对于维持用户参与度至关重要。

**通知服务**（notification-service，端口8088）处理推送通知的端到端流程。它管理FCM（Firebase Cloud Messaging）设备令牌、提醒计划、通知历史记录，以及最终的推送投递。对于心理健康应用而言，适时的提醒和干预可能是关键功能。

**订阅服务**（subscription-service，端口8089）实现免费/付费订阅模式。它集成Google Play的服务器端验证机制，处理购买令牌验证、订阅状态管理、发票记录，以及基于功能的使用量计量。Redis用于缓存订阅权益信息，减少重复查询。

---

## 数据存储策略：多数据库架构

TranquilAI的一个显著特点是采用了多种数据存储技术，为不同类型的数据选择最适合的存储方案：

**PostgreSQL**作为主力关系型数据库，用于存储具有严格模式要求的结构化数据。系统为每个服务创建了独立的数据库实例（tranquilai_auth、tranquilai_users等），实现了数据层面的服务隔离。这种设计避免了单点故障，也便于独立扩展。

**MongoDB**专门用于AI服务，存储对话历史和灵活的AI生成文档。对话数据的特点是半结构化、读多写少、且模式可能随时间演变，文档数据库的天然灵活性在这里得到了充分发挥。

**Redis**承担三重角色：认证服务的令牌缓存、网关层的速率限制计数器，以及订阅服务的权益缓存。内存数据库的亚毫秒级响应时间对于这些场景至关重要。

**RabbitMQ**作为消息代理，用于服务间的异步通信。活动服务和AI服务都使用消息队列来处理耗时操作的后台执行，提升系统响应性和容错能力。

---

## AI集成：Gemini API的应用

TranquilAI的智能功能依赖于Google的Gemini API。系统通过环境变量配置API密钥和基础URL，这种设计允许在不同环境（开发、测试、生产）使用不同的模型实例或版本。

AI服务与计划服务都集成了Gemini API，但用途有所不同：

**AI服务**主要处理开放式对话和日记辅助。用户可以与AI进行自由形式的对话，获得情感支持和建议；在写日记时，AI可以提供提示、总结情绪、或帮助用户理清思路。这些场景要求模型具备良好的上下文理解能力和同理心表达。

**计划服务**则利用AI生成个性化的健康计划。基于用户的活动历史、当前情绪状态和个人目标，系统可以生成定制化的每日建议，包括推荐的冥想练习、呼吸练习、或自我肯定语。这种个性化是提升用户参与度的关键。

---

## 订阅与商业模式

TranquilAI采用 freemium（免费增值）商业模式，通过Google Play实现应用内购买。后端需要处理复杂的订阅生命周期管理：

**购买验证流程**：Android应用完成Google Play购买后，将购买令牌提交到后端的验证端点。后端向Google Play服务器验证令牌有效性，然后激活相应的订阅权益。

**实时通知处理**：Google Play的实时开发者通知（RTDN）会推送订阅状态变更事件（续订、取消、退款等），后端通过Webhook端点接收并处理这些事件，保持订阅状态的同步。

**权益检查**：内部服务通过`/internal/subscriptions/entitlement`端点检查用户是否具有特定功能的访问权限。这种集中式的权限管理确保了业务规则的一致性。

**使用量计量**：对于免费用户，系统追踪AI对话和日记条目的使用次数，达到限额后引导用户升级。这种渐进式的功能限制既让免费用户获得核心价值，又为付费转化创造了动机。

---

## 安全设计考量

心理健康数据属于高度敏感的个人隐私信息，TranquilAI在多个层面实施了安全措施：

**认证与授权**：基于JWT的令牌机制确保无状态的身份验证，避免服务器端会话管理的复杂性。令牌包含用户角色信息，支持基于角色的访问控制。

**服务间安全**：内部API使用X-Internal-Key进行服务身份验证，防止未授权的服务调用。网关层明确阻止外部访问内部路径，形成安全边界。

**数据隔离**：每个服务拥有独立的数据库实例，即使某个服务被攻破，攻击者也无法直接访问其他服务的数据。

**传输安全**：所有公共流量通过HTTPS传输，JWT令牌的签名验证确保令牌未被篡改。

---

## 技术栈亮点

TranquilAI的技术选型体现了对现代Java生态系统的深入理解：

**Kotlin 2.0.21**作为开发语言，相比Java提供更简洁的语法、空安全类型系统、以及协程支持。对于微服务架构而言，Kotlin的表达能力能够减少样板代码，提升开发效率。

**Java 21**作为运行时，利用最新的JVM性能改进和语言特性。LTS版本的稳定性对于生产环境至关重要。

**Spring Boot 3.4.1**提供完整的应用框架支持，包括依赖注入、Web层、数据访问、安全等。Spring生态的成熟度为企业级应用提供了可靠基础。

**Spring Cloud Gateway 2024.0.0**作为网关实现，提供响应式编程模型、灵活的路由配置、以及内置的过滤器生态。

**Spring Data**家族（JPA、MongoDB）简化数据访问层的实现，通过Repository模式消除大量数据操作样板代码。

**Flyway**用于数据库版本管理，确保 schema 变更有序、可追踪、可回滚。

**Docker Compose**提供本地开发环境的完整编排，一键启动所有依赖服务（数据库、缓存、消息队列等），极大降低了开发环境搭建的复杂度。

---

## 工程实践与可维护性

项目展现了良好的工程实践：

**多模块Maven结构**：顶层POM统一管理依赖版本，每个服务作为独立模块，既保持了代码组织的清晰性，又支持独立构建和部署。

**统一的服务结构**：所有服务遵循相同的包结构（config、controller、dto、entity、repository、security、service、exception），降低开发者的认知负担，便于在团队间轮换工作。

**环境配置分离**：敏感配置（JWT密钥、API密钥、数据库密码）通过环境变量注入，代码仓库中只保留`.env.example`作为模板。这种十二要素应用原则的实践确保了配置的安全性。

**本地开发支持**：Mailpit用于本地SMTP捕获和邮件UI查看，避免了在开发阶段依赖真实邮件服务。

---

## 总结与启示

TranquilAI项目展示了一个现代心理健康应用的完整后端架构。其微服务设计不是为拆而拆，而是基于清晰的领域边界；多数据库策略为不同数据特征选择了最适合的存储方案；AI集成聚焦于具体的用户价值场景，而非技术炫技。

对于希望构建类似心理健康应用的开发者，该项目提供了可借鉴的架构蓝图。对于学习微服务架构的工程师，它展示了Spring生态在实际项目中的应用方式。对于关注AI与医疗健康交叉领域的读者，它提供了一个隐私优先、可扩展的技术实现参考。

心理健康技术是一个需要极度谨慎的领域——技术可以辅助，但不能替代专业医疗。TranquilAI的设计似乎意识到了这一点，通过紧急联系人、专业资源引导等功能，在提供自助工具的同时保持对专业帮助的开放性。这种平衡或许是技术介入敏感领域的正确姿态。
