# 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 解析修改，避免使用一次性模板覆盖。
