← 返回文档索引

模块 A:数据库模型升级 (Database Schema Upgrade)

目标: 在现有 EngineeringNodeTenant 基础上,增加财务、资源、分片路由字段,支持“双树模型”(任务树 + 资源树)和“多库分片”。

前置条件:

负责人: 一龙 状态: 进行中


1. 数据模型变更清单

1.1 EngineeringNode 实体变更

文件: backend/src/entities/engineering-node.entity.ts

新增字段:

字段名 类型 说明 示例值
budget decimal 预算金额 50000.00
actual_cost decimal 实际花费 12500.50
resource_type enum 资源类型 'money' | 'time' | 'energy' | 'material'
db_shard_url string 数据分片 URL (可选) postgres://shard-01...
template_id uuid 来源模板 ID 550e8400-e29b...
is_root boolean 是否为根工程节点 true/false

代码示例:

@Column('decimal', { precision: 12, scale: 2, nullable: true })
budget: number | null;

@Column('decimal', { precision: 12, scale: 2, nullable: true })
actual_cost: number | null;

@Column({ 
  type: 'enum', 
  enum: ['money', 'time', 'energy', 'material'], 
  default: 'money' 
})
resource_type: 'money' | 'time' | 'energy' | 'material';

1.2 Tenant 实体变更

文件: backend/src/entities/tenant.entity.ts

新增字段:

字段名 类型 说明
default_db_shard string 默认分片 URL
subscription_plan string 订阅计划 (free/pro/enterprise)

2. 执行步骤

Step 1: 修改实体文件

Step 2: 验证数据库变更

# 进入数据库容器
docker compose exec postgres psql -U postgres -d huixing_db

# 检查表结构
\d engineering_nodes

预期结果:能看到新增的 budget, actual_cost, resource_type 等列。

Step 3: 提交代码


3. 验收标准

  1. 数据库表 engineering_nodes 中包含 budget, actual_cost, resource_type 列。
  2. API 创建节点时,可以传入这些新字段并成功保存。
  3. TypeORM 自动同步无报错。

4. 常见问题 (FAQ)


下一步:模块 B (种子数据生成器)

目录