/**
 * 绩效模块种子数据
 *
 * 包含：360 评估默认模板
 * 执行：通过 seed.ts 主入口或单独 ts-node prisma/seeds/performance-seed.ts
 */

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

const prisma = new PrismaClient();

const ADMIN_ID = '427a60d2-b81c-478c-8b30-eeed4889df89';

const DEFAULT_360_TEMPLATES = [
  {
    name: '领导力 360 评估',
    description: '适用于管理者的领导力评估',
    isDefault: true,
    dimensions: [
      { id: 'communication', name: '沟通与人际能力', nameEn: 'Communication & Interpersonal Skills', description: '清晰透明沟通，积极倾听，寻求多元观点', descriptionEn: 'Communicates clearly, actively listens, seeks diverse perspectives' },
      { id: 'collaboration', name: '协作与关系建设', nameEn: 'Collaboration & Relationship Building', description: '建立牢固的工作关系，促进跨团队协作', descriptionEn: 'Builds strong relationships, fosters cross-team collaboration' },
      { id: 'strategy', name: '战略思维', nameEn: 'Strategic Thinking', description: '展现战略思维，预见长期需求', descriptionEn: 'Demonstrates strategic thinking, anticipates long-term needs' },
      { id: 'execution', name: '执行与责任', nameEn: 'Execution & Accountability', description: '推动有效执行，设定清晰期望，确保问责', descriptionEn: 'Drives effective execution, sets clear expectations' },
      { id: 'team-leadership', name: '团队领导与人才管理', nameEn: 'Team Leadership & People Management', description: '提供清晰方向、辅导和发展机会', descriptionEn: 'Provides clear direction, coaching, and development opportunities' },
      { id: 'influence', name: '影响力与利益相关方管理', nameEn: 'Influence & Stakeholder Management', description: '有效影响他人，驾驭复杂的跨职能互动', descriptionEn: 'Effectively influences others and navigates cross-functional interactions' },
      { id: 'integrity', name: '正直与担当', nameEn: 'Integrity & Ownership', description: '持续展现正直品格和担当精神', descriptionEn: 'Consistently models integrity and demonstrates ownership' },
    ],
    relationshipTypes: ['SELF', 'PEER', 'CROSS_FUNCTIONAL', 'SUBORDINATE'],
  },
  {
    name: '通用 360 评估',
    description: '适用于全体员工的通用评估模板',
    isDefault: false,
    dimensions: [
      { id: 'communication', name: '沟通能力', nameEn: 'Communication', description: '有效表达和倾听的能力', descriptionEn: 'Clearly expresses ideas and actively listens to feedback' },
      { id: 'teamwork', name: '团队协作', nameEn: 'Teamwork', description: '与团队成员协作完成目标的能力', descriptionEn: 'Collaborates effectively with team members to achieve goals' },
      { id: 'professional', name: '专业能力', nameEn: 'Professional Competence', description: '专业知识和技能水平', descriptionEn: 'Possesses the professional knowledge and skills required for the role' },
      { id: 'innovation', name: '创新能力', nameEn: 'Innovation', description: '提出新想法和解决问题的能力', descriptionEn: 'Proposes innovative ideas and drives implementation' },
      { id: 'responsibility', name: '责任心', nameEn: 'Accountability', description: '对工作成果负责，主动承担任务', descriptionEn: 'Takes responsibility for outcomes and proactively takes on tasks' },
    ],
    relationshipTypes: ['SELF', 'SUPERVISOR', 'PEER', 'SUBORDINATE'],
  },
];

export async function seedPerformance() {
  console.log('  → Seeding 360 evaluation templates...');

  for (const tpl of DEFAULT_360_TEMPLATES) {
    const existing = await (prisma as any).evaluation360Template.findFirst({
      where: { name: tpl.name, deletedAt: null },
    });

    if (existing) {
      console.log(`    ⏭️  Template "${tpl.name}" already exists, skipping`);
      continue;
    }

    await (prisma as any).evaluation360Template.create({
      data: {
        name: tpl.name,
        description: tpl.description,
        dimensions: tpl.dimensions,
        relationshipTypes: tpl.relationshipTypes,
        isDefault: tpl.isDefault,
        isActive: true,
        createdBy: ADMIN_ID,
      },
    });
    console.log(`    ✅ Created template "${tpl.name}"${tpl.isDefault ? ' (default)' : ''}`);
  }
}

// 支持单独执行
if (require.main === module) {
  seedPerformance()
    .then(() => console.log('✅ Performance seed completed'))
    .catch((e) => { console.error('❌ Failed:', e); process.exit(1); })
    .finally(() => prisma.$disconnect());
}
