# AI 辅助开发规范 (AI Development Rules)

**请在每次开启新对话或进行功能开发时，首先读取并遵循本文件中的规则。**

## 1. 核心原则：数据库变更必须代码化 (Database Schema & Data Migration)

本项目严格采用 **版本化迁移 (Schema & Data Migration)** 管理数据库结构及关键初始化数据，**严禁**依赖 ORM 的自动同步 (AutoMigrate) 或手动修改数据库。

### ⚠️ 数据库变更流程 (必须严格执行)

当你的开发任务涉及数据库修改（如：新增表、字段、索引）或**关键初始化数据变更**（如：预置角色、管理员账号）时，必须按以下步骤操作：

1.  **检查当前版本**：查看 `backend/db/migrations/` 目录下现有的最大序号文件 (e.g., `000001_init.up.sql`)。
2.  **创建迁移文件**：
    *   **路径**：`backend/db/migrations/`
    *   **命名格式**：`{6位数字序号}_{简短描述}.up.sql`
    *   **示例**：如果当前是 `000001`，且需要添加设备维护时间，则新建 `000002_add_maintenance_time.up.sql`。
3.  **编写 SQL**：在新建的文件中编写标准的 PostgreSQL DDL 语句 (CREATE TABLE, ALTER TABLE 等)。
4.  **同步 Go 模型**：修改 `backend/models` 下对应的 struct 定义，确保 `gorm` 标签与数据库结构一致。

### ❌ 禁止行为
*   **禁止** 仅修改 Go Struct 而不创建 SQL 迁移文件。
*   **禁止** 假设 `AutoMigrate` 会自动处理字段变更（生产环境不使用 AutoMigrate）。
*   **禁止** 编写破坏性 SQL（如 DROP COLUMN）除非用户明确确认。

---

## 2. 目录结构规范 (Directory Structure)

保持当前的运维目录结构，所有新增配置或脚本应放入对应目录：

*   `backend/` : Golang 后端代码
*   `frontend/` : Vue 前端代码
*   `configs/` : 配置文件挂载源 (Nginx, EMQX 等)
*   `data/` : **(忽略)** 本地数据持久化目录，不要提交到 git
*   `scripts/` : 运维脚本 (备份, 恢复等)
*   `docker-compose.yaml` : 服务编排

## 3. 编码习惯 (Coding Standards)

*   **语言**：与用户交流使用 **中文**。
*   **代码注释**：关键逻辑必须添加注释。
*   **配置文件**：涉及敏感信息（密码、密钥）必须通过环境变量传入，参考 `.env` 和 `docker-compose.yaml`。

---

## 4. 常用命令参考

*   **添加 Go 依赖**：修改代码后运行 `go mod tidy`。
*   **启动服务**：`docker-compose up -d --build` (会自动执行新的 SQL 迁移)。

