# ai-code **Repository Path**: YS_Warehouse/ai-code ## Basic Information - **Project Name**: ai-code - **Description**: AI Code Mother 是一个前后端分离的 AI 辅助编码与应用生成平台。后端基于 Spring Boot、LangChain4j 与可插拔的大模型服务(DeepSeek 等),提供应用管理、对话记录、代码生成、静态资源预览与部署能力;前端基于 Vue 3 + Vite + Ant Design Vue,提供应用创建、编辑、聊天使用、用户与管理员后台等界面。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-10-08 - **Last Updated**: 2025-11-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目简介 AI Code Mother 是一个前后端分离的 AI 辅助编码与应用生成平台。后端基于 Spring Boot、LangChain4j 与可插拔的大模型服务(DeepSeek 等),提供应用管理、对话记录、代码生成、静态资源预览与部署能力;前端基于 Vue 3 + Vite + Ant Design Vue,提供应用创建、编辑、聊天使用、用户与管理员后台等界面。 --- ## 功能概览 - 应用管理:创建、编辑、查看应用;支持可视化编辑器能力(`src/frontend/src/utils/visualEditor.ts`)。 - 对话能力:与指定应用的智能体进行对话,支持对话历史管理。 - 用户中心与权限:登录态鉴权、普通用户与管理员角色区分;路由守卫控制访问权限。 - 代码生成与预览:后端生成代码与静态资源,提供静态资源预览与部署地址。 - 文档与 API:基于 springdoc-openapi 与 knife4j 提供在线接口文档。 --- ## 技术栈 - 后端: - Spring Boot 3、Spring MVC、MySQL、Redis、Spring Session - LangChain4j(对接大模型,示例配置为 DeepSeek) - springdoc-openapi、knife4j(接口文档) - 前端: - Vue 3、Vite 7、TypeScript、Pinia、Vue Router、Ant Design Vue 4 - Markdown 渲染与高亮(markdown-it / marked / highlight.js) --- ## 目录结构(关键) ``` ai-code-mother/ ├─ src/main/java/ # 后端 Java 源码 ├─ src/main/resources/ │ ├─ application.yml # 后端主配置(激活 local) │ ├─ application-local.yml # 本地环境配置(可覆盖) │ ├─ mapper/ # MyBatis XML(如使用) │ └─ prompt/ # 代码生成与路由相关提示词 ├─ frontend/ # 前端工程(Vue 3 + Vite) │ ├─ src/ # 前端源代码 │ ├─ package.json # 前端脚本与依赖 │ └─ vite.config.ts ├─ sql/ # 建表与升级 SQL │ ├─ create_table.sql │ └─ update_add_tags.sql ├─ tmp/ # 代码生成/部署临时产物与预览 ├─ target/ # 后端构建输出 └─ pom.xml # Maven 配置 ``` --- ## 环境准备 - 操作系统:macOS / Linux / Windows - 必备: - JDK 17+ - Maven 3.9+ - Node.js 18+(建议 18/20 LTS)与 npm - MySQL 8+、Redis 6+ - 可选:COS(如腾讯云对象存储,用于静态资源托管,亦可先留空) --- ## 后端启动 1) 数据库与 Redis 准备: - 创建数据库:`ai_code_mother` - 执行初始化 SQL:`sql/create_table.sql` - 确保 Redis 正常运行 2) 配置后端 `src/main/resources/application.yml`(或 `application-local.yml` 覆盖): 关键项(示例,按需修改): ```yaml spring: profiles: active: local datasource: url: jdbc:mysql://localhost:3306/ai_code_mother username: root password: 123456 data: redis: host: localhost port: 6379 server: port: 8123 servlet: context-path: /api # COS(对象存储,可选) cos: client: host: your-custom-domain.com secretId: your-secret-id secretKey: your-secret-key region: ap-shanghai bucket: your-bucket-name # LLM(DeepSeek 示例,使用 LangChain4j) langchain4j: open-ai: reasoning-streaming-chat-model: base-url: https://api.deepseek.com api-key: model-name: deepseek-reasoner routing-chat-model: base-url: https://api.deepseek.com api-key: model-name: deepseek-chat ``` 3) 本地运行: ```bash mvn spring-boot:run ``` 或打包运行: ```bash mvn clean package -DskipTests java -jar target/ai-code-mother-0.0.1-SNAPSHOT.jar ``` 服务默认启动在 `http://localhost:8123/api`。 --- ## 前端启动 1) 安装依赖: ```bash cd frontend npm install ``` 2) 配置环境变量(可选): 前端从 `src/config/env.ts` 读取: - `VITE_API_BASE_URL`:后端 API 根地址,默认 `http://localhost:8123/api` - `VITE_DEPLOY_DOMAIN`:应用部署域名(用于拼接在线预览链接),默认 `http://localhost` 你可以在 `frontend` 目录下创建 `.env.local`: ```bash VITE_API_BASE_URL=http://localhost:8123/api VITE_DEPLOY_DOMAIN=http://localhost ``` 3) 启动开发服务: ```bash npm run dev ``` 默认访问地址形如 `http://localhost:5173/`。 4) 构建生产包: ```bash npm run build ``` --- ## 路由与权限说明(前端) 路由定义见 `frontend/src/router/index.ts`,主要页面: - `/` 主页 - `/docs` 使用文档 - `/user/center` 个人中心(需登录) - `/admin/userManage` 用户管理(需管理员) - `/admin/appManage` 应用管理(需管理员) - `/admin/chatHistoryManage` 对话管理(需管理员) - `/app/detail/:id` 应用详情 - `/app/edit/:id` 编辑应用(需登录) - `/app/chat/:id` 应用对话(需登录) 全局路由守卫会在进入受限页面前检查登录与权限(Pinia 存储用户信息)。 --- ## 静态资源与预览 - 前端静态资源基础地址:`STATIC_BASE_URL = {API_BASE_URL}/static` - 预览地址生成逻辑参考:`frontend/src/config/env.ts` - 普通静态产物:`{STATIC_BASE_URL}/{codeGenType}_{appId}/` - Vue 项目:`{STATIC_BASE_URL}/{codeGenType}_{appId}/dist/index.html` - 部署地址拼接(用于在线访问已部署应用):`{DEPLOY_DOMAIN}/{deployKey}` 后端会在 `tmp/` 目录下生成与管理代码与静态资源,访问接口由后端统一提供。 --- ## API 文档 - 已启用 `springdoc-openapi` 与 `knife4j`,默认语言为中文。 - 服务启动后,常见访问路径(以本地为例): - OpenAPI JSON:`http://localhost:8123/api/v3/api-docs` - Knife4j UI(如已开启):通常为 `http://localhost:8123/api/doc.html` 或根据配置暴露的路径。 具体扫描包配置见 `application.yml` 中 `springdoc.group-configs`。 --- ## 常用脚本 - 后端 - 开发运行:`mvn spring-boot:run` - 打包:`mvn clean package -DskipTests` - 前端(在 `frontend/` 目录下) - 开发:`npm run dev` - 构建:`npm run build` - 预览:`npm run preview` - Lint:`npm run lint` - 类型检查:`npm run type-check` - 生成 OpenAPI 类型:`npm run openapi2ts`(如配置了后端 OpenAPI 地址) --- ## 部署建议 - 后端: - 以可执行 JAR 或容器镜像方式部署;设置 JVM 参数与连接池大小; - 在生产环境中配置外部化的 `application-prod.yml`,并设置 `spring.profiles.active=prod`; - 配置安全的数据库与 Redis 访问凭据,限制网络访问边界。 - 前端: - 使用 `npm run build` 生成静态资源后,托管在 Nginx / CDN; - 如需与后端同域,可通过 Nginx 反向代理将 `/api` 转发至后端 `8123` 端口; - 将 `VITE_API_BASE_URL` 指向线上后端地址,将 `VITE_DEPLOY_DOMAIN` 配置为正式域名。 --- ## 故障排查 - 无法登录或权限异常:确认前端 `VITE_API_BASE_URL` 指向正确,后端 Session 使用 Redis 存储是否正常; - 模型无法响应:检查 `langchain4j` 的 base-url、api-key 与模型名字;确保外网访问权限; - 静态资源预览 404:检查后端是否已生成对应 `{codeGenType}_{appId}` 目录与文件,且访问路径是否带上 `dist/index.html`(Vue 项目)。 --- ## 许可证 本项目未显式声明开源许可证,默认保留所有权利。若需二次开发或商用,请与作者沟通确认。