Files

2.3 KiB

CLAUDE.md — 智能错题本项目 Agent 指令 (v2)

项目信息

  • 项目名称: WrongBook (智能错题本)
  • 仓库结构: monorepo
    • backend/ — Python FastAPI 后端
    • app/ — Flutter 客户端 (MVP: Android + iOS;鸿蒙为占位适配层)
    • miniprogram/ — uni-app 微信小程序轻量版
    • infra/ — Docker / 部署配置
    • docs/ — 设计文档

技术栈 (严格遵守)

  • 后端: Python 3.11, FastAPI, SQLAlchemy 2.0 (async), PostgreSQL 16, Redis 7, Celery
  • 客户端: Flutter 3.22+, Dart 3.4+, Riverpod, flutter_math_fork, Dio
  • 小程序: uni-app (Vue3 + TypeScript)
  • AI: Claude Sonnet API (vision), PaddleOCR (可选,缺失时降级规则切分)
  • 全文检索: PostgreSQL tsvector (不使用 Elasticsearch)
  • 部署: Docker Compose

代码规范

  • Python: ruff 格式化, type hints 必须写, docstring 中文
  • Dart: flutter_lints, 优先 const 构造函数
  • 所有 API 返回统一格式: {"code": 0, "data": {}, "message": ""}
  • 错误也走统一格式: {"code": 错误码, "data": null, "message": "描述"}
  • 数据库迁移: Alembic
  • 环境变量: .env → pydantic Settings

构建/测试命令

  • 后端测试: cd backend && pytest -x -v (需要 Docker 中的 PostgreSQL 可用)
  • 后端启动: cd backend && uvicorn app.main:app --reload
  • 后端 lint: cd backend && ruff check .
  • Flutter 构建: cd app && flutter build apk --debug
  • Flutter 分析: cd app && flutter analyze

IMPORTANT 约束 (违反任何一条视为 Bug)

  • YOU MUST: 每个文件写完后运行 ruff check (Python) 或 flutter analyze (Dart)
  • YOU MUST: 数据库操作一律 async, 禁止同步 ORM
  • YOU MUST: Celery task 内调用 async 代码时使用 asyncio.run()
  • YOU MUST: 所有外部 API 调用 (Anthropic/RemoveHandwriting) 必须通过接口层+依赖注入, 没有 API key 时测试不能报错
  • YOU MUST: 图片存储只存 object_key, 读取时生成 presigned URL, 禁止存裸公开URL
  • YOU MUST: WebSocket 连接必须用 JWT 鉴权, 禁止在路径中暴露 user_id
  • YOU MUST: Flutter 中平台相关代码必须通过 PlatformService 抽象层
  • YOU MUST: AI prompt 模板放在 backend/app/prompts/ 目录, 不硬编码
  • YOU MUST: 每完成一个模块立即写单元测试
  • YOU MUST: 所有日志使用 structlog, 每条日志带 request_id