# Repository Guidelines ## 项目结构与模块组织 本仓库是 `pnpm` monorepo,核心应用只有两个:`apps/web` 为 Next.js 15 + React 19 前端,`apps/api` 为 FastAPI 后端。前端页面放在 `apps/web/src/app`,通用组件放在 `apps/web/src/components`,状态管理放在 `apps/web/src/store`,工具函数放在 `apps/web/src/lib`。后端按分层组织:`app/api` 路由、`app/services` 业务编排、`app/repositories` 数据访问、`app/schemas` 输入输出模型、`app/db` 持久化。测试分别位于 `apps/web/src/test` 和 `apps/api/tests`,设计与计划文档放在 `docs/superpowers/specs`、`docs/superpowers/plans`。 ## 构建、测试与开发命令 先执行 `pnpm install` 安装工作区依赖。前端本地开发使用 `pnpm dev:web`,后端本地开发使用 `pnpm dev:api`。前端测试执行 `pnpm test:web`,生产构建校验执行 `pnpm --filter web build`。后端测试执行 `pnpm test:api`。涉及数据库结构变更时,在 `apps/api` 目录执行 `alembic upgrade head`。 ## 编码风格与命名约定 不要顺手重排无关文件,优先延续现有风格。前端使用严格模式 TypeScript、2 空格缩进,并通过 `apps/web/tsconfig.json` 中的 `@/*` 别名引用源码。React 组件使用 `PascalCase`,函数和变量使用 `camelCase`,文件名保持 kebab-case,例如 `use-auth-guard.ts`。后端遵循 PEP 8、4 空格缩进、`snake_case` 模块命名,并尽量补全类型标注。仓库当前没有单独的 lint 脚本,因此提交前至少保证导入顺序、命名和周边文件一致。 ## 测试指南 前端测试基于 Vitest,运行环境是 `jsdom`,公共初始化文件为 `apps/web/src/test/setup.ts`。组件测试命名为 `*.test.tsx`,纯逻辑或状态测试命名为 `*.test.ts`。后端测试使用 `pytest`,文件名遵循 `test_*.py`,例如 `test_auth.py`、`test_messages_service.py`。凡是修改行为、接口或状态流转,必须同步新增或更新至少一个自动化测试。 ## 提交与合并请求规范 最近提交历史采用带作用域的 Conventional Commits,例如 `feat(web): ...`、`feat(api): ...`,文档和修复也应保持同一格式。每个提交只解决一个明确问题,避免把前后端无关修改混在一起。PR 至少应包含:变更摘要、关联 issue 或设计文档、测试结果;如果涉及界面改动,补充截图或录屏。 ## 安全与配置提示 不要提交 `.env` 或 `apps/web/.env.local` 中的密钥、数据库地址和模型提供商凭据。修改认证、跨域、流式响应或 API 地址时,要同时检查前后端配置是否仍然匹配,避免只改一侧导致本地可用、联调失效。