import { unwrapApiResponse } from '@/utils/api-response' import { request } from '@/utils/request' import type { ApiResponse, SignatureUploadInput, SignatureUploadResponse, SigningProof, SigningFormState, PatientAnswer, SigningContextResponse, TokenConsumeRequest, TokenConsumeResponse, } from './types' export function consumeSigningToken( payload: TokenConsumeRequest, idempotencyKey: string, ): Promise { return request .post>('/v1/sign-deliveries/token/consume', payload, { headers: { 'Idempotency-Key': idempotencyKey, }, }) .then(unwrapApiResponse) } /** * 读取本次签署的完整上下文:患者信息 / 签署人 / 文书正文 / 医生已填结果。 * * Context 使用已消费凭证,不再把原始一次性 Token 放进请求 URL、日志或后续请求。 */ export function fetchSigningContext(proof: SigningProof): Promise { return request .post>('/v1/sign-deliveries/token/context', proof) .then(unwrapApiResponse) } export function uploadSigningSignature( payload: SignatureUploadInput, ): Promise { const formData = new FormData() formData.append('file', payload.file, 'signature.png') formData.append('deliveryId', payload.deliveryId) formData.append('uploadToken', payload.uploadToken) formData.append( 'metadata', new Blob([JSON.stringify(payload.metadata)], { type: 'application/json' }), ) formData.append( 'signer', new Blob([JSON.stringify(payload.signer)], { type: 'application/json' }), ) return request .post>( `/v1/sign-deliveries/${encodeURIComponent(payload.taskId)}/signature`, formData, { headers: { 'Idempotency-Key': payload.idempotencyKey, }, }, ) .then(unwrapApiResponse) } export function saveSigningForm( proof: SigningProof, expectedRevision: number, answers: Record, ): Promise { return request .post>('/v1/sign-deliveries/token/form', { ...proof, expectedRevision, answers, }) .then(unwrapApiResponse) }