chore(config): 参考 novavis 完善 Agent 配置体系
- AGENTS.md: 新增 §20 工具脚本复用 / §21 分析结论复用 / §22 Flaky 门禁,更新文档配置表
- .pi/: 新增 settings.json、rules/guardrails.md、prompts/{debug,review,ship}-gym-manage.md
- .agents/: 新增 Hook 配置与 4 个 Hook 脚本(session-start/pre-agent-check/check-completeness/stop-check)
及 protocols/systematic-debugging.md(check-completeness 含接口链缺口检测)
- scripts/flaky-scan.sh: vitest shuffle 稳定性扫描(gym-manage-web)
- .gitignore: 追踪 AGENTS.md 与 .pi 配置,忽略运行时缓存(todos/taskflows-runs/tokenomy/sessions)
This commit was merged in pull request #57.
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
---
|
||||
description: 健身房管理系统专用系统调试 — 跨 Java API + Vue3 Web + UniApp 小程序排查
|
||||
---
|
||||
Gym Manage(SpringBoot 多模块后端 + Vue3 管理后台 + UniApp 双小程序)系统化调试协议:
|
||||
|
||||
## 1. 复现确认
|
||||
- 确认最小复现步骤(单测试 / 单操作 / 单输入)
|
||||
- 区分环境:本地 Dev(`pnpm dev`,端口 3002)vs Docker(`docker-compose logs -f backend/frontend/postgres`)vs 微信开发者工具(小程序)
|
||||
|
||||
## 2. 分层隔离
|
||||
按以下顺序定位故障层:
|
||||
|
||||
| 层级 | 检查点 | 快速验证 |
|
||||
|------|--------|---------|
|
||||
| 后端 Java | Controller / Service / Mapper、参数校验、异常处理 | `cd gym-manage-api && mvn compile` / `mvn test` |
|
||||
| Gateway 路由 | `/api/**` → 8084 转发、CORS、鉴权过滤器 | Gateway 控制台日志 |
|
||||
| Web 前端 | `gym-manage-web/src/api/*.api.ts` 请求层、views 组件、store | `cd gym-manage-web && pnpm test` / 浏览器 DevTools Network |
|
||||
| UniApp 小程序 | `gym-manage-uniapp/api/*.js`、pages 页面 | 微信开发者工具控制台(`urlCheck: false` 已关闭) |
|
||||
| 数据库 | SQL 错误、数据不一致 | `psql -U novalon -d manage_system -p 55432` |
|
||||
|
||||
## 3. 二分排查
|
||||
- 对 Java 逻辑:加日志(SLF4J DEBUG)或单测缩小范围
|
||||
- 对接口联调:用 Swagger(`:8084/swagger-ui.html`)直接调接口,确认后端返回 → 再查前端请求参数
|
||||
- 对 UI:Vue DevTools 组件树 + Network 标签比对请求/响应
|
||||
|
||||
## 4. 检查最近变更
|
||||
```bash
|
||||
git diff --name-only HEAD~5 # 最近 5 次提交变更
|
||||
git log --oneline -10 # 最近 10 条提交
|
||||
```
|
||||
|
||||
## 5. 运行受影响测试
|
||||
```bash
|
||||
cd gym-manage-api && mvn test -pl <受影响模块> -am # 后端
|
||||
cd gym-manage-web && pnpm test # Web 前端
|
||||
cd gym-manage-web && pnpm test:e2e # Web E2E(Playwright)
|
||||
```
|
||||
|
||||
## 6. 确认根因后才提修复方案
|
||||
- 记录完整的复现路径与根因证据
|
||||
- 修复后走完整验证:受影响单测 + 类型检查(`vue-tsc`)+ 真实后端联调(Mock 通过 ≠ 功能可用,见 AGENTS.md §13)
|
||||
@@ -0,0 +1,39 @@
|
||||
---
|
||||
description: 健身房管理系统全链路集成审查 — API → Service → Web 组件 / UniApp 页面 → 测试 → CI
|
||||
---
|
||||
Gym Manage 项目专用集成审查,覆盖全链路:
|
||||
|
||||
## 全链路检查清单
|
||||
|
||||
### 1. 后端 Java
|
||||
- `cd gym-manage-api && mvn compile` — 编译检查
|
||||
- `cd gym-manage-api && mvn test` — 单元+集成测试(JUnit 5)
|
||||
- Controller → Service → Mapper 分层清晰,无 Controller 直连 Repository
|
||||
- DTO/VO 与实体分离,响应结构统一(code/message/data)
|
||||
|
||||
### 2. 接口契约
|
||||
- Web 端 `gym-manage-web/src/api/*.api.ts` 请求路径/方法/参数与 Java Controller 注解一致
|
||||
- UniApp 端 `gym-manage-uniapp/api/*.js`、`gym-manage-coach-uniapp/api/*.js` 同步一致
|
||||
- 新增接口已登记(Swagger 注解齐全:`@ApiOperation`/`@ApiModelProperty`)
|
||||
|
||||
### 3. Web 前端
|
||||
- `cd gym-manage-web && pnpm exec vue-tsc --noEmit` — 类型检查
|
||||
- `cd gym-manage-web && pnpm lint` — lint
|
||||
- 组件通过 `src/api/*.api.ts` 取数,无直接裸 `fetch`/`axios` 绕过
|
||||
- store(pinia)状态变更向后兼容;类型与后端 DTO 无漂移
|
||||
|
||||
### 4. UniApp 小程序
|
||||
- 会员端 / 教练端页面通过 `api/*.js` 取数,请求封装(`utils/request.js`)一致
|
||||
- 页面展示字段与接口返回字段对齐(camelCase ↔ 后端命名)
|
||||
|
||||
### 5. 测试覆盖
|
||||
- 后端:`mvn test` 覆盖新增 Service 核心分支 + 边界
|
||||
- Web:`pnpm test`(vitest)覆盖组件关键行为;新增测试通过 `bash scripts/flaky-scan.sh --spec <文件> --runs 3`
|
||||
- 检查 `.only()` / `.skip()` / `console.log` 等调试遗留
|
||||
|
||||
### 6. CI 门禁
|
||||
- `cd gym-manage-web && pnpm build` — 生产构建通过
|
||||
- Jenkins pipeline(Jenkinsfile)兼容性;根目录 `run-all-tests.ps1` 可本地全量回归
|
||||
|
||||
## 报告格式
|
||||
输出简洁表格:层、状态(✅/❌/⚠️)、发现的问题
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: 健身房管理系统专属质量门禁与发布流程 — 构建→测试→提交→推送
|
||||
---
|
||||
Gym Manage 项目质量门禁和提交发布流程:
|
||||
|
||||
## 质量门禁(按顺序执行)
|
||||
|
||||
```bash
|
||||
# Step 1: 后端编译 + 测试(受影响模块)
|
||||
cd gym-manage-api && mvn test -pl <受影响模块> -am
|
||||
|
||||
# Step 2: Web 前端类型检查 + 单元测试
|
||||
cd gym-manage-web && pnpm exec vue-tsc --noEmit
|
||||
cd gym-manage-web && pnpm test
|
||||
|
||||
# Step 3: Web E2E(涉及页面交互时)
|
||||
cd gym-manage-web && pnpm test:e2e
|
||||
|
||||
# Step 4: 新增/修改测试的 flaky 门禁(P1,AGENTS.md §22)
|
||||
bash scripts/flaky-scan.sh --spec <新文件> --runs 3
|
||||
|
||||
# Step 5: 构建验证
|
||||
cd gym-manage-web && pnpm build
|
||||
```
|
||||
|
||||
## Git 操作规范
|
||||
|
||||
### 提交信息格式
|
||||
```
|
||||
类型(范围): 中文描述
|
||||
|
||||
- 类型: feat / fix / refactor / test / docs / chore / perf / style
|
||||
- 范围: api / web / uniapp / coach / config / ci / deps
|
||||
```
|
||||
|
||||
### 提交前检查
|
||||
- 无 `// TODO` / `// FIXME` / `console.log` 残留
|
||||
- 无空函数体或 `throw new UnsupportedOperationException()` 等骨架占位
|
||||
- 无 `.only()` / `.skip()` 在测试中
|
||||
- 已从两个独立信源交叉验证(AGENTS.md §7)
|
||||
|
||||
### 推送前检查
|
||||
- Jenkins CI pipeline 兼容性(`Jenkinsfile` 在 root)
|
||||
- 全链路打通(API → Service → Web/UniApp,AGENTS.md §13)——Mock 通过 ≠ 功能可用,需真实后端验证
|
||||
@@ -0,0 +1,43 @@
|
||||
# Gym Manage Pi Agent Guardrails
|
||||
|
||||
AGENTS.md 通用规则的 Pi Agent 专项补充,由 pi-agent-suite/project-rules 扩展加载。
|
||||
|
||||
## 文件操作边界
|
||||
- 禁止修改或删除 `.pi/`、`.agents/` 目录下任何配置文件和脚本,除非用户明确要求
|
||||
- 禁止修改 `gym-manage-api/**/application*.yml` / `application*.properties` 中的数据库口令等敏感配置,除非用户明确要求
|
||||
- 数据库 `manage_system`(PostgreSQL:55432)结构变更(DDL)前,须先确认影响范围并同步更新文档
|
||||
- 禁止修改或删除 `dogfood-output/`、`test-results/`、`playwright-report/` 等测试产出目录内容(只读)
|
||||
|
||||
## 依赖管理
|
||||
- 禁止在未获用户明确批准的情况下添加/升级/删除任何 Maven 依赖(`gym-manage-api/pom.xml` 及各模块 `pom.xml`)或 npm/pnpm 依赖
|
||||
- `pom.xml`、`package.json`、`pnpm-lock.yaml`、`package-lock.json` 的修改须经用户确认
|
||||
|
||||
## 构建安全
|
||||
- 禁止运行 `mvn clean` / `rm -rf target/` / `rm -rf node_modules/` 等清理构建缓存的命令,除非用户明确要求
|
||||
- 构建失败时,先诊断根因,禁止"试试看"式的反复修改
|
||||
|
||||
## 环境变量
|
||||
- 禁止修改、覆盖、或取消设置 HOME 环境变量
|
||||
- `.env*` 文件为只读,禁止修改
|
||||
|
||||
## Git 操作
|
||||
- 禁止运行 `git push`、`git reset --hard`、`git clean -fd`、`git branch -D` 等破坏性命令
|
||||
- `git commit` 须经用户确认
|
||||
|
||||
## 测试命令退出码保留
|
||||
- 测试命令必须是整条 bash 命令的**最后一个命令**,禁止在后面追加任何后处理(`grep`、`head`、`wc -l`、`echo`、`tee` 等,无论是否有用)
|
||||
- 唯一例外是以下模式,且必须严格按模板书写:
|
||||
```bash
|
||||
test_cmd > /tmp/output.txt 2>&1; EXIT=$?
|
||||
# 后处理(只读,不修改 EXIT)
|
||||
wc -l /tmp/output.txt
|
||||
grep ... /tmp/output.txt | head -30
|
||||
exit $EXIT
|
||||
```
|
||||
- 管道场景使用 `set -o pipefail` 确保任一命令失败时整体退出码非零
|
||||
- 重定向顺序必须是 `> file 2>&1`,不能是 `2>&1 > file`
|
||||
|
||||
## 端口与服务
|
||||
- Gateway: 8080(路由 `/api/**` → 8084);App: 8084(Swagger: `http://localhost:8084/swagger-ui.html`);Web Dev: 3002;PostgreSQL: 55432;Redis: 6379
|
||||
- 数据库直连查询用 `psql -U novalon -d manage_system -p 55432`
|
||||
- 启动/停止本地环境优先使用 `scripts/start-all.sh` / `scripts/stop-test-env.sh`,不手工起停容器
|
||||
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"prompts": ["prompts"],
|
||||
"compaction": {
|
||||
"enabled": true,
|
||||
"reserveTokens": 16384,
|
||||
"keepRecentTokens": 40000
|
||||
},
|
||||
"sessionDir": "sessions",
|
||||
"quietStartup": false,
|
||||
"defaultThinkingLevel": "high",
|
||||
"sourceCodeFilteringEnabled": true,
|
||||
"sourceCodeFilteringLevel": "minimal",
|
||||
"smartTruncationEnabled": true,
|
||||
"smartTruncationMaxLines": 150,
|
||||
"terminal": {
|
||||
"showTerminalProgress": true
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user