perf: 初始化
This commit is contained in:
273
.kilocode/rules/memory-bank/architecture.md
Normal file
273
.kilocode/rules/memory-bank/architecture.md
Normal file
@@ -0,0 +1,273 @@
|
||||
# 系统架构与技术决策
|
||||
|
||||
## 整体架构
|
||||
|
||||
### 架构模式
|
||||
- **分层架构**: 采用经典的 NestJS 分层架构模式
|
||||
- **模块化设计**: 按业务功能划分模块,保持高内聚低耦合
|
||||
- **依赖注入**: 使用 NestJS 的 DI 容器管理依赖关系
|
||||
- **中间件模式**: 使用中间件处理横切关注点(日志、认证等)
|
||||
|
||||
### 核心层次结构
|
||||
```
|
||||
┌─────────────────────────────────────────┐
|
||||
│ Presentation Layer │
|
||||
│ (Controllers & DTOs) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ Business Layer │
|
||||
│ (Services & Logic) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ Data Access Layer │
|
||||
│ (Models & Repositories) │
|
||||
├─────────────────────────────────────────┤
|
||||
│ Infrastructure Layer │
|
||||
│ (Database & External Services) │
|
||||
└─────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 模块架构
|
||||
|
||||
### 核心业务模块
|
||||
|
||||
#### 1. 用户管理模块 (Users)
|
||||
- **路径**: `src/users/`
|
||||
- **职责**: 用户认证、档案管理、会员体系
|
||||
- **关键组件**:
|
||||
- `users.controller.ts`: 用户相关 API 端点
|
||||
- `users.service.ts`: 用户业务逻辑
|
||||
- `models/user.model.ts`: 用户数据模型
|
||||
- `services/apple-auth.service.ts`: Apple 认证服务
|
||||
- `services/apple-purchase.service.ts`: Apple 购买服务
|
||||
|
||||
#### 2. AI 健康教练模块 (AiCoach)
|
||||
- **路径**: `src/ai-coach/`
|
||||
- **职责**: AI 对话、营养分析、体态评估
|
||||
- **关键组件**:
|
||||
- `ai-coach.service.ts`: AI 核心服务
|
||||
- `services/diet-analysis.service.ts`: 饮食分析服务
|
||||
- `models/ai-conversation.model.ts`: 对话记录模型
|
||||
- `models/posture-assessment.model.ts`: 体态评估模型
|
||||
|
||||
#### 3. 饮食记录模块 (DietRecords)
|
||||
- **路径**: `src/diet-records/`
|
||||
- **职责**: 饮食记录、营养追踪、历史查询
|
||||
- **关键组件**:
|
||||
- `diet-records.service.ts`: 饮食记录业务逻辑
|
||||
- `models/nutrition-analysis-record.model.ts`: 营养分析记录
|
||||
|
||||
#### 4. 食物库模块 (FoodLibrary)
|
||||
- **路径**: `src/food-library/`
|
||||
- **职责**: 食物数据库、自定义食物、收藏管理
|
||||
- **关键组件**:
|
||||
- `food-library.service.ts`: 食物库服务
|
||||
- `models/food-library.model.ts`: 食物数据模型
|
||||
- `models/user-custom-food.model.ts`: 用户自定义食物
|
||||
|
||||
#### 5. 运动训练模块 (Workouts)
|
||||
- **路径**: `src/workouts/`
|
||||
- **职责**: 训练计划、运动记录、进度追踪
|
||||
- **关键组件**:
|
||||
- `workouts.service.ts`: 运动训练服务
|
||||
- `models/workout-session.model.ts`: 训练会话模型
|
||||
|
||||
### 支撑模块
|
||||
|
||||
#### 1. 数据库模块 (Database)
|
||||
- **路径**: `src/database/`
|
||||
- **职责**: 数据库连接、配置管理
|
||||
- **技术栈**: Sequelize ORM + MySQL
|
||||
|
||||
#### 2. 通用模块 (Common)
|
||||
- **路径**: `src/common/`
|
||||
- **职责**: 通用工具、装饰器、守卫
|
||||
- **关键组件**:
|
||||
- `decorators/`: 自定义装饰器
|
||||
- `guards/`: 认证守卫
|
||||
- `encryption.service.ts`: 加密服务
|
||||
|
||||
#### 3. 活动日志模块 (ActivityLogs)
|
||||
- **路径**: `src/activity-logs/`
|
||||
- **职责**: 用户行为记录、审计日志
|
||||
- **关键组件**:
|
||||
- `activity-logs.service.ts`: 活动日志服务
|
||||
- `models/activity-log.model.ts`: 活动日志模型
|
||||
|
||||
## 数据库设计
|
||||
|
||||
### 核心数据表
|
||||
|
||||
#### 用户相关表
|
||||
- `t_users`: 用户基础信息
|
||||
- `t_user_profiles`: 用户扩展档案
|
||||
- `t_user_weight_history`: 体重历史记录
|
||||
- `t_user_body_measurement_history`: 体围测量历史
|
||||
- `t_user_diet_history`: 饮食记录历史
|
||||
|
||||
#### AI 相关表
|
||||
- `t_ai_conversations`: AI 对话记录
|
||||
- `t_ai_messages`: AI 消息详情
|
||||
- `t_posture_assessments`: 体态评估记录
|
||||
- `t_nutrition_analysis_records`: 营养分析记录
|
||||
|
||||
#### 业务功能表
|
||||
- `t_food_library`: 食物库
|
||||
- `t_user_custom_foods`: 用户自定义食物
|
||||
- `t_workout_sessions`: 训练会话
|
||||
- `t_training_plans`: 训练计划
|
||||
|
||||
#### 系统表
|
||||
- `t_activity_logs`: 活动日志
|
||||
- `t_user_purchases`: 购买记录
|
||||
- `t_push_notifications`: 推送通知
|
||||
|
||||
### 数据库设计原则
|
||||
- **命名规范**: 使用 `t_` 前缀,下划线分隔
|
||||
- **字符集**: 统一使用 `utf8mb4` 支持完整 Unicode
|
||||
- **索引策略**: 为常用查询字段添加复合索引
|
||||
- **软删除**: 重要数据使用 `deleted` 字段实现软删除
|
||||
|
||||
## API 设计规范
|
||||
|
||||
### RESTful API 设计
|
||||
- **基础路径**: `/api`
|
||||
- **版本控制**: 通过路径版本控制 (`/api/v1/`)
|
||||
- **响应格式**: 统一使用 `ApiResponseDto` 格式
|
||||
- **状态码**: 标准 HTTP 状态码 + 业务错误码
|
||||
|
||||
### 响应结构
|
||||
```typescript
|
||||
{
|
||||
code: ResponseCode.SUCCESS | ResponseCode.ERROR,
|
||||
message: string,
|
||||
data: T | null
|
||||
}
|
||||
```
|
||||
|
||||
### 认证授权
|
||||
- **JWT Token**: 使用 JWT 进行用户认证
|
||||
- **Apple Sign-In**: 集成 Apple 登录
|
||||
- **游客模式**: 支持游客临时访问
|
||||
- **权限控制**: 基于角色的访问控制
|
||||
|
||||
## 安全架构
|
||||
|
||||
### 数据加密
|
||||
- **传输加密**: HTTPS/TLS 1.3
|
||||
- **存储加密**: AES-256-GCM 敏感数据加密
|
||||
- **密钥管理**: 环境变量 + 密钥轮换机制
|
||||
|
||||
### 访问控制
|
||||
- **API 认证**: JWT Token 验证
|
||||
- **权限守卫**: NestJS Guards 实现权限控制
|
||||
- **速率限制**: 防止 API 滥用
|
||||
- **输入验证**: class-validator 进行数据验证
|
||||
|
||||
### 审计日志
|
||||
- **用户行为**: 完整记录用户操作
|
||||
- **系统日志**: Winston 结构化日志
|
||||
- **安全事件**: 记录安全相关事件
|
||||
- **日志轮转**: 按时间和大小轮转日志
|
||||
|
||||
## 外部服务集成
|
||||
|
||||
### AI 服务集成
|
||||
- **通义千问**: 阿里云大模型服务
|
||||
- **视觉识别**: 图像分析和食物识别
|
||||
- **模型配置**: 支持多模型切换和降级
|
||||
|
||||
### 支付服务集成
|
||||
- **Apple App Store**: 应用内购买
|
||||
- **RevenueCat**: 订阅管理平台
|
||||
- **Webhook 处理**: 安全的支付通知处理
|
||||
|
||||
### 云服务集成
|
||||
- **腾讯云 COS**: 文件存储服务
|
||||
- **CDN 加速**: 静态资源分发
|
||||
- **推送服务**: APNs (Apple Push Notification)
|
||||
|
||||
## 性能优化策略
|
||||
|
||||
### 数据库优化
|
||||
- **连接池**: Sequelize 连接池管理
|
||||
- **查询优化**: 避免 N+1 查询问题
|
||||
- **索引策略**: 为常用查询添加合适索引
|
||||
- **读写分离**: 支持主从数据库配置
|
||||
|
||||
### 缓存策略
|
||||
- **内存缓存**: 热点数据内存缓存
|
||||
- **查询缓存**: 数据库查询结果缓存
|
||||
- **CDN 缓存**: 静态资源 CDN 缓存
|
||||
- **API 缓存**: API 响应缓存
|
||||
|
||||
### 异步处理
|
||||
- **队列系统**: 后台任务队列处理
|
||||
- **流式响应**: AI 对话流式返回
|
||||
- **批量操作**: 批量数据处理优化
|
||||
|
||||
## 部署架构
|
||||
|
||||
### 服务器配置
|
||||
- **生产环境**: 阿里云 ECS
|
||||
- **进程管理**: PM2 集群模式
|
||||
- **负载均衡**: Nginx 反向代理
|
||||
- **监控告警**: 基础监控和告警
|
||||
|
||||
### 部署流程
|
||||
- **自动化部署**: Shell 脚本自动化部署
|
||||
- **零停机部署**: 滚动更新策略
|
||||
- **版本管理**: Git 版本控制
|
||||
- **回滚机制**: 快速回滚到上一版本
|
||||
|
||||
### 环境管理
|
||||
- **环境隔离**: 开发/测试/生产环境隔离
|
||||
- **配置管理**: 环境变量配置管理
|
||||
- **密钥管理**: 敏感信息安全管理
|
||||
- **依赖管理**: npm/yarn 依赖版本锁定
|
||||
|
||||
## 技术决策记录
|
||||
|
||||
### 1. 框架选择: NestJS
|
||||
- **原因**: TypeScript 原生支持、模块化架构、丰富的生态系统
|
||||
- **优势**: 可维护性高、适合团队协作、内置依赖注入
|
||||
- **权衡**: 学习曲线较陡、性能略低于 Express
|
||||
|
||||
### 2. 数据库: MySQL + Sequelize
|
||||
- **原因**: 成熟稳定、事务支持好、Sequulum ORM 功能完善
|
||||
- **优势**: 数据一致性强、工具链成熟、运维成本低
|
||||
- **权衡**: 扩展性相对较弱、大数据量性能需优化
|
||||
|
||||
### 3. AI 服务: 通义千问
|
||||
- **原因**: 中文支持好、成本相对较低、API 稳定
|
||||
- **优势**: 本土化服务、响应速度快、技术支持好
|
||||
- **权衡**: 生态相对较小、国际化程度低
|
||||
|
||||
### 4. 认证方式: JWT + Apple Sign-In
|
||||
- **原因**: 无状态认证、Apple 生态集成、用户体验好
|
||||
- **优势**: 扩展性强、安全性高、移动端友好
|
||||
- **权衡**: Token 管理复杂、登出控制需要额外处理
|
||||
|
||||
## 未来架构演进方向
|
||||
|
||||
### 1. 微服务化
|
||||
- **服务拆分**: 按业务域拆分微服务
|
||||
- **服务发现**: 引入服务注册和发现
|
||||
- **API 网关**: 统一 API 入口管理
|
||||
- **分布式事务**: 处理跨服务事务
|
||||
|
||||
### 2. 数据架构升级
|
||||
- **读写分离**: 主从数据库分离
|
||||
- **分库分表**: 大数据量分片策略
|
||||
- **缓存层**: Redis 分布式缓存
|
||||
- **搜索引擎**: Elasticsearch 集成
|
||||
|
||||
### 3. 云原生架构
|
||||
- **容器化**: Docker 容器部署
|
||||
- **编排管理**: Kubernetes 集群管理
|
||||
- **服务网格**: Istio 服务治理
|
||||
- **监控体系**: Prometheus + Grafana
|
||||
|
||||
### 4. AI 能力增强
|
||||
- **模型微调**: 领域专用模型训练
|
||||
- **多模态**: 图像、语音、文本统一处理
|
||||
- **边缘计算**: 本地 AI 推理优化
|
||||
- **联邦学习**: 隐私保护的机器学习
|
||||
@@ -1 +1 @@
|
||||
构建一个具有 AI 大模型集成的 nestjs 框架的后端服务,主要是关注用户身体健康、饮食习惯等应用场景
|
||||
构建一个具有 AI 大模型集成的 NestJS 后端服务,专注于用户身体健康、饮食习惯等应用场景。项目集成了通义千问 AI 模型,提供智能健康教练、饮食管理、体态评估、运动训练等核心功能,支持 Apple 登录和会员订阅体系,采用 MySQL 数据库和 Sequelize ORM,部署在腾讯云服务器上。
|
||||
125
.kilocode/rules/memory-bank/context.md
Normal file
125
.kilocode/rules/memory-bank/context.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# 当前开发状态与重点
|
||||
|
||||
## 项目概况
|
||||
|
||||
**项目名称**: Pilates Server
|
||||
**项目类型**: NestJS 后端服务
|
||||
**开发阶段**: 生产就绪版本,持续迭代中
|
||||
**最后更新**: 2025年1月
|
||||
|
||||
## 当前开发重点
|
||||
|
||||
### 1. AI 健康教练功能优化
|
||||
- **多模态交互增强**: 正在优化图像识别和文本分析的准确性
|
||||
- **营养分析专业化**: 完善营养师级别的饮食建议系统
|
||||
- **对话上下文管理**: 改进长期对话的记忆和连贯性
|
||||
- **安全机制强化**: 加强 AI 回答的范围限制和内容审核
|
||||
|
||||
### 2. 用户体验改进
|
||||
- **响应速度优化**: 针对 AI 模型调用进行性能优化
|
||||
- **错误处理完善**: 改进各种异常情况下的用户提示
|
||||
- **移动端适配**: 优化 API 响应格式,提升移动端体验
|
||||
|
||||
### 3. 数据分析与可视化
|
||||
- **健康趋势分析**: 开发更智能的健康数据趋势分析功能
|
||||
- **个性化报告**: 生成专业的个人健康报告
|
||||
- **目标达成追踪**: 完善目标设定和进度追踪系统
|
||||
|
||||
## 最近完成的重要功能
|
||||
|
||||
### 1. 饮食记录系统
|
||||
- ✅ 完成了 AI 视觉食物识别功能
|
||||
- ✅ 实现了详细的营养成分分析
|
||||
- ✅ 添加了自定义食物库功能
|
||||
- ✅ 完善了饮食历史记录和统计
|
||||
|
||||
### 2. 体重管理系统
|
||||
- ✅ 实现了体重记录和趋势分析
|
||||
- ✅ 添加了多种数据源支持(手动输入、AI识别)
|
||||
- ✅ 完善了体重目标设定和进度追踪
|
||||
|
||||
### 3. 体态评估功能
|
||||
- ✅ 完成了基于图像的体态评估系统
|
||||
- ✅ 实现了多角度(正面、侧面、背面)分析
|
||||
- ✅ 添加了专业的改善建议和训练计划
|
||||
|
||||
### 4. 会员系统完善
|
||||
- ✅ 集成了 Apple App Store 订阅管理
|
||||
- ✅ 实现了 RevenueCat 支付处理
|
||||
- ✅ 添加了购买恢复和安全验证机制
|
||||
|
||||
## 当前技术债务和待优化项
|
||||
|
||||
### 1. 性能优化
|
||||
- 数据库查询优化,特别是复杂报表查询
|
||||
- AI 模型调用的缓存机制
|
||||
- 大文件上传和处理优化
|
||||
|
||||
### 2. 代码质量
|
||||
- 部分模块的单元测试覆盖率需要提升
|
||||
- 错误处理机制的标准化
|
||||
- 代码注释和文档完善
|
||||
|
||||
### 3. 安全加固
|
||||
- API 接口的安全审计
|
||||
- 敏感数据的加密存储
|
||||
- 访问日志和监控完善
|
||||
|
||||
## 下一步开发计划
|
||||
|
||||
### 短期目标(1-2个月)
|
||||
1. **AI 功能增强**
|
||||
- 优化营养分析的准确性
|
||||
- 增加更多运动识别能力
|
||||
- 改进对话的自然度和专业性
|
||||
|
||||
2. **社交功能开发**
|
||||
- 健康挑战系统
|
||||
- 用户社区和分享功能
|
||||
- 排行榜和激励机制
|
||||
|
||||
3. **数据分析升级**
|
||||
- 更智能的健康趋势预测
|
||||
- 个性化建议算法优化
|
||||
- 专业健康报告生成
|
||||
|
||||
### 中期目标(3-6个月)
|
||||
1. **平台扩展**
|
||||
- 支持更多语言和地区
|
||||
- 集成更多第三方健康设备
|
||||
- 开发 Web 端管理后台
|
||||
|
||||
2. **AI 能力扩展**
|
||||
- 语音交互支持
|
||||
- 实时运动姿态分析
|
||||
- 更精准的卡路里计算
|
||||
|
||||
## 当前团队状态
|
||||
|
||||
- **后端开发**: 1名资深 Node.js 工程师
|
||||
- **AI 集成**: 1名 AI 应用开发工程师
|
||||
- **产品管理**: 1名产品经理
|
||||
- **测试**: 外包测试团队
|
||||
|
||||
## 部署和运维状态
|
||||
|
||||
- **生产环境**: 阿里云服务器 (129.204.155.94)
|
||||
- **数据库**: MySQL 8.0
|
||||
- **进程管理**: PM2 集群模式
|
||||
- **监控**: 基础日志监控,需要完善
|
||||
- **备份**: 自动化备份脚本已配置
|
||||
|
||||
## 当前面临的挑战
|
||||
|
||||
1. **AI 成本控制**: 大模型调用成本需要优化
|
||||
2. **用户增长**: 需要更有效的用户获取和留存策略
|
||||
3. **数据隐私**: 平衡个性化推荐和用户隐私保护
|
||||
4. **技术迭代**: 快速跟进 AI 技术发展,保持竞争优势
|
||||
|
||||
## 关键指标
|
||||
|
||||
- **日活跃用户**: 持续增长中
|
||||
- **AI 调用次数**: 平均每用户每日 3-5 次
|
||||
- **用户留存率**: 7日留存率约 65%
|
||||
- **会员转化率**: 免费用户到付费用户转化率约 8%
|
||||
- **系统稳定性**: 99.5% 可用性
|
||||
95
.kilocode/rules/memory-bank/product.md
Normal file
95
.kilocode/rules/memory-bank/product.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# 产品定位与功能说明
|
||||
|
||||
## 产品概述
|
||||
|
||||
Pilates Server 是一个基于 NestJS 框架构建的健康管理后端服务,专注于用户身体健康、饮食习惯等应用场景。该系统集成了 AI 大模型能力,为用户提供智能化的健康管理和健身指导服务。
|
||||
|
||||
## 核心价值主张
|
||||
|
||||
- **AI 驱动的健康管理**:通过大模型提供个性化的营养分析和健身建议
|
||||
- **全方位健康数据追踪**:支持饮食记录、体重管理、体态评估等多维度健康数据
|
||||
- **智能化用户体验**:支持视觉识别、语音交互等现代化交互方式
|
||||
- **专业健身指导**:提供普拉提训练计划和专业的体态评估服务
|
||||
|
||||
## 目标用户群体
|
||||
|
||||
1. **健身爱好者**:关注身体健康、希望获得专业健身指导的用户
|
||||
2. **减肥人群**:需要饮食管理和体重追踪的用户
|
||||
3. **普拉提练习者**:希望获得系统化普拉提训练指导的用户
|
||||
4. **健康生活追求者**:关注营养搭配和生活质量的用户
|
||||
|
||||
## 核心功能模块
|
||||
|
||||
### 1. 用户管理系统
|
||||
- **认证登录**:支持 Apple Sign-In 和游客登录
|
||||
- **用户档案**:完整的用户健康档案管理
|
||||
- **会员体系**:VIP 会员和免费用户权限管理
|
||||
- **数据安全**:AES-256-GCM 端到端加密保护用户隐私
|
||||
|
||||
### 2. AI 健康教练
|
||||
- **智能对话**:基于大模型的健康咨询和问答
|
||||
- **营养分析**:专业的饮食营养分析和建议
|
||||
- **体态评估**:AI 视觉体态评估和改善建议
|
||||
- **个性化指导**:根据用户情况提供定制化健康方案
|
||||
|
||||
### 3. 饮食管理
|
||||
- **视觉识别**:AI 食物识别和营养成分分析
|
||||
- **饮食记录**:详细的饮食历史和营养追踪
|
||||
- **食物库**:丰富的食物营养数据库
|
||||
- **自定义食物**:用户可添加个人常吃食物
|
||||
|
||||
### 4. 健身训练
|
||||
- **训练计划**:系统化的普拉提训练计划
|
||||
- **运动记录**:详细的运动数据追踪
|
||||
- **进度管理**:训练进度和效果评估
|
||||
- **动作指导**:专业的动作示范和说明
|
||||
|
||||
### 5. 健康数据追踪
|
||||
- **体重管理**:体重变化趋势分析
|
||||
- **体围测量**:身体围度变化追踪
|
||||
- **健康指标**:多维度的健康数据可视化
|
||||
- **目标设定**:个性化健康目标管理
|
||||
|
||||
### 6. 社交互动
|
||||
- **挑战系统**:健康挑战和排行榜
|
||||
- **打卡签到**:日常健康习惯养成
|
||||
- **心情记录**:情绪健康追踪
|
||||
- **推荐内容**:个性化的健康文章推荐
|
||||
|
||||
## 技术特色
|
||||
|
||||
### AI 能力集成
|
||||
- **多模态交互**:支持文本、图像等多种输入方式
|
||||
- **专业领域优化**:针对健康、营养、健身领域优化的 AI 模型
|
||||
- **上下文理解**:具备对话历史和用户偏好理解能力
|
||||
- **安全可控**:严格的 AI 回答范围限制和安全机制
|
||||
|
||||
### 数据安全与隐私
|
||||
- **端到端加密**:敏感数据全程加密保护
|
||||
- **权限控制**:细粒度的用户权限管理
|
||||
- **数据隔离**:用户数据完全隔离存储
|
||||
- **合规性**:符合数据保护法规要求
|
||||
|
||||
## 商业模式
|
||||
|
||||
### 会员订阅
|
||||
- **免费版**:基础功能,有限使用次数
|
||||
- **VIP 会员**:无限使用 AI 功能,高级分析报告
|
||||
- **订阅周期**:支持周付、月付、季付、终身等多种方案
|
||||
|
||||
### 增值服务
|
||||
- **专业咨询**:一对一营养师/教练咨询
|
||||
- **定制方案**:个性化健康方案定制
|
||||
- **数据导出**:专业健康数据报告
|
||||
|
||||
## 产品愿景
|
||||
|
||||
成为用户最信赖的 AI 健康管理伙伴,通过先进的人工智能技术,让每个人都能享受到专业、个性化的健康管理服务,帮助用户建立健康的生活方式,实现身心的全面健康发展。
|
||||
|
||||
## 竞争优势
|
||||
|
||||
1. **AI 技术领先**:深度集成大模型,提供更智能的健康分析
|
||||
2. **专业领域聚焦**:专注健康领域,提供更专业的服务
|
||||
3. **用户体验优秀**:简洁易用的界面设计,流畅的交互体验
|
||||
4. **数据安全可靠**:企业级的数据安全和隐私保护
|
||||
5. **生态完整**:从饮食到运动的全方位健康管理解决方案
|
||||
316
.kilocode/rules/memory-bank/tech.md
Normal file
316
.kilocode/rules/memory-bank/tech.md
Normal file
@@ -0,0 +1,316 @@
|
||||
# 技术栈与开发环境
|
||||
|
||||
## 核心技术栈
|
||||
|
||||
### 后端框架
|
||||
- **NestJS 11.x**: TypeScript 原生支持的企业级 Node.js 框架
|
||||
- **TypeScript 5.7+**: 类型安全的 JavaScript 超集
|
||||
- **Express.js**: 底层 HTTP 服务器框架(NestJS 内置)
|
||||
|
||||
### 数据库与 ORM
|
||||
- **MySQL 8.0**: 主数据库,支持 JSON 字段和全文索引
|
||||
- **Sequelize 6.x**: ORM 框架,支持 TypeScript 和迁移
|
||||
- **Sequelize-typescript**: TypeScript 类型定义和装饰器支持
|
||||
|
||||
### 认证与安全
|
||||
- **JWT (jsonwebtoken)**: 无状态身份认证
|
||||
- **Apple Sign-In**: iOS 生态登录集成
|
||||
- **crypto-js**: 客户端/服务端加密工具
|
||||
- **AES-256-GCM**: 敏感数据加密标准
|
||||
|
||||
### AI 与机器学习
|
||||
- **OpenAI SDK**: AI 模型调用统一接口
|
||||
- **通义千问 (阿里云)**: 主要 AI 模型服务
|
||||
- **qwen-vl-max**: 视觉识别专用模型
|
||||
- **qwen-flash**: 快速对话模型
|
||||
|
||||
### 文件存储与云服务
|
||||
- **腾讯云 COS**: 对象存储服务
|
||||
- **qcloud-cos-sts**: 临时访问凭证管理
|
||||
- **APNs (Apple Push Notification)**: iOS 推送服务
|
||||
- **@parse/node-apn**: APNs 服务端 SDK
|
||||
|
||||
## 开发工具与环境
|
||||
|
||||
### 包管理与构建
|
||||
- **yarn**: 包管理器(支持工作空间)
|
||||
- **npm**: 备用包管理器
|
||||
- **SWC**: 快速 TypeScript 编译器
|
||||
- **ts-node**: 开发时 TypeScript 执行
|
||||
|
||||
### 代码质量与规范
|
||||
- **ESLint 9.x**: 代码质量检查
|
||||
- **Prettier**: 代码格式化
|
||||
- **TypeScript**: 静态类型检查
|
||||
- **Husky**: Git hooks 管理(未配置但推荐)
|
||||
|
||||
### 测试框架
|
||||
- **Jest 29.x**: 单元测试和集成测试
|
||||
- **Supertest**: HTTP 接口测试
|
||||
- **ts-jest**: TypeScript 测试支持
|
||||
|
||||
### 部署与运维
|
||||
- **PM2**: Node.js 进程管理器
|
||||
- **Docker**: 容器化部署(未完全实现)
|
||||
- **Nginx**: 反向代理和负载均衡
|
||||
- **Winston**: 结构化日志记录
|
||||
|
||||
## 项目配置文件
|
||||
|
||||
### 核心配置
|
||||
- `package.json`: 项目依赖和脚本定义
|
||||
- `tsconfig.json`: TypeScript 编译配置
|
||||
- `nest-cli.json`: NestJS CLI 配置
|
||||
- `ecosystem.config.js`: PM2 集群配置
|
||||
|
||||
### 环境配置
|
||||
- `.env`: 开发环境变量(不提交到版本控制)
|
||||
- `.env.glm.example`: 环境变量模板
|
||||
- `eslint.config.mjs`: ESLint 配置
|
||||
|
||||
### 部署配置
|
||||
- `deploy.sh`: 完整部署脚本
|
||||
- `deploy-optimized.sh`: 优化部署脚本
|
||||
- `start.sh`: 服务启动脚本
|
||||
|
||||
## 开发环境设置
|
||||
|
||||
### 本地开发要求
|
||||
- **Node.js**: >= 18.0.0
|
||||
- **MySQL**: >= 8.0
|
||||
- **yarn**: 最新稳定版
|
||||
- **Git**: 版本控制
|
||||
|
||||
### 开发命令
|
||||
```bash
|
||||
# 安装依赖
|
||||
yarn install
|
||||
|
||||
# 开发模式启动
|
||||
yarn start:dev
|
||||
|
||||
# 构建项目
|
||||
yarn build
|
||||
|
||||
# 生产模式启动
|
||||
yarn start:prod
|
||||
|
||||
# 运行测试
|
||||
yarn test
|
||||
|
||||
# 代码检查
|
||||
yarn lint
|
||||
|
||||
# 代码格式化
|
||||
yarn format
|
||||
```
|
||||
|
||||
### PM2 管理命令
|
||||
```bash
|
||||
# 启动开发环境
|
||||
yarn pm2:start:dev
|
||||
|
||||
# 启动生产环境
|
||||
yarn pm2:start
|
||||
|
||||
# 查看状态
|
||||
yarn pm2:status
|
||||
|
||||
# 查看日志
|
||||
yarn pm2:logs
|
||||
|
||||
# 重启服务
|
||||
yarn pm2:restart
|
||||
|
||||
# 停止服务
|
||||
yarn pm2:stop
|
||||
```
|
||||
|
||||
## 环境变量配置
|
||||
|
||||
### 必需的环境变量
|
||||
```bash
|
||||
# 数据库配置
|
||||
DB_HOST=localhost
|
||||
DB_PORT=3306
|
||||
DB_USERNAME=your_username
|
||||
DB_PASSWORD=your_password
|
||||
DB_DATABASE=pilates_db
|
||||
|
||||
# JWT 配置
|
||||
JWT_SECRET=your_jwt_secret_key
|
||||
JWT_EXPIRES_IN=7d
|
||||
REFRESH_TOKEN_SECRET=your_refresh_token_secret
|
||||
REFRESH_TOKEN_EXPIRES_IN=30d
|
||||
|
||||
# Apple 认证配置
|
||||
APPLE_BUNDLE_ID=com.yourcompany.pilates
|
||||
APPLE_KEY_ID=your_apple_key_id
|
||||
APPLE_ISSUER_ID=your_apple_issuer_id
|
||||
APPLE_PRIVATE_KEY_PATH=path/to/private/key.p8
|
||||
APPLE_APP_SHARED_SECRET=your_app_shared_secret
|
||||
|
||||
# AI 服务配置
|
||||
DASHSCOPE_API_KEY=your_dashscope_api_key
|
||||
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
||||
DASHSCOPE_MODEL=qwen-flash
|
||||
DASHSCOPE_VISION_MODEL=qwen-vl-max
|
||||
|
||||
# 加密配置
|
||||
ENCRYPTION_KEY=your-32-character-secret-key-here
|
||||
|
||||
# 腾讯云 COS 配置
|
||||
COS_SECRET_ID=your_cos_secret_id
|
||||
COS_SECRET_KEY=your_cos_secret_key
|
||||
COS_REGION=your_cos_region
|
||||
COS_BUCKET=your_cos_bucket
|
||||
|
||||
# RevenueCat 配置
|
||||
REVENUECAT_PUBLIC_API_KEY=your_revenuecat_public_key
|
||||
REVENUECAT_SECRET_API_KEY=your_revenuecat_secret_key
|
||||
|
||||
# 服务配置
|
||||
PORT=3002
|
||||
NODE_ENV=development
|
||||
```
|
||||
|
||||
## 数据库架构
|
||||
|
||||
### 字符集和排序规则
|
||||
- **字符集**: `utf8mb4` (支持完整 Unicode,包括 emoji)
|
||||
- **排序规则**: `utf8mb4_unicode_ci` (不区分大小写)
|
||||
- **时区**: 统一使用 UTC 时间
|
||||
|
||||
### 连接配置
|
||||
- **连接池**: 最大连接数 10,最小连接数 0
|
||||
- **超时设置**: 查询超时 30 秒,连接超时 10 秒
|
||||
- **自动重连**: 启用连接失败自动重连
|
||||
|
||||
### 迁移策略
|
||||
- **自动同步**: 开发环境使用 `synchronize: true`
|
||||
- **生产环境**: 使用 SQL 脚本手动执行迁移
|
||||
- **版本控制**: SQL 脚本存储在 `sql-scripts/` 目录
|
||||
|
||||
## API 设计规范
|
||||
|
||||
### RESTful 设计原则
|
||||
- **资源导向**: 使用名词表示资源
|
||||
- **HTTP 方法**: GET/POST/PUT/DELETE 对应 CRUD 操作
|
||||
- **状态码**: 标准 HTTP 状态码 + 业务错误码
|
||||
- **统一响应**: 使用 `ApiResponseDto` 包装所有响应
|
||||
|
||||
### 接口版本控制
|
||||
- **路径版本**: `/api/v1/users` (推荐)
|
||||
- **查询参数**: `?version=1` (备选)
|
||||
- **Header 版本**: `Accept: application/vnd.api+json;version=1` (备选)
|
||||
|
||||
### 请求响应格式
|
||||
```typescript
|
||||
// 成功响应
|
||||
{
|
||||
"code": 0,
|
||||
"message": "操作成功",
|
||||
"data": { ... }
|
||||
}
|
||||
|
||||
// 错误响应
|
||||
{
|
||||
"code": 1,
|
||||
"message": "错误描述",
|
||||
"data": null
|
||||
}
|
||||
```
|
||||
|
||||
## 日志管理
|
||||
|
||||
### 日志级别
|
||||
- **ERROR**: 错误信息,需要立即关注
|
||||
- **WARN**: 警告信息,可能的问题
|
||||
- **INFO**: 一般信息,重要业务操作
|
||||
- **DEBUG**: 调试信息,详细的执行流程
|
||||
|
||||
### 日志配置
|
||||
- **Winston**: 结构化日志记录
|
||||
- **日志轮转**: 按日期和大小自动轮转
|
||||
- **多输出**: 同时输出到文件和控制台
|
||||
- **格式化**: JSON 格式便于分析
|
||||
|
||||
### 日志文件
|
||||
- `logs/error.log`: 错误日志
|
||||
- `logs/output.log`: 一般输出日志
|
||||
- `logs/combined.log`: 合并日志
|
||||
|
||||
## 安全最佳实践
|
||||
|
||||
### 数据加密
|
||||
- **传输加密**: 强制 HTTPS/TLS 1.3
|
||||
- **存储加密**: 敏感字段 AES-256-GCM 加密
|
||||
- **密钥管理**: 环境变量 + 定期轮换
|
||||
- **哈希算法**: bcrypt 处理密码(如需要)
|
||||
|
||||
### 输入验证
|
||||
- **class-validator**: DTO 数据验证
|
||||
- **class-transformer**: 数据转换和清理
|
||||
- **SQL 注入防护**: Sequelize ORM 自动防护
|
||||
- **XSS 防护**: 输入清理和输出编码
|
||||
|
||||
### 访问控制
|
||||
- **JWT 认证**: 无状态 Token 认证
|
||||
- **权限守卫**: 基于角色的访问控制
|
||||
- **速率限制**: 防止 API 滥用和攻击
|
||||
- **CORS 配置**: 跨域请求安全控制
|
||||
|
||||
## 性能优化
|
||||
|
||||
### 数据库优化
|
||||
- **索引策略**: 为常用查询字段添加索引
|
||||
- **查询优化**: 避免 N+1 查询问题
|
||||
- **连接池**: 合理配置数据库连接池
|
||||
- **分页查询**: 大数据集分页处理
|
||||
|
||||
### 缓存策略
|
||||
- **内存缓存**: 热点数据内存缓存
|
||||
- **查询缓存**: 数据库查询结果缓存
|
||||
- **CDN 缓存**: 静态资源 CDN 分发
|
||||
- **浏览器缓存**: 合理设置 Cache-Control
|
||||
|
||||
### 代码优化
|
||||
- **异步处理**: 使用 async/await 处理异步操作
|
||||
- **批量操作**: 减少数据库往返次数
|
||||
- **流式处理**: 大数据量流式处理
|
||||
- **懒加载**: 按需加载模块和数据
|
||||
|
||||
## 监控与调试
|
||||
|
||||
### 应用监控
|
||||
- **PM2 监控**: 进程状态和资源使用
|
||||
- **健康检查**: 应用健康状态接口
|
||||
- **性能指标**: 响应时间和吞吐量
|
||||
- **错误追踪**: 异常自动收集和报告
|
||||
|
||||
### 调试工具
|
||||
- **Source Map**: 生产环境调试支持
|
||||
- **日志分析**: 结构化日志查询和分析
|
||||
- **API 文档**: Swagger 自动生成文档
|
||||
- **数据库工具**: MySQL Workbench/Sequel Pro
|
||||
|
||||
## 部署架构
|
||||
|
||||
### 服务器环境
|
||||
- **操作系统**: Ubuntu 20.04 LTS
|
||||
- **Node.js**: 18.x LTS 版本
|
||||
- **数据库**: MySQL 8.0
|
||||
- **Web 服务器**: Nginx 1.18+
|
||||
|
||||
### 部署流程
|
||||
1. **代码构建**: 本地或服务器端 TypeScript 编译
|
||||
2. **依赖安装**: 生产依赖安装和锁定
|
||||
3. **数据库迁移**: SQL 脚本执行和数据迁移
|
||||
4. **服务启动**: PM2 集群模式启动应用
|
||||
5. **健康检查**: 验证服务正常运行
|
||||
|
||||
### 容器化部署(未来)
|
||||
- **Docker**: 应用容器化
|
||||
- **Docker Compose**: 多服务编排
|
||||
- **Kubernetes**: 容器编排管理
|
||||
- **CI/CD**: 自动化构建和部署流水线
|
||||
Reference in New Issue
Block a user