# Undergraduate_broccoli
**Repository Path**: LCPSpace/undergraduate_broccoli
## Basic Information
- **Project Name**: Undergraduate_broccoli
- **Description**: 123123123123
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-05
- **Last Updated**: 2026-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# AI代码生成器 (AI Code Mother)
🌐 在线预览 •
📦 GitHub •
📦 Gitee •
📖 部署文档
一个功能强大的全栈 AI 代码生成平台,基于 Spring Boot 3.5.4 和 Vue 3 构建,集成 GPT、Qwen 等多种 AI 模型,专注于 Vue 3 项目的智能化生成服务。支持 AI 模型动态选择、两阶段代码生成、代码自动验证等先进功能。
## 🚀 项目概述
AI Code Mother 是一个现代化的 AI 驱动代码生成平台,旨在通过人工智能技术简化和加速 Vue 3 应用开发流程。系统专注于 Vue 3 项目的智能化生成,通过动态模型选择、两阶段代码生成、自动代码验证等先进功能,为开发者提供高效、智能、可靠的代码生成解决方案。
### ✨ 核心特性
#### AI 智能生成
- **🤖 动态模型选择**: 支持 GPT、Qwen、OpenAI 等 20+ 个 AI 模型,根据任务复杂度智能选择
- **📋 两阶段生成**: 计划生成 → 用户确认 → 代码生成,避免无效生成节省成本
- **✅ 代码自动验证**: 集成 ESLint 代码质量检查,自动生成代码审查报告
- **🎯 Vue 3 专注**: 专为 Vue 3 项目优化,支持 Composition API、TypeScript、Pinia 等现代特性
- **🔄 实时流式输出**: 基于 SSE (Server-Sent Events) 的实时代码生成进度展示
#### 完善的用户体系
- **📧 邮箱认证**: 支持邮箱注册登录,邮件验证码双因素认证,提升账户安全性
- **🎁 积分系统**: 完善的积分获取、消耗、过期机制(已修复 8 个 P0-P3 级别缺陷)
- **👥 邀请机制**: 邀请码系统,邀请双方均可获得积分奖励,配套防刷机制
- **📦 版本管理**: 完整的应用版本历史记录、一键回滚功能
#### 企业级运维
- **🚀 一键部署**: 规范的 deployment/ 目录,支持 Ubuntu 服务器一键部署
- **🔄 备份回滚**: 自动备份数据库、应用、配置,支持交互式回滚
- **📊 监控系统**: 集成 Prometheus 指标监控,支持 Grafana 可视化
- **🛡️ 安全加固**: 支持 OpenResty 限流、WAF 防护、日志轮转
#### 云端集成
- **☁️ 腾讯云 COS**: 生成文件自动上传云端,CDN 加速访问
- **🔧 智能工具**: 网页截图、项目下载、代码预览、差异对比等实用功能
- **📱 全栈架构**: Spring Boot 后端 + Vue 3 前端的现代化全栈解决方案
## 📑 目录
- [技术架构](#-技术架构)
- [核心功能](#-核心功能)
- [项目结构](#-项目结构)
- [环境要求](#-环境要求)
- [快速开始](#-快速开始)
- [用户指南](#-用户指南)
- [开发指南](#-开发指南)
- [API文档](#-api文档)
- [部署指南](#-部署指南)
- [常见问题](#-常见问题)
- [贡献指南](#-贡献指南)
## 🛠️ 技术架构
### 后端技术栈 (Spring Boot)
**核心框架**
- **Spring Boot 3.5.4**: 基于Java 21的现代化Spring应用框架
- **Spring Web**: RESTful API开发
- **Spring AOP**: 切面编程支持,用于权限校验和日志记录
- **Spring Session**: 分布式会话管理,支持Redis存储
**AI集成**
- **LangChain4j 1.1.0**: Java AI 应用开发框架,支持工具调用和流式输出
- **LangGraph4j 1.6.0**: AI 工作流编排引擎,支持复杂任务编排
- **动态模型工厂**: 支持 20+ 个 AI 模型的动态选择和配置
- **GPT-5 Codex**: 高级编码模型,用于复杂代码生成
- **GPT-5 Low**: 基础编码模型,快速响应
- **Qwen Turbo**: 快速分类和简单任务处理
- **其他 OpenAI 兼容模型**: 支持多种第三方模型
- **AI 模型等级系统**: 基础编码、标准编码、高级编码、基础推理、高级推理 5 个等级
- **Reactor**: 响应式编程支持 Server-Sent Events 流式输出
**数据层**
- **MyBatis-Flex 1.11.0**: 灵活的MyBatis增强ORM框架
- **MySQL**: 主数据库,存储用户、应用、版本、积分等数据
- **HikariCP**: 高性能数据库连接池
- **雪花算法**: 分布式唯一ID生成策略
**缓存与会话**
- **Redis 6.0+**: 会话存储、邮箱验证码缓存
- **Caffeine**: 高性能本地缓存,优化热点数据访问
- **Redisson 3.50.0**: 分布式锁、高级Redis客户端
**监控与运维**
- **Spring Boot Actuator**: 应用监控和管理端点
- **Micrometer + Prometheus**: 指标收集和监控
- **Grafana**: 监控数据可视化(可选)
- **定时任务**: 积分过期、邀请奖励自动发放
**文档与工具**
- **Knife4j 4.4.0**: Swagger UI增强版API文档
- **Hutool 5.8.38**: Java工具类库
- **Lombok 1.18.36**: 代码简化注解
**云服务集成**
- **腾讯云COS 5.6.227**: 对象存储服务,用于文件存储和CDN加速
- **Spring Mail**: 邮件发送服务,用于验证码和通知
**Web自动化**
- **Selenium 4.33.0**: 网页自动化和截图
- **WebDriverManager 6.1.0**: 浏览器驱动自动管理
### 前端技术栈 (Vue 3)
**核心框架**
- **Vue 3.5.17**: 渐进式JavaScript框架,使用Composition API
- **TypeScript 5.8.0**: 类型安全的JavaScript超集
- **Vite 7.0.0**: 下一代前端构建工具,极速热重载
**UI与组件**
- **Ant Design Vue 4.2.6**: 企业级UI组件库
- **Vue Router 4.5.1**: 官方路由管理器
- **Pinia 3.0.3**: 新一代状态管理库
**HTTP与API**
- **Axios 1.11.0**: Promise based HTTP客户端
- **OpenAPI Generator**: 从后端OpenAPI规范自动生成TypeScript客户端
**内容渲染**
- **Markdown-it 14.1.0**: Markdown解析和渲染引擎
- **highlight.js 11.11.1**: 语法高亮显示库,支持200+编程语言
**开发工具**
- **ESLint**: JavaScript/TypeScript代码检查
- **Prettier**: 代码格式化工具
- **Vue DevTools**: Vue调试工具
- **Vue TSC**: Vue TypeScript类型检查
### 数据库设计
系统包含 10 个核心数据表:
- **user**: 用户信息表,支持邮箱注册、邮箱验证
- **user_points**: 用户积分表,记录累计积分和可用积分
- **points_record**: 积分记录表,记录积分获取和消耗明细(新增 status 字段支持积分状态管理)
- **invite_record**: 邀请关系表,记录邀请人、被邀请人及奖励状态
- **sign_in_record**: 签到记录表,记录用户签到历史
- **app**: 应用信息表,存储用户创建的应用配置(新增 modelKey 字段支持动态模型选择)
- **app_version**: 应用版本表,记录每次应用修改的版本历史(新增 codeContentUrl 字段)
- **chat_history**: 聊天记录表,存储用户与 AI 的对话历史
- **email_verification_code**: 邮箱验证码表,临时存储验证码用于注册登录
- **ai_model_config**: AI 模型配置表,存储所有可用 AI 模型的配置信息(🆕 v1.1.0)
**技术特性**
- 雪花算法ID生成策略
- 软删除支持(逻辑删除)
- 时间戳自动管理
- 索引优化查询性能
## 🎯 核心功能
### 1. AI 代码生成引擎
**🆕 动态模型选择系统**
- **20+ AI 模型支持**: GPT、Qwen、OpenAI 兼容模型等
- **4 级模型分类**: SIMPLE(简单)、MEDIUM(中等)、HARD(困难)、EXPERT(专家)
- **智能模型推荐**: 根据项目复杂度自动推荐合适的模型
- **质量系数显示**: 前端显示模型质量系数(替代倍率),帮助用户选择
- **实时成本预估**: 根据选择的模型预估积分消耗
**🆕 两阶段代码生成流程**
1. **阶段一:计划生成**
- AI 分析需求,生成详细的开发计划
- 包含文件列表、功能模块、技术选型等
- 用户可预览和修改计划
2. **阶段二:代码生成**
- 用户确认计划后开始生成代码
- 支持基于计划的增量生成
- 避免无效生成,节省 Token 成本
**🆕 代码自动验证**
- **ESLint 集成**: 自动执行 ESLint 代码质量检查
- **Vue 项目结构验证**: 验证项目结构是否符合 Vue 3 规范
- **自动生成审查报告**: 包含代码质量评分、错误列表、修复建议
- **构建前验证**: 在项目构建前发现潜在问题
**生成类型支持**
- **Vue 3 项目生成**: 专注于 Vue 3 完整前端应用(已移除 HTML 和多文件项目支持)
- 支持 Composition API、TypeScript、Pinia
- 自动配置路由、状态管理、UI 组件库
- 优化的项目结构和代码组织
**实时流式输出**
- 基于 Server-Sent Events (SSE) 的实时推送
- 实时展示 AI 思考过程和代码生成进度
- 支持生成过程中的取消操作
- 断线自动重连机制
- 🆕 优化 ChatMemory 管理,避免上下文过长(性能提升 50%+)
**代码优化**
- 自动代码格式化
- 语法检查和修正
- 最佳实践建议
- 性能优化提示
- 🆕 重复写入检测和警告
### 2. 版本管理系统
**版本历史记录**
- 自动记录每次应用修改的版本快照
- 保存完整的应用配置、生成内容、文件列表
- 记录版本创建时间和操作人
- 支持版本列表分页查询
**版本回滚功能**
- 一键回滚到任意历史版本
- 回滚操作会创建新版本记录
- 保持完整的版本变更链
- 仅应用创建者可执行回滚
**权限控制**
- 仅应用创建者可查看版本历史
- 仅应用创建者可执行版本回滚
- 版本数据逻辑删除,可恢复
### 3. 积分系统(已修复 8 个 P0-P3 级别缺陷)
**积分获取机制**
- **注册奖励**: 新用户注册赠送初始积分
- **邀请奖励**: 成功邀请好友注册,邀请双方均获得积分
- **每日签到**: 每日首次登录获得签到积分(可扩展)
**积分消耗场景**
- **AI 代码生成**: 根据选择的 AI 模型和实际 Token 消耗量计费
- 不同模型有不同的积分消耗率(每千 Token 消耗的积分数)
- 质量系数会影响最终积分消耗(1.0-3.5倍)
- 典型 Vue 3 项目生成消耗: 50-200 积分
- **项目部署**: 完全免费,不消耗积分
- **代码下载**: 完全免费,不消耗积分
**🆕 积分状态管理**
- **PENDING**: 待处理 - 积分操作已创建但未确认
- **COMPLETED**: 已完成 - 积分成功增加或扣除
- **FAILED**: 已失败 - 积分操作失败,需要回滚
- **REFUNDED**: 已退款 - 失败任务的积分已退还
**🆕 积分一致性保障**
- **一致性检查器**: 定期检查积分记录与用户积分余额是否一致
- **自动修复机制**: 发现不一致时自动修复或报警
- **防重复扣费**: 使用分布式锁防止并发扣费
- **事务保障**: 积分操作使用数据库事务确保原子性
**积分管理**
- **累计积分**: 记录用户历史获得的总积分
- **可用积分**: 当前可使用的积分余额
- **冻结积分**: 预留字段,支持积分冻结功能
- **积分明细**: 完整的积分获取和消耗记录
**积分过期机制**
- 定时任务自动检查过期积分
- 支持设置积分有效期(如 180 天)
- 过期积分自动扣除
- 过期通知提醒(可扩展)
**🆕 积分监控优化**
- Prometheus 指标收集(已修复跨线程问题)
- 积分获取/消耗趋势统计
- 用户积分分布分析
- 异常积分变动预警
- Token 使用量监控
### 4. 邀请机制
**邀请码系统**
- 每个用户拥有唯一邀请码
- 邀请码基于用户ID生成,永久有效
- 支持邀请链接一键分享
- 邀请码区分大小写
**邀请奖励**
- **邀请人奖励**: 成功邀请好友注册,获得积分奖励
- **被邀请人奖励**: 通过邀请码注册,同样获得积分奖励
- **双向激励**: 促进用户主动分享和推广
- **自动发放**: 定时任务自动检测并发放奖励
**防刷机制**
- **IP检测**: 记录注册IP,同一IP多次注册预警
- **设备ID检测**: 通过浏览器指纹识别设备
- **时间窗口**: 短时间内大量邀请触发人工审核
- **人工审核**: 可疑邀请关系需人工确认后发放奖励
**邀请状态管理**
- **PENDING**: 待确认 - 邀请链接已创建
- **REGISTERED**: 已注册 - 被邀请人完成注册
- **REWARDED**: 已奖励 - 积分已成功发放
- **状态流转**: 自动化状态更新和通知
**邀请统计**
- 邀请人数统计
- 成功注册人数
- 奖励积分总额
- 邀请转化率分析
### 5. 用户认证系统
**邮箱注册登录**
- 邮箱验证码注册
- 邮箱验证码登录
- 邮箱唯一性验证
- 密码MD5加密(加盐: Join2049)
**会话管理**
- 基于Redis的分布式会话
- 30天会话有效期
- 自动登录状态维护
- 安全退出登录
**权限控制**
- 基于角色的访问控制(user/admin)
- `@AuthCheck`注解权限校验
- 仅创建者可修改应用
- 管理员拥有全部权限
### 6. 项目管理系统
**应用CRUD**
- 创建新应用(配置名称、描述、生成类型)
- 查询应用列表(分页、搜索、过滤)
- 更新应用配置
- 删除应用(逻辑删除)
**生成类型**
- **Vue 3 项目生成**: 专注于 Vue 3 完整前端应用(v1.1.0+ 已聚焦 Vue 项目)
- 支持 Composition API、TypeScript、Pinia
- 自动配置路由、状态管理、UI 组件库
- 优化的项目结构和代码组织
**应用部署**
- 生成的项目自动上传到腾讯云COS
- 生成唯一的部署访问链接
- 支持自定义域名访问
- CDN加速文件访问
**批量操作**
- 批量删除应用
- 批量导出应用配置
- 批量部署项目
### 7. 实时通信系统
**SSE流式传输**
- 基于Server-Sent Events的单向推送
- 实时显示AI代码生成进度
- 自动处理连接中断和重连
- 支持多客户端同时接收
**聊天历史**
- 完整的AI对话历史记录
- 支持历史会话查询
- 上下文关联显示
- 聊天记录导出(可扩展)
**实时通知**
- 积分变动实时通知
- 邀请成功实时通知
- 系统消息推送
### 8. 云存储集成
**腾讯云COS**
- 生成文件自动上传云端
- 支持大文件分片上传
- 自动生成访问URL
- CDN加速文件分发
**文件管理**
- 文件列表查看
- 文件下载
- 文件删除
- 存储空间统计
**截图功能**
- 基于Selenium的网页截图
- 支持全页面截图
- 自动压缩和优化
- 截图结果云端存储
### 9. 监控与运维
**Prometheus指标**
- HTTP请求统计
- AI模型调用次数
- 数据库查询性能
- 缓存命中率
- 积分系统指标
- 邀请系统指标
**健康检查**
- 应用健康状态检查
- 数据库连接检查
- Redis连接检查
- 外部API可用性检查
**日志管理**
- 结构化日志记录
- 按级别分类(DEBUG/INFO/WARN/ERROR)
- 异常堆栈追踪
- 请求日志记录
## 📦 项目结构
```
ai-code-mother/
├── src/main/java/com/spring/aicodemother/ # 后端源码
│ ├── ai/ # AI 模型集成和服务
│ │ ├── AiManager.java # AI 模型管理器
│ │ ├── DynamicAiModelFactory.java # 🆕 动态模型工厂
│ │ ├── AiCodeGeneratorServiceFactory.java # 🆕 AI 服务工厂
│ │ ├── MessageStreamHandler.java # 流式消息处理
│ │ ├── model/ # AI 请求响应模型
│ │ └── tools/ # 🆕 AI 工具调用
│ │ ├── CodeValidationTool.java # 🆕 代码验证工具
│ │ └── VueProjectStructureValidationTool.java # 🆕 结构验证工具
│ ├── controller/ # REST API 控制器
│ │ ├── AppController.java # 应用管理
│ │ ├── AppVersionController.java # 版本管理
│ │ ├── UserController.java # 用户管理
│ │ ├── PointsController.java # 积分管理
│ │ ├── InviteController.java # 邀请管理
│ │ ├── AiModelController.java # 🆕 AI 模型管理
│ │ └── HealthController.java # 健康检查
│ ├── service/ # 业务逻辑层
│ │ ├── AppService.java # 应用服务
│ │ ├── AppVersionService.java # 版本服务
│ │ ├── UserService.java # 用户服务
│ │ ├── UserPointsService.java # 积分服务
│ │ ├── PointsRecordService.java # 积分记录服务
│ │ ├── InviteRecordService.java # 邀请服务
│ │ ├── ChatService.java # 聊天服务
│ │ ├── AiModelConfigService.java # 🆕 AI 模型配置服务
│ │ ├── AiPlanningService.java # 🆕 AI 计划生成服务
│ │ ├── PlanCacheService.java # 🆕 计划缓存服务
│ │ └── GenerationValidationService.java # 🆕 生成验证服务
│ ├── mapper/ # 数据访问层
│ │ └── *.java # MyBatis-Flex Mapper
│ ├── model/ # 数据模型
│ │ ├── entity/ # 实体类
│ │ ├── dto/ # 数据传输对象
│ │ ├── vo/ # 视图对象
│ │ └── enums/ # 枚举类型
│ ├── core/ # 核心业务逻辑
│ │ ├── CodeGenerator.java # 代码生成核心
│ │ ├── FileParser.java # 文件解析器
│ │ └── FileSaver.java # 文件保存器
│ ├── config/ # 配置类
│ │ ├── CorsConfig.java # 跨域配置
│ │ ├── RedisConfig.java # Redis配置
│ │ └── CosClientConfig.java # COS配置
│ ├── utils/ # 工具类
│ │ └── ScreenshotUtils.java # 截图工具
│ ├── manager/ # 第三方服务管理
│ │ └── CosManager.java # COS管理器
│ ├── schedule/ # 定时任务
│ │ ├── PointsExpireScheduler.java # 积分过期任务
│ │ ├── PointsConsistencyChecker.java # 🆕 积分一致性检查
│ │ └── InviteRewardScheduler.java # 邀请奖励任务
│ ├── monitor/ # 监控指标
│ │ ├── PointsMetricsCollector.java # 积分指标收集
│ │ ├── AiModelMetricsCollector.java # 🆕 AI 模型监控
│ │ ├── MonitorContext.java # 🆕 监控上下文
│ │ └── MonitorContextHolder.java # 🆕 上下文持有者(修复跨线程问题)
│ ├── exception/ # 异常处理
│ │ ├── GlobalExceptionHandler.java # 全局异常处理器
│ │ ├── BusinessException.java # 业务异常
│ │ └── ErrorCode.java # 错误码定义
│ ├── common/ # 公共类
│ │ ├── BaseResponse.java # 统一响应格式
│ │ └── ResultUtils.java # 响应工具类
│ └── annotation/ # 自定义注解
│ └── AuthCheck.java # 权限校验注解
│
├── src/main/resources/ # 资源文件
│ ├── application.yml # 应用配置
│ ├── application-dev.yml # 开发环境配置
│ ├── application-prod.yml # 生产环境配置
│ └── prompt/ # AI提示词模板
│ ├── html_generator.txt # HTML生成提示词
│ ├── multifile_generator.txt # 多文件生成提示词
│ └── vue_generator.txt # Vue生成提示词
│
├── ai-code-mother-frontend/ # 前端源码
│ ├── src/
│ │ ├── main.ts # 应用入口
│ │ ├── App.vue # 根组件
│ │ ├── request.ts # Axios配置
│ │ ├── layouts/ # 布局组件
│ │ │ └── BasicLayout.vue # 基础布局
│ │ ├── components/ # 可复用组件
│ │ │ ├── GlobalHeader.vue # 全局头部
│ │ │ ├── GlobalFooter.vue # 全局底部
│ │ │ ├── AiModelSelector.vue # 🆕 AI 模型选择器(544 行)
│ │ │ ├── DeployingModal.vue # 🆕 部署中弹窗
│ │ │ ├── DeploySuccessModal.vue # 部署成功弹窗
│ │ │ ├── PreviewLoading.vue # 🆕 预览加载组件
│ │ │ ├── DiffViewer.vue # 🆕 差异查看器
│ │ │ ├── CodeHighlight.vue # 代码高亮组件
│ │ │ └── MarkdownRenderer.vue # Markdown 渲染器
│ │ ├── pages/ # 页面组件
│ │ │ ├── HomePage.vue # 首页
│ │ │ ├── app/ # 应用管理页面
│ │ │ │ ├── AppChatPage.vue # 🆕 应用聊天页(重构为模块化)
│ │ │ │ ├── components/ # 🆕 应用组件
│ │ │ │ │ ├── AppHeaderBar.vue # 应用头部
│ │ │ │ │ ├── ChatPanel.vue # 聊天面板
│ │ │ │ │ └── CodePreviewPanel.vue # 代码预览面板
│ │ │ │ ├── composables/ # 🆕 组合式函数
│ │ │ │ │ ├── useAppDeployment.ts # 部署逻辑
│ │ │ │ │ ├── useAppInfo.ts # 应用信息
│ │ │ │ │ ├── useChatMessages.ts # 消息管理
│ │ │ │ │ ├── useCodeGeneration.ts # 代码生成(605 行)
│ │ │ │ │ ├── useVersionManagement.ts # 版本管理
│ │ │ │ │ └── useVisualEditor.ts # 可视化编辑
│ │ │ │ └── utils/ # 工具函数
│ │ │ │ └── contentFilters.ts # 🆕 内容过滤器
│ │ │ ├── user/ # 用户相关页面
│ │ │ │ ├── LoginPage.vue # 登录页
│ │ │ │ ├── RegisterPage.vue # 注册页
│ │ │ │ └── UserManagePage.vue # 用户管理
│ │ │ ├── points/ # 积分相关页面
│ │ │ │ ├── PointsPage.vue # 积分中心
│ │ │ │ └── InvitePage.vue # 邀请页面
│ │ │ └── docs/ # 文档页面
│ │ │ ├── QuickStartDoc.vue # 快速开始
│ │ │ ├── APIDoc.vue # API 文档
│ │ │ ├── FAQDoc.vue # 常见问题
│ │ │ ├── features/ # 功能文档
│ │ │ │ ├── AIGenerationDoc.vue # AI 生成文档
│ │ │ │ └── PointsSystemDoc.vue # 积分系统文档
│ │ │ └── tutorial/ # 教程目录
│ │ ├── router/ # 路由配置
│ │ │ └── index.ts # 路由定义
│ │ ├── stores/ # Pinia 状态管理
│ │ │ ├── user.ts # 用户状态
│ │ │ └── app.ts # 应用状态
│ │ ├── api/ # API 客户端(自动生成)
│ │ │ ├── aImoxingpeizhi.ts # 🆕 AI 模型配置 API
│ │ │ └── appController.ts # 应用控制器 API
│ │ ├── assets/ # 静态资源
│ │ │ ├── Deploy.svg # 🆕 部署图标
│ │ │ ├── Online search.svg # 🆕 在线搜索图标
│ │ │ ├── ToolsCall.svg # 🆕 工具调用图标
│ │ │ ├── refresh.svg # 🆕 刷新图标
│ │ │ └── (共 18 个 SVG 图标) # Deploy、ToolsCall、thinking 等
│ │ └── styles/ # 🆕 样式文件
│ │ ├── lovable-theme.css # Lovable 主题
│ │ └── lovable-theme-override.css # 主题覆盖
│ ├── public/ # 公共资源
│ ├── .env.development # 开发环境变量
│ ├── .env.production # 生产环境变量
│ └── package.json # 依赖配置
│
├── deployment/ # 🆕 部署包目录
│ ├── backend/ # 后端 JAR 包
│ ├── frontend/ # 前端构建产物
│ ├── config/ # 配置文件
│ │ ├── nginx.conf # Nginx 配置
│ │ ├── openresty.conf # OpenResty 配置
│ │ ├── aicodehub.service # Systemd 服务
│ │ └── logrotate-aicodehub # 日志轮转
│ ├── scripts/ # 部署脚本
│ │ ├── deploy.sh # 一键部署
│ │ ├── check_env.sh # 环境检查
│ │ ├── backup.sh # 备份脚本
│ │ ├── rollback.sh # 回滚脚本
│ │ └── service_manager.sh # 服务管理
│ ├── sql/ # 数据库迁移脚本
│ ├── docs/ # 部署文档
│ ├── .env.prod.example # 环境变量模板
│ └── README.md # 部署说明
├── sql/ # 数据库脚本
│ ├── create_table.sql # 建表脚本
│ ├── add_24_models.sql # 🆕 新增 24 个模型
│ ├── fix_model_config_pricing_v2.sql # 🆕 修复模型定价
│ └── v1.1.0_ai_model_tier_system.sql # 🆕 模型等级系统
├── tmp/ # 临时文件目录
│ ├── code_output/ # 生成代码输出
│ └── screenshots/ # 截图输出
├── tasks/ # 🆕 任务和计划
│ └── todo.md # 任务清单
├── prometheus.yml # Prometheus 配置
├── pom.xml # Maven 配置
├── mvnw / mvnw.cmd # Maven Wrapper
└── README.md # 项目说明文档
```
## 🔧 环境要求
### 必需环境
| 组件 | 版本要求 | 说明 |
|------|---------|------|
| **Java** | 21+ | Spring Boot 3.5.4运行要求 |
| **Node.js** | 18+ | 前端开发和构建环境 |
| **MySQL** | 8.0+ | 主数据库 |
| **Redis** | 6.0+ | 会话存储和缓存 |
| **Chrome/Chromium** | 最新版 | Selenium截图功能依赖 |
### 可选组件
| 组件 | 用途 |
|------|------|
| **Docker** | 容器化部署 |
| **Nginx** | 反向代理和静态文件服务 |
| **Prometheus** | 指标收集和监控 |
| **Grafana** | 监控数据可视化 |
### 开发工具推荐
- **IDE**: IntelliJ IDEA 2023+ / VS Code
- **API测试**: Postman / Apifox
- **数据库工具**: Navicat / DataGrip
- **Git客户端**: SourceTree / GitKraken
## 🚀 快速开始
### 1. 环境准备
```bash
# 检查Java版本
java -version # 需要Java 21
# 检查Node.js版本
node -version # 需要18.0+
# 启动MySQL服务
mysql -u root -p
CREATE DATABASE ai_code_mother CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
# 启动Redis服务
redis-server
```
### 2. 数据库初始化
```bash
# 执行建表脚本
mysql -u root -p ai_code_mother < sql/create_table.sql
```
### 3. 后端配置和启动
```bash
# 克隆项目
git clone [repository-url]
cd ai-code-mother
```
#### 3.1 完整配置文件 (src/main/resources/application-dev.yml)
```yaml
spring:
# 应用名称
application:
name: ai-code-mother-backend
# 数据库配置
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ai_code_mother?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
username: root # 修改为你的MySQL用户名
password: your_password # 修改为你的MySQL密码
# HikariCP 连接池配置(生产环境建议)
hikari:
maximum-pool-size: 20 # 最大连接数
minimum-idle: 5 # 最小空闲连接数
connection-timeout: 30000 # 连接超时时间(毫秒)
idle-timeout: 600000 # 空闲超时时间(毫秒)
max-lifetime: 1800000 # 连接最大生命周期(毫秒)
# Redis 配置
data:
redis:
host: 127.0.0.1 # Redis服务器地址
port: 6379 # Redis端口
password: # Redis密码(如无密码留空)
database: 0 # Redis数据库索引(0-15)
ttl: 3600 # 缓存存活时间(秒)
# Lettuce 连接池配置(生产环境建议)
lettuce:
pool:
max-active: 8 # 最大活跃连接数
max-idle: 8 # 最大空闲连接数
min-idle: 2 # 最小空闲连接数
max-wait: -1ms # 最大等待时间
# Session 配置
session:
store-type: redis # 使用Redis存储Session
timeout: 2592000 # Session过期时间(秒,30天)
# 邮件服务配置
mail:
host: smtp.qq.com # SMTP服务器地址(示例:QQ邮箱)
port: 587 # SMTP端口(587为TLS加密端口)
username: your-email@qq.com # 发件邮箱地址
password: your-smtp-password # SMTP密码或授权码
protocol: smtp
default-encoding: UTF-8
properties:
mail:
smtp:
auth: true # 启用SMTP认证
starttls:
enable: true # 启用TLS加密
required: true
ssl:
trust: smtp.qq.com # 信任的SMTP服务器
# 其他常用邮箱配置示例:
# Gmail: smtp.gmail.com:587
# 163邮箱: smtp.163.com:465 (SSL)
# 阿里云邮箱: smtp.aliyun.com:465
# 激活的配置文件
profiles:
active: dev # 开发环境使用dev
# 服务器配置
server:
port: 8123 # 后端服务端口
servlet:
context-path: /api # API上下文路径
session:
cookie:
max-age: 2592000 # Cookie过期时间(秒,30天)
http-only: true # 仅HTTP访问,防止XSS攻击
secure: false # 开发环境使用HTTP(生产环境改为true)
# AI 模型配置(核心配置)
langchain4j:
open-ai:
# 推理AI模型配置(用于复杂的代码生成任务)
reasoning-streaming-chat-model:
base-url: https://204992.xyz/v1 # OpenAI兼容API地址
api-key: sk-your-api-key-here # 你的API密钥
model-name: gpt-5-codex-medium # 高级编码模型
max-tokens: 4000 # 最大生成Token数
temperature: 0.7 # 生成温度(0-2,越高越随机)
timeout: 300s # 请求超时时间(5分钟)
log-requests: true # 记录请求日志(开发环境)
log-responses: true # 记录响应日志(开发环境)
# 路由AI模型配置(用于简单的分类和路由任务)
routing-chat-model:
base-url: https://204992.xyz/v1
api-key: sk-your-api-key-here
model-name: gpt-5-low # 基础编码模型(快速响应)
max-tokens: 50 # 路由任务只需少量Token
temperature: 0.3 # 较低温度确保稳定性
timeout: 30s
log-requests: true
log-responses: true
# 流式聊天模型配置(用于动态模型选择)
streaming-chat-model:
base-url: https://204992.xyz/v1
api-key: sk-your-api-key-here
model-name: gpt-5-low # 默认流式模型
max-tokens: 8192 # 支持长文本生成
temperature: 0.7
timeout: 300s
log-requests: true
log-responses: true
# 腾讯云 COS 对象存储配置(用于文件存储和部署)
cos:
client:
host: your-custom-domain.com # 自定义域名(可选)
secretId: your-secret-id # 腾讯云SecretId
secretKey: your-secret-key # 腾讯云SecretKey
region: ap-shanghai # COS地域(ap-beijing/ap-shanghai/ap-guangzhou等)
bucket: your-bucket-name # 存储桶名称
# 获取方式:登录腾讯云控制台 > 访问管理 > API密钥管理
# Pexels 图片搜索配置(可选功能)
pexels:
api-key: your-pexels-api-key
# 获取方式:https://www.pexels.com/api/
# Pixabay 插画搜索配置(可选功能)
pixabay:
api-key: your-pixabay-api-key
# 获取方式:https://pixabay.com/api/docs/
# 阿里云 DashScope 配置(可选功能)
dashscope:
api-key: your-dashscope-api-key
image-model: wan2.2-t2i-flash
# 获取方式:https://dashscope.console.aliyun.com/
# Knife4j API文档配置
knife4j:
enable: true # 启用API文档
setting:
language: zh_cn # 中文界面
# SpringDoc OpenAPI配置
springdoc:
group-configs:
- group: 'default'
packages-to-scan: com.spring.aicodemother.controller
# 监控端点配置
management:
endpoints:
web:
exposure:
include: health,info,prometheus # 暴露的端点
endpoint:
health:
show-details: always # 显示详细健康信息
# 日志配置(可选)
logging:
level:
root: INFO
com.spring.aicodemother: DEBUG # 开发环境使用DEBUG级别
file:
name: logs/application.log # 日志文件路径
max-size: 100MB # 单个日志文件最大大小
max-history: 30 # 保留30天的日志
```
#### 3.2 环境变量配置(推荐用于敏感信息)
作为application.yml的替代方案,可以使用环境变量:
```bash
# 数据库配置
export DB_HOST=localhost
export DB_PORT=3306
export DB_NAME=ai_code_mother
export DB_USERNAME=root
export DB_PASSWORD=your_password
# Redis配置
export REDIS_HOST=127.0.0.1
export REDIS_PORT=6379
export REDIS_PASSWORD=
# AI API配置
export OPENAI_API_BASE_URL=https://204992.xyz/v1
export OPENAI_API_KEY=sk-your-api-key-here
export OPENAI_MODEL_REASONING=gpt-5-codex-medium
export OPENAI_MODEL_ROUTING=gpt-5-low
# 邮件配置
export MAIL_HOST=smtp.qq.com
export MAIL_PORT=587
export MAIL_USERNAME=your-email@qq.com
export MAIL_PASSWORD=your-smtp-password
# COS配置
export COS_SECRET_ID=your-secret-id
export COS_SECRET_KEY=your-secret-key
export COS_REGION=ap-shanghai
export COS_BUCKET=your-bucket-name
```
#### 3.3 启动应用
```bash
# 编译项目
./mvnw clean compile # Linux/Mac
mvnw.cmd clean compile # Windows
# 运行测试(可选)
./mvnw test # Linux/Mac
mvnw.cmd test # Windows
# 启动应用
./mvnw spring-boot:run # Linux/Mac
mvnw.cmd spring-boot:run # Windows
# 或者打包后运行
./mvnw clean package -DskipTests
java -jar target/ai-code-mother-0.0.1-SNAPSHOT.jar
```
### 4. 前端配置和启动
```bash
# 进入前端目录
cd ai-code-mother-frontend
```
#### 4.1 环境变量配置
创建环境配置文件:
**开发环境配置 (.env.development)**
```bash
# API基础URL
VITE_API_BASE_URL=http://localhost:8123/api
# 应用标题
VITE_APP_TITLE=AI Code Mother
# 环境标识
VITE_ENV=development
# 是否启用调试模式
VITE_DEBUG=true
# API超时时间(毫秒)
VITE_API_TIMEOUT=60000
```
**生产环境配置 (.env.production)**
```bash
# API基础URL(修改为你的生产环境地址)
VITE_API_BASE_URL=https://your-domain.com/api
# 应用标题
VITE_APP_TITLE=AI Code Mother
# 环境标识
VITE_ENV=production
# 是否启用调试模式
VITE_DEBUG=false
# API超时时间(毫秒)
VITE_API_TIMEOUT=60000
```
#### 4.2 安装依赖和启动
```bash
# 安装依赖
npm install
# 或使用yarn
yarn install
# 或使用pnpm(推荐,更快)
pnpm install
# 生成API客户端(需要后端服务先启动)
npm run openapi2ts
# 启动开发服务器
npm run dev
# 构建生产版本
npm run build
# 预览生产构建
npm run preview
# 类型检查
npm run type-check
# 代码检查
npm run lint
# 代码格式化
npm run format
```
#### 4.3 常见配置说明
**package.json 关键配置**
```json
{
"scripts": {
"dev": "vite", // 启动开发服务器
"build": "vite build", // 构建生产版本
"preview": "vite preview", // 预览生产构建
"openapi2ts": "openapi-typescript http://localhost:8123/api/v3/api-docs -o src/api/openapi.d.ts", // 生成API类型
"type-check": "vue-tsc --noEmit", // TypeScript类型检查
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", // 代码检查
"format": "prettier --write src/" // 代码格式化
}
}
```
**vite.config.ts 关键配置**
```typescript
export default defineConfig({
server: {
port: 5173, // 开发服务器端口
proxy: {
'/api': { // API代理配置
target: 'http://localhost:8123',
changeOrigin: true,
// rewrite: (path) => path.replace(/^\/api/, '')
}
}
},
build: {
outDir: 'dist', // 构建输出目录
sourcemap: false, // 生产环境不生成sourcemap
minify: 'terser', // 使用terser压缩
chunkSizeWarningLimit: 1500 // chunk大小警告阈值(KB)
}
})
```
### 5. 访问应用
#### 5.1 应用访问地址
| 服务 | 地址 | 说明 |
|------|------|------|
| **前端应用** | http://localhost:5173 | Vue 3 用户界面 |
| **后端API** | http://localhost:8123/api | REST API 服务 |
| **API文档** | http://localhost:8123/api/doc.html | Knife4j 交互式 API 文档 |
| **OpenAPI规范** | http://localhost:8123/api/v3/api-docs | OpenAPI 3.0 JSON 规范 |
| **健康检查** | http://localhost:8123/api/health | 应用健康状态 |
| **Prometheus指标** | http://localhost:8123/api/actuator/prometheus | 监控指标端点 |
| **Actuator端点** | http://localhost:8123/api/actuator | Spring Boot Actuator |
#### 5.2 首次使用步骤
1. **访问前端应用**: 打开浏览器访问 http://localhost:5173
2. **注册账户**:
- 点击"注册"按钮
- 输入邮箱地址
- 点击"发送验证码"(需要配置好邮件服务)
- 输入收到的6位验证码
- 设置密码和用户名
- 可选:输入邀请码获得额外积分
- 点击"注册"完成账户创建
3. **登录系统**:
- 输入注册的邮箱
- 点击"发送验证码"
- 输入验证码登录
4. **创建第一个应用**:
- 进入"应用管理"页面
- 点击"创建应用"
- 填写应用名称和描述
- 选择生成类型(推荐:Vue 3 项目)
- 点击创建
5. **生成代码**:
- 在应用列表中点击"生成代码"
- 输入详细的需求描述(参考推荐测试提示词)
- 选择合适的 AI 模型
- 等待 AI 生成代码
- 查看生成结果
6. **部署项目**:
- 点击"部署"按钮
- 等待项目构建和上传
- 获取在线预览链接
#### 5.3 配置验证检查
启动应用后,建议进行以下验证:
```bash
# 1. 检查后端健康状态
curl http://localhost:8123/api/health
# 预期输出: {"status":"UP"}
# 2. 检查数据库连接
# 访问 http://localhost:8123/api/actuator/health
# 查看 db.status 应为 UP
# 3. 检查Redis连接
# 查看 redis.status 应为 UP
# 4. 测试前端API连接
# 打开浏览器访问 http://localhost:5173
# 打开开发者工具查看Network请求是否正常
# 5. 查看API文档
# 访问 http://localhost:8123/api/doc.html
# 应能看到完整的API接口列表
```
#### 5.4 常见启动问题排查
**问题1: 后端启动失败 - 数据库连接错误**
```bash
# 检查MySQL服务状态
# Windows
net start mysql
# Linux/Mac
sudo systemctl status mysql
# 或
brew services list | grep mysql
# 验证数据库存在
mysql -u root -p
SHOW DATABASES;
# 应能看到 ai_code_mother
# 检查用户名密码是否正确
mysql -u your_username -p your_password ai_code_mother
```
**问题2: 后端启动失败 - Redis连接错误**
```bash
# 检查Redis服务状态
# Windows
redis-server
# Linux
sudo systemctl status redis
# 或
ps aux | grep redis
# Mac
brew services list | grep redis
# 测试Redis连接
redis-cli ping
# 应返回 PONG
```
**问题3: 前端API调用失败**
```bash
# 检查后端是否启动
curl http://localhost:8123/api/health
# 检查端口是否被占用
# Windows
netstat -ano | findstr 8123
# Linux/Mac
lsof -i :8123
# 清除浏览器缓存并重试
# Chrome: Ctrl+Shift+Delete
```
**问题4: AI模型调用失败**
```bash
# 检查API密钥配置
# 查看 application.yml 中的 langchain4j.open-ai.*.api-key
# 测试API连接
curl -X POST https://204992.xyz/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk-your-api-key-here" \
-d '{
"model": "gpt-5-low",
"messages": [{"role": "user", "content": "Hello"}]
}'
# 检查后端日志
tail -f logs/application.log | grep -i "error"
```
**问题5: 邮件验证码发送失败**
```bash
# 检查邮件配置
# 查看 application.yml 中的 spring.mail 配置
# 常见问题:
# 1. QQ邮箱需要使用授权码而非密码
# 2. Gmail需要开启"允许不够安全的应用"
# 3. 163邮箱需要开启SMTP服务
# 查看后端日志确认错误详情
tail -f logs/application.log | grep -i "mail"
```
#### 5.5 开发环境推荐配置
**最小配置要求**:
- CPU: 双核 2.0 GHz+
- 内存: 4 GB RAM
- 磁盘: 10 GB 可用空间
**推荐配置**:
- CPU: 四核 2.5 GHz+
- 内存: 8 GB RAM
- 磁盘: 20 GB 可用空间(SSD 更佳)
**网络要求**:
- 可访问 OpenAI 兼容 API(或配置代理)
- 可访问腾讯云 COS(如需文件存储功能)
- 可访问邮件 SMTP 服务器
## 📖 用户指南
### 注册与登录
**1. 邮箱注册**
1. 访问注册页面
2. 输入邮箱地址
3. 点击"发送验证码",系统将发送6位数字验证码到邮箱
4. 输入验证码、设置密码、填写用户名
5. 可选:输入邀请码获得额外积分奖励
6. 点击注册,系统自动创建账户并赠送初始积分
**2. 邮箱登录**
1. 访问登录页面
2. 输入注册的邮箱地址
3. 点击"发送验证码"
4. 输入收到的验证码
5. 点击登录即可
**3. 会话管理**
- 登录状态保持30天
- 可随时退出登录
- 多设备登录互不影响
### AI代码生成使用
**1. 创建应用**
1. 登录后进入"应用管理"页面
2. 点击"创建应用"按钮
3. 填写应用信息:
- 应用名称
- 应用描述
- 生成类型:Vue 3 项目(当前版本专注于 Vue 3 项目生成)
4. 点击创建
**2. 生成代码**
1. 在应用列表中找到创建的应用
2. 点击"生成代码"按钮
3. 选择合适的 AI 模型(根据项目复杂度选择)
4. 输入详细的需求描述(可参考推荐测试提示词)
5. 系统实时显示AI生成过程:
- AI思考过程
- 工具调用信息
- 代码生成进度
- 文件列表
6. 生成完成后可以:
- 在线预览代码
- 下载完整项目压缩包
- 部署到云端(免费)
**3. 代码预览与下载**
- 支持在线查看生成的代码
- 代码高亮显示
- 支持复制代码
- 一键下载完整项目压缩包
**4. 项目部署**(完全免费)
1. 生成完成后点击"部署"按钮
2. 系统自动将项目构建并上传到腾讯云COS
3. 生成唯一的在线预览链接
4. 通过链接即可访问部署的项目
5. 支持分享链接给他人访问
6. **注意**:项目部署不消耗积分,完全免费
### 版本管理使用
**1. 查看版本历史**
1. 进入应用详情页面
2. 点击"版本历史"标签
3. 查看所有历史版本列表,包括:
- 版本号
- 创建时间
- 版本说明
- 操作人
**2. 版本回滚**
1. 在版本历史列表中找到目标版本
2. 点击"回滚"按钮
3. 确认回滚操作
4. 系统自动恢复应用到该版本状态
5. 回滚操作会创建新的版本记录
### 积分系统使用
**1. 查看积分余额**
- 登录后在用户中心查看当前积分
- 累计积分:历史获得的总积分
- 可用积分:当前可使用的积分
**2. 获取积分**
- **注册奖励**: 新用户注册赠送100积分
- **邀请奖励**: 成功邀请好友注册,双方各得50积分
- **每日签到**: 每日首次登录获得10积分(可扩展)
**3. 消耗积分**
- **AI 代码生成**(唯一消耗场景):
- 根据选择的 AI 模型和实际消耗的 Token 数量计费
- 不同模型有不同的积分消耗率(每千 Token 消耗的积分数)
- 模型等级分类:
- **基础编码模型**(如 gpt-5-low): 约 1-3 积分/千Token
- **标准编码模型**(如 qwen-turbo): 约 3-5 积分/千Token
- **高级编码模型**(如 gpt-5-codex-medium): 约 5-10 积分/千Token
- **基础推理模型**: 约 10-15 积分/千Token
- **高级推理模型**: 约 15-30 积分/千Token
- 质量系数会影响最终积分消耗(1.0-3.5倍)
- 典型 Vue 3 项目生成消耗: 50-200 积分(取决于项目复杂度和模型选择)
**💡 积分优化建议**:
- 简单项目选择基础编码模型,节省积分
- 复杂项目选择高级推理模型,保证质量
- 使用两阶段生成流程,避免无效生成浪费积分
- 项目部署和代码下载不消耗积分,完全免费
**4. 积分明细**
1. 进入"积分中心"
2. 查看积分获取和消耗记录
3. 每条记录包含:
- 积分类型(获取/消耗)
- 积分数量
- 操作说明
- 操作时间
**5. 积分有效期**
- 积分有效期为180天
- 即将过期的积分会提前通知
- 过期积分自动扣除
### 邀请好友获得奖励
**1. 获取邀请码**
1. 登录后进入"邀请好友"
2. 系统自动为每个用户生成唯一邀请码
3. 复制邀请码或邀请链接
**2. 分享邀请**
- **方式一**: 分享邀请码,好友注册时输入
- **方式二**: 分享邀请链接,好友点击直接跳转注册页
**3. 获得奖励**
- 好友通过邀请码/链接完成注册
- 系统自动检测邀请关系
- 邀请人和被邀请人各获得50积分
- 奖励在好友注册后24小时内自动发放
**4. 邀请统计**
1. 进入"邀请好友"
2. 查看邀请数据:
- 邀请人数
- 成功注册人数
- 获得积分总额
- 邀请排行榜
**5. 防刷规则**
- 同一IP短时间内多次注册会被限制
- 异常邀请行为需人工审核
- 作弊行为将扣除全部奖励积分
## 💻 开发指南
### 后端开发
**编译和构建**
```bash
# 编译项目
./mvnw clean compile
# 打包应用
./mvnw clean package
# 跳过测试打包
./mvnw clean package -DskipTests
```
**运行测试**
```bash
# 运行所有测试
./mvnw test
# 运行特定测试类
./mvnw test -Dtest=UserServiceTest
# 运行特定测试方法
./mvnw test -Dtest=UserServiceTest#testRegister
```
**热部署**
- 项目使用Spring Boot DevTools支持热部署
- 修改代码后自动重启应用
- 静态资源修改无需重启
### 前端开发
**开发命令**
```bash
# 启动开发服务器
npm run dev
# 类型检查
npm run type-check
# 代码检查和自动修复
npm run lint
# 代码格式化
npm run format
# 构建生产版本
npm run build
# 预览生产构建
npm run preview
```
**API客户端生成**
```bash
# 从后端OpenAPI规范生成TypeScript类型
npm run openapi2ts
# 注意: 需要后端服务先启动
```
**组件开发规范**
- 使用Composition API
- 使用`