import { z } from '@hono/zod-openapi';

/**
 * 企业概览统计响应Schema
 */
export const CompanyOverviewSchema = z.object({
  在职人员数: z.coerce.number().int().nonnegative().openapi({
    description: '在职人员数量（work_status = working）',
    example: 10
  }),
  进行中订单数: z.coerce.number().int().nonnegative().openapi({
    description: '进行中订单数量（order_status = in_progress）',
    example: 5
  }),
  已完成订单数: z.coerce.number().int().nonnegative().openapi({
    description: '已完成订单数量（order_status = completed）',
    example: 20
  }),
  累计订单数: z.coerce.number().int().nonnegative().openapi({
    description: '累计订单总数',
    example: 25
  })
}).openapi('CompanyOverview');

/**
 * 人才状态分布Schema
 */
export const TalentStatusDistributionSchema = z.object({
  working: z.coerce.number().int().nonnegative().openapi({
    description: '在职人数',
    example: 10
  }),
  on_leave: z.coerce.number().int().nonnegative().openapi({
    description: '休假人数',
    example: 2
  }),
  left: z.coerce.number().int().nonnegative().openapi({
    description: '已离职人数',
    example: 3
  })
}).openapi('TalentStatusDistribution');

/**
 * 人才列表项Schema
 */
export const TalentItemSchema = z.object({
  personId: z.coerce.number().int().positive().openapi({
    description: '残疾人ID',
    example: 123
  }),
  personName: z.string().nullable().openapi({
    description: '残疾人姓名',
    example: '张三'
  }),
  joinDate: z.coerce.date().openapi({
    description: '入职日期',
    example: '2024-01-15T00:00:00.000Z'
  }),
  workStatus: z.string().openapi({
    description: '工作状态',
    example: 'working'
  }),
  orderName: z.string().nullable().openapi({
    description: '订单名称',
    example: '2024年第一季度用工订单'
  })
}).openapi('TalentItem');

/**
 * 企业维度人才统计响应Schema
 */
export const CompanyTalentResponseSchema = z.object({
  人才列表: z.array(TalentItemSchema).openapi({
    description: '分配人才列表'
  }),
  状态分布: TalentStatusDistributionSchema.openapi({
    description: '人才状态分布'
  })
}).openapi('CompanyTalentResponse');

/**
 * 近期分配人才查询响应Schema
 */
export const RecentAllocationsSchema = z.object({
  人才列表: z.array(TalentItemSchema).openapi({
    description: '近期分配人才列表（最近30天入职的在职人员）'
  })
}).openapi('RecentAllocations');