Files
beige/.claude/rules/db.md
yangqianqian 6a2632da70 baseline: Clover 独立仓库首次基线提交
将 Clover 从上层产品包旧仓库中独立出来,建立专属版本控制。
当前状态=纵切片端到端已打通(登录→选品→出文出图→审核→下载包),
M1文案质量去套路化已验收。此提交作为后续按核销清单逐条修复的基线。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 11:30:22 +08:00

1.9 KiB
Raw Permalink Blame History

paths
paths
src/models/**
alembic/**
migrations/**

数据库规则Clover · MySQL + Alembic

承接架构方案v0.3 第三章16表。一期建14张matrix_accounts/preference_profile 二期预留。

迁移

  • 每次 schema 变更创建迁移文件,不手动改数据库
  • 迁移文件不可修改已提交的,只能新增
  • 迁移必须包含 up 和 down
  • 按序001(banana搬3张) → 002(多租户基础) → 003(业务7张) → 004(飞轮)

查询

  • 禁止 SELECT *,明确列出字段
  • 大表查询必须有索引支撑,新增查询模式时同步加索引
  • N+1 问题:关联查询用 JOIN 或批量加载
  • 飞轮聚合走 MySQL JOINMongoDB 只存 AI debug trace业务不依赖

命名

  • 表名snake_case 复数users, generation_tasks, preference_events
  • 字段名snake_casecreated_at, workspace_id
  • 索引名idx_表名_字段名

关键约束(架构方案)

  • 任务主键:自增 BIGINT + mongo_trace_id VARCHAR(24)
  • user_api_keysUNIQUE(user_id, workspace_id, provider)
  • 所有业务表必须有 workspace_id多租户逻辑隔离
  • preference_events 必须有 workspace_id + product_id跨公司隔离+按产品分开学)

状态机generation_tasks.status

pending → generating → pending_selection → pending_review → approved/rejected → archived

  • 打回后回到 pending_selection
  • 非法流转返错误码 40901

字段红线

  • API Key 字段encrypted_keyFernet不存 url 字段token站固定自家站
  • users 表:删除 banana 的 credits 字段
  • eval_score留 NULL不接 banana 假评分)
  • data_ownershipclient_data / platform_asset洞7分层归属
  • banned_words.levelauto_fix / soft_warn / hard_block三级

枚举约束

  • DB 枚举约束要有对应代码侧常量文件(消除三套命名打架)
  • 品类products.category是纯数据字段禁止任何品类枚举常量