import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace MesTraceIntegrityApi {
  /** 数据完整性校验结果 */
  export interface VerifyResult {
    bizType?: string; // 业务类型：BATCH / SALES / SCAN
    bizId?: number; // 业务记录编号
    bizCode?: string; // 业务编码
    matched?: boolean; // 是否校验通过
    storedHash?: string; // 存储的摘要 SHA-256
    currentHash?: string; // 当前数据重算摘要 SHA-256
    bagSetHash?: string; // 批次当前袋码集合摘要（仅 BATCH 校验返回）
    message?: string; // 校验说明
  }

  /** 数据完整性记录 */
  export interface Record {
    id?: number; // 编号
    bizType?: string; // 业务类型
    bizId?: number; // 业务记录编号
    bizCode?: string; // 业务编码
    contentHash?: string; // 内容摘要 SHA-256
    eventTime?: string; // 摘要生成时间
  }

  /** 数据完整性记录分页查询参数 */
  export interface PageParams extends PageParam {
    bizType?: string;
    bizId?: number;
    bizCode?: string;
  }
}

/** 校验数据完整性（重算摘要比对） */
export function verifyTraceIntegrity(bizType: string, bizId: number) {
  return requestClient.get<MesTraceIntegrityApi.VerifyResult>(
    '/mes/trace-integrity/verify',
    { params: { bizType, bizId } },
  );
}

/** 获得数据完整性记录分页 */
export function getTraceIntegrityPage(
  params: MesTraceIntegrityApi.PageParams,
) {
  return requestClient.get<PageResult<MesTraceIntegrityApi.Record>>(
    '/mes/trace-integrity/page',
    { params },
  );
}
