You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

2.6 KiB

Projects 表增强计划(V1 + V2 预留)

任务名称:完善 projects 表,预留企业版扩展字段
创建时间:2025-01-14
状态:待执行


1. 任务背景

当前状态

  • 已有 projects 表基础设计
  • 使用 type 字段区分 'mine' 和 'collab'
  • 使用 owner_id 指向用户

需求分析

  • V1:只支持个人用户,保持简单
  • V2:需要支持企业账号和项目预算积分
  • 预留字段:避免 V2 大规模重构

2. 执行步骤

Step 1: 更新 projects 表设计文档

文件docs/需求/backend/04-services/project/project-service.md

变更内容

  1. 新增 V2 预留字段:

    • owner_type:所有者类型('user' | 'organization')
    • ai_credits_budget:项目专属积分预算
    • budget_consumed:已消耗的预算积分
  2. 更新字段说明,标注 V1/V2 使用情况

  3. 更新索引设计

  4. 新增字段注释说明

Step 2: 生成方案文档

文件docs/方案/projects-table-v1-v2-design.md

内容

  • V1 vs V2 字段对比
  • 数据迁移策略
  • 业务逻辑演进路径
  • 完整的 SQL DDL

3. 涉及文件

文件路径 操作类型 说明
docs/需求/backend/04-services/project/project-service.md 修改 更新 projects 表设计
docs/方案/projects-table-v1-v2-design.md 创建 生成详细方案文档

4. 关键变更点

V1 字段(当前使用)

-- 基本信息
name TEXT NOT NULL
description TEXT
type project_type NOT NULL DEFAULT 'mine'  -- 'mine' | 'collab'
owner_id BIGINT NOT NULL  -- 指向 users.user_id
folder_id BIGINT

V2 预留字段(暂不使用)

-- 多态所有者(V2 启用)
owner_type TEXT DEFAULT 'user' CHECK (owner_type IN ('user', 'organization'))

-- 项目预算积分(V2 启用)
ai_credits_budget INTEGER DEFAULT 0
budget_consumed INTEGER DEFAULT 0

字段使用说明

  • V1 阶段:

    • owner_type 固定为 'user'
    • ai_credits_budgetbudget_consumed 保持为 0
    • 积分从 users.ai_credits_balance 扣除
  • V2 阶段:

    • owner_type 可以是 'organization'
    • 启用项目预算功能
    • 积分优先从项目预算扣除

5. 验证清单

  • projects 表设计已更新
  • 字段说明清晰标注 V1/V2
  • 索引设计已优化
  • 方案文档已生成
  • 用户确认无误

等待用户批准执行...