/**
 * Position Factory
 * 
 * 岗位测试数据工厂
 * 
 * 基于文档: docs/modules/organization/02-user-journey.md (场景8: 岗位管理)
 */

import { PrismaClient } from '@prisma/client';

let positionCounter = 0;

export interface CreateTestPositionOptions {
  code?: string;
  name?: string;
  description?: string;
  level?: number;
}

/**
 * 创建测试岗位
 */
export async function createTestPosition(
  prisma: PrismaClient,
  options: CreateTestPositionOptions = {},
) {
  positionCounter++;

  return prisma.position.create({
    data: {
      code: options.code || `POS_${positionCounter}`,
      name: options.name || `测试岗位 ${positionCounter}`,
      description: options.description || `测试岗位描述 ${positionCounter}`,
      level: options.level !== undefined ? options.level : positionCounter,
    },
  });
}

/**
 * 创建多个测试岗位
 */
export async function createTestPositions(
  prisma: PrismaClient,
  count: number,
  options: CreateTestPositionOptions = {},
) {
  const positions = [];
  for (let i = 0; i < count; i++) {
    positions.push(
      await createTestPosition(prisma, {
        ...options,
        code: options.code ? `${options.code}_${i + 1}` : undefined,
        name: options.name ? `${options.name} ${i + 1}` : undefined,
        level: options.level !== undefined ? options.level + i : undefined,
      }),
    );
  }
  return positions;
}

