# AGENTS.md — 项目全局规则
本仓库是一个 **WebRTC 远程控制系统** 的多端单体仓库(monorepo),包含 Android 被控端、多平台控制端(Android / iOS / Flutter / Web)、Spring Boot 信令服务器及其后台管理前端。
---
## 一、工程总览
| 目录 | 工程类型 | 主语言 | 构建工具 | 角色 |
|---|---|---|---|---|
| `WebRTCSignalServer/` | Spring Boot 后端 | Java 25 | Maven | 信令服务器 + REST API |
| `WebRTCSignalServerWeb/` | Vue3 SPA | TypeScript | Vite | 服务器后台管理前端 |
| `WebRTCControlled/` | Android App | Java | Gradle | **被控端**(投屏 + 接收指令) |
| `WebRTCController/` | Android App | Java | Gradle | **控制端**(观看 + 发送指令) |
| `webrtc_controller_flutter/` | Flutter App | Dart | Flutter CLI | 控制端(Android/iOS 跨平台) |
| `webrtc_controller_ios/` | iOS App | Swift 5 | Xcode + SPM | 控制端(原生 iOS) |
| `WebRTCControllerWeb/` | Vue3 SPA | JavaScript | Vite | 控制端(网页版) |
| `AdbLoopbackController/` | Android App | Java | Gradle | ADB 回环控制工具(独立) |
| `vue-vben-admin-origin/` | 第三方模板 | TypeScript | pnpm | **只读参考**,禁止修改 |
---
## 二、各工程详细规则
### 1. `WebRTCSignalServer/` — 信令服务器
- **类型**:Spring Boot 4.1.0 应用,`spring-boot-starter-parent`
- **语言**:Java 25(`25`)
- **坐标**:`com.tt:webrtc-signal-server:1.0.0`
- **核心依赖**:`spring-boot-starter-websocket`、`starter-web`、`starter-data-jpa`(MySQL)、`starter-data-redis`、`starter-validation`、`spring-security-crypto`(仅 BCrypt 编码器,**不启用** Security 自动配置)、Jackson
- **测试**:`spring-boot-starter-test` + H2(无外部 MySQL 时上下文可启动)
- **构建**:`mvn clean package` / `mvn spring-boot:run`
**AI 规则**
- 使用 Java 25 语法,可用 record、sealed、switch 模式匹配、文本块。
- 持久化统一走 JPA Repository,不要手写 JDBC。
- Redis 用于:在线状态、频控计数、nonce 去重、踢线广播。新增缓存需说明 key 规范与 TTL。
- 密码只允许 BCrypt 编码,禁止明文或可逆加密存储。
- 请求体参数校验统一使用 `jakarta.validation` 注解,不在 Controller 里手写 if 校验。
- 不要引入 Spring Security 的完整过滤器链(当前设计是刻意只用 crypto 模块)。
- 信令协议改动必须同步更新所有客户端(Android / iOS / Flutter / Web)。
### 2. `WebRTCSignalServerWeb/` — 后台管理前端
- **类型**:Vue 3 SPA,ESM(`"type": "module"`)
- **技术栈**:Vue `^3.5.12` + TypeScript `^5.6.3` + Vite `^5.4.10` + Pinia `^2.2.4` + Vue Router `^4.4.5` + Element Plus `^2.8.4` + ECharts `^5.5.1` + axios `^1.7.7`
- **脚本**:`npm run dev` / `npm run build`(含 `vue-tsc --noEmit`)/ `npm run preview`(端口 5180)
**AI 规则**
- 统一使用 `