/**
 * robot-manager 模块 — 契约校验专属配置
 *
 * v3 之后前后端大部分业务字段都通过 metadata JSONB 传递，
 * 因此字段名差异白名单相对较少。
 */

export interface KnownFieldDiff {
  endpoint: string;
  feFields: string[];
  beFields: string[];
  status: 'match' | 'warning' | 'mismatch' | 'info';
  note: string;
}

/** 已知的前后端字段名差异（已确认兼容，作为白名单） */
export const knownFieldDiffs: KnownFieldDiff[] = [
  {
    endpoint: 'POST /robot-manager',
    feFields: ['metadata'],
    beFields: ['metadata'],
    status: 'info',
    note: 'v3 起所有业务字段通过 metadata JSONB 传入，由 FieldDef 驱动校验',
  },
  {
    endpoint: 'PUT /robot-manager/:id/:section',
    feFields: ['version', 'metadata'],
    beFields: ['version', 'metadata'],
    status: 'info',
    note: 'Section 更新按 group whitelist 过滤 metadata 子集；无关字段静默 drop（受 ValidationPipe whitelist 保护）',
  },
  {
    endpoint: 'POST /robot-manager/:id/status',
    feFields: ['targetStatus', 'locationId?', 'customerId?', 'remark?'],
    beFields: ['targetStatus', 'locationId?', 'customerId?', 'remark?'],
    status: 'match',
    note: 'ChangeStatusDto 字段对齐',
  },
];

/** 前端 interface → 后端 DTO 类型映射表 */
export const typePairs: Array<[string, string]> = [
  ['RobotUnit', 'RobotUnitResponseDto'],
  ['CreateRobotUnitInput', 'CreateRobotUnitDto'],
  ['UpdateRobotUnitInput', 'UpdateRobotUnitDto'],
  ['RobotFieldDef', 'RobotFieldDefDto'],
  ['RobotModel', 'CreateRobotModelDto'],
  ['RobotSku', 'CreateRobotSkuDto'],
  ['RobotSupplier', 'CreateRobotSupplierDto'],
  ['RobotCustomer', 'CreateRobotCustomerDto'],
  ['RobotLocation', 'CreateRobotLocationDto'],
  ['ChangeStatusInput', 'ChangeStatusDto'],
];
