'use client';

import type {
  CreateAssignmentRequest,
  CreateAssignmentResponse,
  ListAgentsResponse,
  ListAssignmentsResponse,
  AssignmentDetailResponse,
} from '@pac/types';
import { api } from '@/lib/api-client';

/**
 * 批次分配 API。
 *
 * ⚠️ 路径都在 `plans/assignments` 之下 —— **别写成 `/plans/agents`**:
 * 那个路径归 PlanController,会被它的裸 `@Get(':id')` 当成 planId,
 * 报出来是 Prisma 的 uuid 解析错,完全看不出是路由撞了(实测踩过)。
 */
export const assignmentsApi = {
  /**
   * 确认分配 —— **整条生产线唯一的写动作**。
   * ⚠️ `requestId` 必须原样回传服务端在出确认单时铸造的那个(幂等键);
   * 前端自己生成挡不住 SSE 重连与重试。
   */
  create: (body: CreateAssignmentRequest) =>
    api.post<CreateAssignmentResponse>('/pac/v1/plans/assignments', body),

  list: (mine?: boolean) =>
    api.get<ListAssignmentsResponse>(`/pac/v1/plans/assignments${mine ? '?mine=1' : ''}`),

  detail: (id: string) =>
    api.get<AssignmentDetailResponse>(`/pac/v1/plans/assignments/${encodeURIComponent(id)}`),

  /** 在岗客服名册 + 在手负载(一个端点,不拆两个 —— 拆开必然口径漂移) */
  agents: (clinicId: string, include?: string[]) =>
    api.get<ListAgentsResponse>(
      `/pac/v1/plans/assignments/agents?clinicId=${encodeURIComponent(clinicId)}` +
        (include?.length ? `&include=${include.map(encodeURIComponent).join(',')}` : ''),
    ),
};
