# 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 规则** - 统一使用 `