# han_coder **Repository Path**: hanser_wei_admin/han_coder ## Basic Information - **Project Name**: han_coder - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-05 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Han Coder - AI 代码生成平台 ## 项目简介 Han Coder 是一个基于 AI 的智能代码生成平台,支持多种代码生成模式,包括 HTML 单页面、多文件静态页面和完整的 Vue3 项目。平台集成了多种 AI 模型,提供流式代码生成、项目管理、部署等功能。 ## 核心功能 ### 🤖 AI 代码生成 - **智能路由**: 根据用户需求自动选择最适合的代码生成类型 - **多种生成模式**: - HTML 模式: 生成单页面 HTML 文件,包含内联 CSS 和 JS - 多文件模式: 生成分离的 HTML、CSS、JS 文件 - Vue 项目模式: 生成完整的 Vue3 + Vite 项目 - **流式输出**: 支持 Server-Sent Events (SSE) 实时流式代码生成 - **对话记忆**: 基于 Redis 的对话历史管理,支持上下文理解 ### 📱 应用管理 - 创建、编辑、删除应用 - 应用分类和优先级管理 - 代码下载和部署功能 - 用户权限控制 ### 👥 用户系统 - 用户注册、登录、登出 - 角色管理(用户/管理员) - 会话管理(基于 Redis) ### 🔧 开发工具 - 代码质量检查 - 项目构建和部署 - 静态资源管理 - API 文档(Knife4j) ## 技术栈 ### 后端技术 - **框架**: Spring Boot 3.5.4 - **Java 版本**: Java 21 - **数据库**: MySQL 8.0 - **ORM**: MyBatis-Flex 1.11.1 - **缓存**: Redis + Redisson 3.50.0 - **连接池**: HikariCP 4.0.3 ### AI 集成 - **LangChain4j**: 1.1.0 (AI 服务框架) - **LangGraph4j**: 1.6.0-rc2 (工作流编排) - **AI 模型**: - DeepSeek Chat (代码生成) - 通义千问 (推理任务) - 阿里云 DashScope SDK 2.21.1 ### 其他依赖 - **工具库**: Hutool 5.8.38 - **文档**: Knife4j 4.4.0 - **监控**: Spring Boot Actuator + Micrometer - **对象存储**: 腾讯云 COS - **网页截图**: Selenium 4.33.0 - **图片搜索**: Pexels API ## 数据库设计 ### 用户表 (user) ```sql CREATE TABLE user ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '用户ID', userAccount VARCHAR(256) NOT NULL COMMENT '账号', userPassword VARCHAR(512) NOT NULL COMMENT '密码', userName VARCHAR(256) COMMENT '用户昵称', userAvatar VARCHAR(1024) COMMENT '用户头像', userProfile VARCHAR(512) COMMENT '用户简介', userRole VARCHAR(256) DEFAULT 'user' NOT NULL COMMENT '用户角色:user/admin', editTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '编辑时间', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', UNIQUE KEY uk_userAccount (userAccount), INDEX idx_userName (userName) ) COMMENT '用户表'; ``` ### 应用表 (app) ```sql CREATE TABLE app ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '应用ID', appName VARCHAR(256) COMMENT '应用名称', cover VARCHAR(512) COMMENT '应用封面', initPrompt TEXT COMMENT '应用初始化的 prompt', codeGenType VARCHAR(64) COMMENT '代码生成类型(枚举)', deployKey VARCHAR(64) COMMENT '部署标识', deployedTime DATETIME COMMENT '部署时间', priority INT DEFAULT 0 NOT NULL COMMENT '优先级', userId BIGINT NOT NULL COMMENT '创建用户ID', editTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '编辑时间', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', UNIQUE KEY uk_deployKey (deployKey), INDEX idx_appName (appName), INDEX idx_userId (userId) ) COMMENT '应用表'; ``` ### 对话历史表 (chat_history) ```sql CREATE TABLE chat_history ( id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '对话ID', message TEXT NOT NULL COMMENT '消息内容', messageType VARCHAR(32) NOT NULL COMMENT '消息类型:user/ai', appId BIGINT NOT NULL COMMENT '应用ID', userId BIGINT NOT NULL COMMENT '用户ID', createTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL COMMENT '创建时间', updateTime DATETIME DEFAULT CURRENT_TIMESTAMP NOT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', isDelete TINYINT DEFAULT 0 NOT NULL COMMENT '是否删除', INDEX idx_appId (appId), INDEX idx_createTime (createTime), INDEX idx_appId_createTime (appId, createTime) ) COMMENT '对话历史表'; ``` ## 项目结构 ``` src/main/java/com/hanser/hancoder/ ├── ai/ # AI 服务层 │ ├── AiCodeGeneratorService.java # AI 代码生成服务接口 │ ├── AiCodeGeneratorServiceFactory.java # AI 服务工厂 │ ├── AiCodeGenTypeRoutingService.java # 代码生成类型路由服务 │ ├── guardrail/ # AI 安全护栏 │ ├── model/ # AI 模型定义 │ └── tools/ # AI 工具集 ├── annotation/ # 自定义注解 ├── aop/ # 面向切面编程 ├── common/ # 通用组件 ├── config/ # 配置类 ├── constant/ # 常量定义 ├── controller/ # 控制器层 │ ├── AppController.java # 应用管理控制器 │ ├── UserController.java # 用户管理控制器 │ ├── ChatHistoryController.java # 对话历史控制器 │ ├── WorkflowSseController.java # 工作流 SSE 控制器 │ └── StaticResourceController.java # 静态资源控制器 ├── core/ # 核心业务逻辑 │ ├── AiCodeGeneratorFacade.java # AI 代码生成外观 │ ├── CodeFileSaver.java # 代码文件保存器 │ ├── CodeParser.java # 代码解析器 │ ├── builder/ # 构建器模式 │ ├── handler/ # 处理器 │ ├── parser/ # 解析器 │ └── saver/ # 保存器 ├── exception/ # 异常处理 ├── generator/ # 代码生成器 ├── langgraph4j/ # 工作流引擎 │ ├── CodeGenWorkflow.java # 代码生成工作流 │ ├── CodeGenConcurrentWorkflow.java # 并发代码生成工作流 │ ├── CodeGenSubgraphWorkflow.java # 子图工作流 │ ├── ai/ # AI 节点 │ ├── model/ # 工作流模型 │ ├── node/ # 工作流节点 │ ├── state/ # 状态管理 │ └── tool/ # 工具集成 ├── manager/ # 管理器 ├── mapper/ # 数据访问层 ├── model/ # 数据模型 │ ├── dto/ # 数据传输对象 │ ├── entity/ # 实体类 │ ├── enums/ # 枚举类 │ └── vo/ # 视图对象 ├── ratelimiter/ # 限流器 ├── service/ # 服务层 └── utils/ # 工具类 ``` ## 核心特性 ### 1. 智能代码生成类型路由 系统会根据用户的需求描述,智能选择最适合的代码生成类型: - **HTML 模式**: 适合简单的静态页面,生成单个 HTML 文件 - **多文件模式**: 适合需要分离样式的静态页面 - **Vue 项目模式**: 适合复杂的现代化前端项目 ### 2. 流式代码生成 支持 Server-Sent Events (SSE) 实时流式输出,用户可以实时看到代码生成过程。 ### 3. 对话记忆管理 基于 Redis 的对话历史管理,支持上下文理解和多轮对话。 ### 4. 工作流编排 使用 LangGraph4j 实现复杂的 AI 工作流,支持: - 代码生成 - 质量检查 - 错误修复 - 并发处理 ### 5. 多种 AI 模型集成 - **DeepSeek Chat**: 用于代码生成和简单分类任务 - **通义千问**: 用于复杂的推理任务 - **智能路由**: 根据任务类型自动选择合适的模型 ## API 接口 ### 用户管理 - `POST /api/user/register` - 用户注册 - `POST /api/user/login` - 用户登录 - `GET /api/user/get/login` - 获取当前登录用户 - `POST /api/user/logout` - 用户登出 ### 应用管理 - `POST /api/app/add` - 创建应用 - `GET /api/app/get/vo` - 获取应用详情 - `POST /api/app/update` - 更新应用 - `POST /api/app/delete` - 删除应用 - `POST /api/app/my/list/page/vo` - 分页获取我的应用 - `POST /api/app/good/list/page/vo` - 分页获取精选应用 ### 代码生成 - `GET /api/app/chat/gen/code` - 流式代码生成 (SSE) - `GET /api/app/download/{appId}` - 下载应用代码 - `POST /api/app/deploy` - 部署应用 ### 对话历史 - `POST /api/chatHistory/add` - 添加对话历史 - `GET /api/chatHistory/list/page/vo` - 分页获取对话历史 ## 配置说明 ### 数据库配置 ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/han_coder username: root password: mysql ``` ### Redis 配置 ```yaml spring: data: redis: host: 114.66.59.209 port: 6379 password: redis ttl: 3600 ``` ### AI 模型配置 ```yaml langchain4j: open-ai: reasoning-streaming-chat-model: base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 api-key: your-api-key model-name: qwen-flash routing-chat-model: base-url: https://api.deepseek.com api-key: your-api-key model-name: deepseek-chat ``` ## 部署说明 ### 环境要求 - Java 21+ - MySQL 8.0+ - Redis 6.0+ - Maven 3.6+ ### 启动步骤 1. 克隆项目到本地 2. 导入数据库脚本 `sql/han_coder.sql` 3. 配置 `application-local.yml` 中的数据库和 Redis 连接信息 4. 配置 AI 模型的 API Key 5. 运行 `mvn spring-boot:run` 启动项目 ### 访问地址 - 应用主页: http://localhost:8123/api - API 文档: http://localhost:8123/api/doc.html - 健康检查: http://localhost:8123/api/health ## 开发指南 ### 添加新的代码生成类型 1. 在 `CodeGenTypeEnum` 中添加新的枚举值 2. 在 `AiCodeGeneratorService` 中添加对应的生成方法 3. 在 `AiCodeGeneratorServiceFactory` 中配置对应的 AI 服务 4. 在 `AiCodeGeneratorFacade` 中添加处理逻辑 5. 创建对应的 Prompt 模板文件 ### 自定义 AI 工具 1. 在 `ai/tools` 包下创建工具类 2. 使用 `@Tool` 注解标记工具方法 3. 在 `ToolManager` 中注册工具 4. 在 AI 服务中启用工具调用 ## 许可证 本项目采用 MIT 许可证,详情请参见 LICENSE 文件。 ## 贡献指南 欢迎提交 Issue 和 Pull Request 来帮助改进项目。 ## 联系方式 如有问题或建议,请通过以下方式联系: - 项目 Issues: [GitHub Issues](https://github.com/your-repo/issues) - 邮箱: hanserwei@qq.com --- **注意**: 本项目仅供学习和研究使用,请遵守相关法律法规和 AI 服务提供商的使用条款。