'use client';

import { api } from '@/lib/api-client';

export interface SubmitExecutionResult {
  executionId: string;
  planStatus: string;
  contactAttempts: number;
  breakerTripped: boolean;
}

export interface SubmitExecutionBody {
  channel: string;
  outcome: string;
  notes?: string;
  /**
   * 放弃原因(多选,AbandonReason enum key)—— PAC 通话结果表单 / 宿主关闭弹窗**共用**。
   * 两个面板各渲染 ABANDON_REASON_META 的一个子集(shownIn),提交的是同一套 key、进同一列。
   * 服务端据此算抑制窗(各原因 suppressDays 取 max)。
   *
   * 注:原先这里有张「中文 label → enum」的映射表,已删 —— UI 现在直接拿 META 的 key 渲染,
   * key 和 label 同源就不会再漂(那张表里「已转介他人 → treated_elsewhere」就是漂出来的语义错位)。
   */
  abandonReasons?: string[];
  /**
   * 「机会识别不准确」勾中的治疗 **code**(画像 potential_treatment.types,不是中文)。
   * 选了 inaccurate 就必填 —— 服务端也拦(见 execution.service)。仅统计 / 改算法用,不参与抑制。
   */
  inaccurateTreatments?: string[];
  scheduledNextAt?: string;
}

export function submitExecution(planId: string, body: SubmitExecutionBody) {
  return api.post<SubmitExecutionResult>(
    `/pac/v1/plans/${encodeURIComponent(planId)}/executions`,
    body,
  );
}
