Files
aiot-platform-cloud/AGENTS.md

180 lines
6.7 KiB
Markdown
Raw Normal View History

# AGENTS.md — IoT v2.0 升级(后端)
> 本文档给所有 AI AgentClaude Code / Cursor / Windsurf / Codex CLI / Aider 等)看
> 遵循 [agents.md](https://agents.md/) 标准
> 本 worktree 专用于 IoT 模块 v2.0 升级第一期实施
> 对应分支:`feat/iot-2.0`
> **注意**:本 worktree **不走 OpenSpec 流程**(主仓 master 的 AGENTS.md 指向 OpenSpec与本升级无关
> 本升级的权威 spec = `14-任务执行卡/` 下的任务卡。
---
## 一、项目背景
AIoT 平台 IoT 模块(`viewsh-module-iot`v2.0 升级实施:
- **技术栈**Spring Boot 3.5.9 + Spring Cloud 2025 + MyBatis Plus 3.5.15 + JDK 17+
- **目标**:规则引擎从硬编码演进为 DAG + 子系统模型 + 告警状态机 + 设备影子
- **范围**89 个任务分 3 期,当前第一期 B1-B1919 个后端任务)
- **前端配对**`C:\workspace\vue\aiot-platform-ui-iot`(分支 `feat/iot-2.0`,承接 F1-F11
---
## 二、任务卡系统(权威 spec
所有任务的需求 / 验收 / 约束均在任务卡:
| 资源 | 绝对路径 |
|------|---------|
| 任务卡目录 | `C:\document\AIOT\开发者文档\03-IoT领域\升级设计方案\14-任务执行卡\` |
| 编写指南 | `14-任务执行卡\00-任务卡编写指南.md` |
| 目录说明 + Wave 依赖 | `14-任务执行卡\README.md` |
| 评审档案(决策背景) | `13-评审记录\01-10` + `11-决策记录` + `12-ACP调研` |
| 原始设计方案 | `C:\document\AIOT\开发者文档\03-IoT领域\升级设计方案\00-12.md` |
**本 worktree 任务范围**:仅 **B 开头后端任务**,第一期 B1-B19。
第二期 B20+、B29RPC Outbox 样板)、第三期 B44脚本沙箱样板**本期禁止做**。
---
## 三、硬约束(所有 Agent 共守)
### 3.1 Git 边界
- **分支**:必须在 `feat/iot-2.0` 分支提交
- 每次任务开始前 `git branch --show-current` 核对
- **禁止**`git push`(任何远程推送)、`git push --force``git commit --no-verify``git commit --amend` 已推送的 commit
- **禁止**`git checkout` 切换到其他分支
- **禁止**:在 `master` / `main` / 其他分支 commit
### 3.2 任务范围
- 第一期仅 B1-B19
- **禁止做** B20+、B29、B44非第一期
- 任务卡 `Files §2.3 不可修改` 里的文件**绝不触碰**
### 3.3 代码边界
- **禁止**修改 `viewsh-module-iot-server/**/rule/**` 旧规则代码v1 保留到观察期后由 B67 清理)
- **禁止**让 `viewsh-module-iot-rule` 模块依赖 `viewsh-module-iot-server``viewsh-module-iot-gateway`
- 依赖方向:`rule → core → api`(单向)
### 3.4 质量门槛
- Acceptance Criteria 任一项未通过 → **不允许 commit**
- 测试必须全部通过(`mvn test`
- 不跳过 pre-commit hook
---
## 四、任务执行标准流程
每个任务逐项遵循:
1. **Read 任务卡**`14-任务执行卡/Bxx-*.md`(绝对路径)
2. **Read source_doc**:任务卡列出的原方案章节
3. **Read depends_on**:上游任务**实际代码产出**(不只看任务卡文字)
4. **按 Known Pitfalls 规避**已知问题
5. **TDD**:先写测试骨架,再写实现
6. **运行测试**`mvn test -pl <相关模块>`
7. **逐项 check Acceptance Criteria**;任一未通过不 commit
8. **commit 规范**
```
[Bxx] 任务标题
- 主要文件 1
- 主要文件 2
- Known Pitfalls 落地:⚠️ 评审 Xx
Co-Authored-By: <AI 模型标识>
```
9. **更新任务卡** frontmatter`status: completed` + `updated: <YYYY-MM-DD>`
10.`README.md §3.3` 确认下游 Wave
---
## 五、关键技术约定(源自第 8 轮评审规范清单)
| 约定 | 规则 |
|------|------|
| SPI Provider 注册 | Spring `@Component` + `getType()` 索引;**禁用** `ServiceLoader` / `@SPI` |
| 模板变量格式 | `${data.x}` / `${meta.x}` / `${alarm.x}` / `${trigger.x}`**禁用** `$[...]` 旧语法 |
| 分布式锁 | Redis `SET NX PX` + Lua 原子解锁;**禁用** `SETNX` 老语法 |
| RPC 状态更新 | **Outbox Pattern**(见 B29 样板);禁止同事务内 send + update DB |
| 告警状态模型 | `ack_state` + `clear_state` + `archived` 三字段正交;**禁用**线性 4 枚举 |
| 规则链匹配 | 三层 key 查询后 **LinkedHashMap 去重** |
| Aviator 脚本 | **8 层沙箱防护**(见 B44 样板) |
| Agent 调用协议 | **A2A**JSON-RPC 2.0 over HTTPS**禁用** "ACP" 命名(已合并到 A2A见 12 号调研) |
| 枚举 DB 存储 | `TINYINT` + Java Enum 映射;**禁用** VARCHAR 枚举字符串 |
| JSON 字段查询 | 关键维度建关联表;**禁用** `JSON_CONTAINS` 高频查询 |
| 主键 | `BIGINT AUTO_INCREMENT`(与其他 module 一致) |
| 多租户 | 所有 DAO 带 `tenant_id` 过滤(沿用项目风格) |
---
## 六、测试与构建命令
```bash
# 单模块测试
mvn test -pl viewsh-module-iot/viewsh-module-iot-rule
# 整仓构建(验证依赖)
mvn clean install -DskipTests -pl viewsh-module-iot/viewsh-module-iot-rule -am
# 依赖树(验证 rule 模块不依赖 gateway/server
mvn dependency:tree -pl viewsh-module-iot/viewsh-module-iot-rule
# 启动开发服务
cd viewsh-module-iot/viewsh-module-iot-server
mvn spring-boot:run
```
---
## 七、环境要求
- JDK 17+
- Maven 3.6+
- MySQL 5.7+ / 8.0+
- Redis 5.0+
- Nacos 2.0+(服务注册 / 配置中心)
任务卡 `启动前自检` 会要求 Agent 核对以上环境。
---
## 八、需要人工决策的场景
Agent 遇到以下情况**不得自动判断**,需停下通知人类:
- 测试连续失败 3 次
- Acceptance Criteria 有无法自动验证的项(如"文档可读性"
- 任务卡 Known Pitfalls 中的取舍点
- 依赖任务实际产出与任务卡预期不符
- 单任务执行超过 2 小时
- 上游任务 status 未 verified
具体通知机制由各 Agent 工具决定Claude Code 用 PushNotification其他工具按各自机制
---
## 九、相关文档索引
| 文档 | 用途 |
|------|------|
| `CLAUDE.md`(同目录) | Claude Code 专有机制(/loop、subagent、checkpoint |
| `14-任务执行卡/README.md` | 目录构成 + Wave 依赖图 |
| `14-任务执行卡/00-任务卡编写指南.md` | 任务卡字段规范 |
| `14-任务执行卡/01-Claude-Code执行设置指南.md` | 完整执行设置(含 worktree / 权限 / 并行) |
| `13-评审记录/08-轮次8-...md` | 系统边界 + 规范清单 + 55 patch |
| `13-评审记录/11-未决议题的用户决策记录.md` | 6 项用户决策(含双入口)|
| `13-评审记录/12-ACP协议与Agent调用方案调研.md` | A2A 选型依据 |
| `C:\workspace\vue\aiot-platform-ui-iot\AGENTS.md` | 前端对照 |
---
## 十、变更日志
- 2026-04-23 初建IoT v2.0 第一期专用