Files
MemeMind-Server/AGENTS.md
2026-05-14 16:45:24 +08:00

5.1 KiB
Raw Blame History

仓库协作指南

项目结构与模块组织

本仓库是 MemeMind 的 NestJS 后端服务。应用代码位于 src/。通用守卫、过滤器、装饰器和基础 DTO 位于 src/common/。运行时配置和 TypeORM 配置位于 src/config/src/database/。业务代码按领域划分在 src/modules/ 下,包括 auth/level/share/user/game-config/。新增代码应放入对应模块,并遵循 Nest 的常规结构:*.controller.ts*.service.ts*.module.ts,以及按需补充 dto/entities/repositories/。单元测试与源码相邻,命名为 *.spec.ts;端到端测试位于 test/

构建、测试与开发命令

使用 pnpm,仓库已包含 pnpm-lock.yaml

  • pnpm install:安装依赖。
  • pnpm run start:dev:以 watch 模式启动本地开发服务。
  • pnpm run build:将 TypeScript 编译到 dist/
  • pnpm run start:prod:从 dist/main 启动生产构建。
  • pnpm run lint:运行 ESLint 并自动修复可修复问题。
  • pnpm run format:使用 Prettier 格式化 src/test/
  • pnpm run testpnpm run test:covpnpm run test:e2e:运行单测、覆盖率测试和 e2e 测试。

编码风格与命名规范

使用严格类型的 TypeScript除非处于明确的边界场景否则避免新增 any。Prettier 约束为单引号和尾随逗号。遵循现有的 2 空格缩进和 NestJS 命名习惯:类使用 PascalCase,方法与变量使用 camelCase,目录使用 kebab-caseDTO 文件名要具备明确语义,例如 wx-login.dto.tsshare-response.dto.ts

测试规范

单元测试和 e2e 测试均使用 Jest。单元测试文件命名为 *.spec.ts,并与被测源码放在一起。只要 controller 契约、service 逻辑、repository 行为或鉴权流程发生变化,就需要新增或更新测试。提交 PR 前应运行 pnpm run test:cov,覆盖率结果输出到 coverage/

接口文档规范

只要接口发生改动,必须同步更新 docs/api/ 目录中的对应文档,确保客户端可以直接使用该目录下的文档进行联调。

  • 新增接口:在对应模块文档中新增接口章节,并补充请求参数、响应结构、示例和调用场景。
  • 修改接口:同步更新字段、鉴权方式、错误码、业务规则和示例。
  • 删除或废弃接口:在文档中明确标记,并说明客户端迁移方式。
  • 如果一次改动涉及多个模块接口,相关文档都要一并更新,不能只改代码不改文档。

提交与合并请求规范

最近的提交历史使用 Conventional Commit 前缀,例如 feat:perf:refactor:,也包含带作用域的形式,例如 feat(share): ...。请保持提交聚焦并沿用同样格式。PR 需要说明行为变更、配置或迁移影响、关联的 issue如果有并在请求或响应结构发生变化时附上 API 示例。

配置与部署说明

环境变量在 src/config/env.validation.ts 中做校验。敏感信息应保存在 .env.local 或部署环境专用配置中不能写入源码。无论本地还是生产环境API 统一暴露在 /apiSwagger 暴露在 /api/docspnpm run deploy 会调用 deploy.shrsync 和 PM2因此执行前需要先检查其中的服务器相关配置。

# Memory Context

[MemeMind-Server] recent context, 2026-05-14 4:25pm GMT+8

Legend: 🎯session 🔴bugfix 🟣feature 🔄refactor change 🔵discovery ⚖️decision 🚨security_alert 🔐security_note Format: ID TIME TYPE TITLE Fetch details: get_observations([IDs]) | Search: mem-search skill

Stats: 16 obs (3,405t read) | 446,647t work | 99% savings

Apr 26, 2026

1306 3:45p 🟣 Added completedLevelCount field to game-data API 1307 " 🔵 Located game-data endpoint controller 1308 " 🔵 Mapped game-data implementation and DTO structure S1302 Add completedLevelCount to api/v1/user/game-data endpoint with efficient COUNT query (Apr 26 at 3:45 PM) S1301 Add completedLevelCount field to api/v1/user/game-data endpoint (Apr 26 at 3:45 PM) 1310 " 🔄 Removed completedLevelIds, kept only completedLevelCount 1311 3:46p 🟣 Added countByUserId to repository interface 1309 " 🟣 Added completedLevelCount to game-data API 1312 3:47p 🔄 Refactored getGameData to use COUNT query directly 1313 3:52p 🟣 Game data endpoint refactored with next level logic 1315 3:53p 🟣 Game Level API Redesign for Client-Side Level Progression 1314 3:57p ⚖️ 幽默始祖等级系统设计规则 1316 4:03p ⚖️ Level API Redesign Implementation Plan S1303 MemeMind-Server API 变更实现:删除 GET /v1/levels、三个接口新增 nextLevel/preloadNextLevel 字段 (Apr 26 at 4:11 PM)

May 14, 2026

1618 4:20p Migrating Claude Code settings into Codex 1619 " 🔵 MemeMind-Server already partially migrated to Codex 1620 4:22p 🔵 javascript-typescript-jest skill symlinked from .claude to .agents 1621 " Migrate-to-codex dry-run completed for MemeMind-Server 1622 4:24p MemeMind-Server migration to Codex completed and validated

Access 447k tokens of past work via get_observations([IDs]) or mem-search skill.