# Fauto Platform - AI Context & Developer Guide > **用途**:本文档旨在为后续接入的 AI 助手或开发者提供项目的核心上下文、架构设计与开发准则。 > **更新时间**:2026-01-27 ## 1. 项目愿景 (Vision) **Fauto** 是一个**完全不同**的低代码 + AI 平台。 它的核心理念是:**拒绝黑盒,源码即真理 (Source is Truth)**。 与传统低代码平台(生成 JSON 描述或私有 DSL,运行时解释)不同,Fauto 致力于: * **源码级生成**:所有配置直接生成可维护的 Vue3 和 Java 源码。 * **非入侵式**:生成的代码遵循标准框架规范(RuoYi-Vue3),不依赖平台运行时黑盒。 * **双向同步**:支持可视化拖拽修改,也支持开发者手动修改源码,两者互不冲突(通过 AST 解析)。 * **极速热更**:利用 Vue HMR 和 Java HotswapAgent 实现“改码即生效”,无需重启服务。 * **AI 协同**:内置 AI 终端,人类与 AI 在同一个代码库上通过自然语言和可视化工具共同协作。 ## 2. 核心组件与技术栈 (Core Components) ### 2.1 底座 (Foundation) * **框架**:基于 [RuoYi-Vue3](https://gitee.com/y_project/RuoYi-Vue) 进行改造。 * **后端**:Spring Boot, MyBatis Plus。 * **前端**:Vue3, Vite, Element Plus。 ### 2.2 关键子系统 (Key Subsystems) 1. **前端可视化编辑器 (fauto-design)** * *状态*:已验证 Demo (见 `fauto-design/`)。 * *原理*:基于 AST (Abstract Syntax Tree) 解析 `.vue` 文件,实现源码级拖拽和属性编辑。 * *服务*:需要一个 Node.js 伴生服务 (`vue-template-service`) 来处理文件读写和 AST 转换。 2. **后端动态引擎 (java-g)** * *状态*:已验证 Demo (见 `java-g/`)。 * *原理*: * **MyBatisGeneratorUtils**:基于对象模型生成复杂的 MyBatis XML 和 ResultMap,支持无限层级关联查询。 * **JavaParser**:用于分析和修改现有的 Java Controller/Service/Entity,实现增量更新(保留用户手写代码)。 3. **热更新环境 (Hot Swap Env)** * *Java*:集成 **DCEVM** + **HotswapAgent**,支持 Class 重定义、资源文件热更。 * *Vue*:Vite HMR。 4. **AI 协作终端** * *实现*:Web 端集成 xterm.js,后端集成 pty4j。 * *功能*:允许在浏览器中直接运行 Trae CLI / Qoder CLI,进行自然语言编程。 ## 3. 业务流程 (Workflow) 1. **对象建模**:用户在平台定义数据对象(字段、类型、关联关系)。 2. **页面设计**: * 平台根据对象模型生成初始 Vue 页面源码。 * 用户使用可视化编辑器拖拽组件(修改源码)。 3. **后端生成**: * 平台根据对象模型生成/更新 Entity, Mapper XML, Service, Controller。 * 使用 JavaParser 确保不覆盖用户自定义逻辑。 4. **热重载**: * 修改的文件自动触发 Hotswap,用户即刻在预览界面看到效果。 5. **二次开发**: * 用户或 AI 可以直接在 IDE 或 Web 终端修改生成的源码,平台通过 AST 重新解析以保持同步。 ## 4. 项目结构规划 (Project Structure) ```text D:\workspace\Fauto\ ├── fauto-platform/ # [平台本身] (基于 RuoYi-Vue3 改造) │ ├── fauto-generator/ # 核心:代码生成与 AST 引擎 │ ├── fauto-manager/ # 核心:项目进程管理、环境控制 │ └── ... ├── workspace/ # [用户项目区] │ ├── project-A/ # 用户生成的独立项目 │ └── project-B/ └── tools/ # [工具链] (HotswapAgent, JDK 等) ``` ## 5. 开发准则 (Guidelines) * **优先修改源码**:所有功能的实现最终都应体现为对目标项目源码的修改,而不是数据库里的配置记录。 * **保持独立性**:生成的项目应当脱离平台也能独立运行。 * **AST 优于 模板**:为了支持“往返工程”(Round-trip engineering),尽量使用 AST 解析修改,避免使用一次性模板覆盖。