import { get, put, post } from '@/utils/request.js'
import { PUBLIC_BASE_API } from '@/common/config.js'

/**
 * 查询用工草稿详情（登录态）
 * GET /api/v1/mp/drafts/{id}
 * @param {number} draftId
 */
export function getDraftDetail(draftId, options = {}) {
	return get(`/drafts/${draftId}`, {}, options)
}

/**
 * 公开查询用工草稿详情（无需登录）
 * GET /api/v1/public/drafts?scene=ord_123
 * @param {string} scene 小程序码 / 分享 scene（订单编号，如 ord_7）
 */
export function getPublicDraftDetail(scene, options = {}) {
	const s = scene == null ? '' : String(scene).trim()
	const base = (PUBLIC_BASE_API || '').replace(/\/$/, '')
	if (!base) {
		return Promise.reject(new Error('PUBLIC_BASE_API is empty'))
	}
	return get(`${base}/drafts`, { scene: s }, { auth: false, ...options })
}

/**
 * 更新用工草稿（仅 pending 可编辑，传需修改字段）
 * PUT /api/v1/mp/drafts/{id}
 * @param {number} draftId
 * @param {Object} data DraftUpdateRequest
 */
export function updateDraft(draftId, data = {}, options = {}) {
	return put(`/drafts/${draftId}`, data, options)
}

/**
 * 成本测算（方案对比）
 * GET /api/v1/mp/drafts/{id}/cost-comparison
 * 要求草稿 pending 且 missingFields 为空
 * @param {number} draftId
 */
export function getDraftCostComparison(draftId, options = {}) {
	return get(`/drafts/${draftId}/cost-comparison`, {}, options)
}

/**
 * 确认此方案
 * POST /api/v1/mp/drafts/{id}/confirm
 * 要求草稿 pending 且 missingFields 为空；生成正式订单并将草稿置为 confirmed
 * @param {number} draftId
 * @param {string} selectedSchemeCode 如 SCHEME_A / SCHEME_B
 */
export function confirmDraft(draftId, selectedSchemeCode, options = {}) {
	const code = selectedSchemeCode == null ? '' : String(selectedSchemeCode).trim()
	return post(
		`/drafts/${draftId}/confirm`,
		{
			selectedSchemeCode: code,
			// 兼容文档 / MCP 风格 snake_case（若 DTO 带 @JsonProperty）
			selected_scheme_code: code
		},
		options
	)
}

/**
 * 查询草稿办理流程与当前进度
 * GET /api/v1/mp/drafts/{id}/workflow-progress
 * 确认方案后可调用；结构与 registration-batches?draft_id= 一致
 * @param {number|string} draftId
 */
export function getDraftWorkflowProgress(draftId, options = {}) {
	return get(`/drafts/${draftId}/workflow-progress`, {}, options)
}

