/**
 * 机器人管理翻译 - 中文
 * Robot Manager - Chinese
 */
export const robotManagerZh = {
  // 模块名称
  title: '机器人管理',
  subtitle: '机器人全生命周期管理',

  // 通用
  loading: '加载中...',

  // 导航
  overview: '概览',
  list: '机器人列表',
  reports: '报表',

  // 状态
  status: {
    // v2 兼容旧值（PR3 删除后这些 key 没用，留中文 fallback）
    ORDERED: '已下单',
    IN_TRANSIT: '在途',
    BONDED: '保税仓',
    IN_STOCK: '在库',
    RESERVED: '已预留',
    SOLD: '已销售',
    DELIVERED: '已交付',
    REPAIR: '维修中',
    REPAIRED: '维修完成',
    // v3 28 stage（含部门前缀）
    SUPPLY_PO_CREATED: '采购下单',
    SUPPLY_IN_PRODUCTION: '供应商在制',
    SUPPLY_READY_TO_SHIP: '工厂可发运',
    LOGISTICS_IN_TRANSIT: '物流在途',
    LOGISTICS_BONDED: '保税阶段',
    LOGISTICS_CUSTOMS_CLEARED: '清关完成',
    WAREHOUSE_RECEIVED: 'W1 收货',
    WAREHOUSE_AT_W1_PDI: 'W1 入库前检验',
    WAREHOUSE_MODIFICATION: '改装/贴标',
    WAREHOUSE_AT_W2: 'W2 入库暂存',
    WAREHOUSE_AT_W2_RLE: 'W2 RLE 外采库',
    WAREHOUSE_BRANDED_READY: '配件齐套可售',
    SALES_RESERVED: '预留客户',
    SALES_PAYMENT_VALIDATED: '付款校验完成',
    DELIVERY_APPROVAL: '交付前审批',
    DELIVERY_PAYMENT_COLLECTED: '交付前款项收齐',
    DELIVERY_READY: '待交付',
    DELIVERY_DELIVERED: '已交付',
    RENTAL_ACTIVE: '租赁中',
    AFTERSALES_TICKET: '售后工单中',
    AFTERSALES_RETURN_INITIATED: 'RMA 发起',
    AFTERSALES_RETURN_RECEIVED: '退货签收',
    AFTERSALES_AT_W6: '售后仓库归集',
    AFTERSALES_UNDER_REPAIR: '维修中',
    AFTERSALES_QUOTE_APPROVAL: 'OOW 报价审批',
    AFTERSALES_REPAIRED: '维修完成',
    CLOSED: '资产注销',
    CANCELLED: '已取消',
    RETURNED: '已退回',
  },
  // 6 部门 + 终态
  department: {
    SUPPLY: '采购供应链',
    LOGISTICS: '国际物流',
    WAREHOUSE: '仓储改装',
    SALES: '销售',
    DELIVERY: '交付',
    RENTAL: '租赁',
    AFTERSALES: '售后',
    TERMINAL: '终态',
  },

  // 生命周期事件类型
  event: {
    stage_changed: '阶段切换',
    held: '搁置',
    unheld: '恢复',
    location_moved: '位置变更',
    sn_activated: 'SN 激活',
    usage_type_changed: '用途变更',
    label_applied: '贴标',
    inspection_logged: '检查记录',
    readiness_completed: '入库就绪',
    payment_collected: '收款',
    delivery_signed: '签字交付',
    service_opened: '工单开单',
    service_closed: '工单关闭',
    imported_from_v5: 'v5 历史导入',
    note_added: '添加备注',
  },

  // 位置
  location: {
    label: '所在位置',
    placeholder: '请输入位置',
  },

  // 字段标签 — 基本信息
  fields: {
    ffsn: 'FF 序列号',
    supplierSn: '供应商序列号',
    model: '型号',
    sku: 'SKU',
    usageType: '用途类型',
    importType: '进口方式',
    currentStatus: '当前状态',
    deliveryStatus: '交付状态',
    location: '所在位置',
    issueTag: '问题标签',
    version: '版本',
    createdAt: '创建时间',
    updatedAt: '更新时间',
    status: '状态',
    contractStatus: '合同',
    amount: '金额',
    signedAt: '签约',
    createdShort: '创建',
    paymentNo: '付款单号',
    direction: '方向',
    relatedType: '关联',
    paymentMethod: '方式',
    paidAt: '到账时间',
    expectedDate: '预期日期',
    deliveryNo: 'Delivery No',
    requestType: '类型',
    ticketNo: '工单号',
    severity: '紧急度',
    issueTypeCode: '问题类型',
    openedAt: '开单时间',
    closedAt: '关单时间',
    rentalStart: '开始',
    rentalEnd: '结束',
    periodMonths: '租期(月)',
    monthlyRate: '月租金',
    poNo: 'PO 编号',
    sapPoNo: 'SAP PO',
    orderedAt: '下单日期',
    expectedAt: '预期到货',
    linkedRobots: '关联机器人',
    soNo: 'SO 编号',
    d365SoId: 'D365 SO',
    paymentInbound: '↓ 收',
    paymentOutbound: '↑ 付',
  },

  // 字段标签 — 采购信息
  purchase: {
    title: '采购信息',
    supplier: '供应商',
    poNumber: '采购订单号',
    purchaseDate: '采购日期',
    purchasePrice: '采购价格',
    eta: '预计到达日期',
    arrivalDate: '实际到达日期',
  },

  // 字段标签 — 销售信息
  sales: {
    title: '销售信息',
    customerName: '客户名称',
    salesOrderId: '销售订单号',
    salesPrice: '销售价格',
    deliveredDate: '交付日期',
  },

  // 字段标签 — 合同信息
  contract: {
    title: '合同信息',
    contractStatus: '合同状态',
    contractLink: '合同链接',
  },

  // 字段标签 — 财务信息
  finance: {
    title: '财务信息',
    cost: '成本',
    paymentMethod: '付款方式',
    paymentStatus: '付款状态',
    grossMargin: '毛利率',
  },

  // 字段标签 — 售后信息
  warranty: {
    title: '售后信息',
    warrantyStatus: '保修状态',
    serviceRecords: '服务记录',
    statusChangeLogs: '状态变更日志',
  },

  // 占位符
  placeholders: {
    ffsn: '请输入 FF 序列号',
    supplierSn: '请输入供应商序列号',
    model: '请选择型号',
    sku: '请输入 SKU',
    usageType: '请选择用途类型',
    importType: '请选择进口方式',
    supplier: '请输入供应商',
    poNumber: '请输入采购订单号',
    unknownStage: '未知阶段',
    customerName: '请输入客户名称',
    salesOrderId: '请输入销售订单号',
    issueTag: '请输入问题标签',
    search: '搜索序列号、型号、客户...',
    searchCodeName: '搜索 code / name',
    searchMyWork: '搜索 FFSN / 供应商 SN / 型号 / SKU / 客户',
    currentUser: '当前用户',
    holdReason: '搁置原因（如：等待配件）',
    inspectionIssue: '如：电池接触不良',
    poNoAutoOrManual: '自动生成或手工指定',
    orderedAtEmpty: '留空=今天',
    supplierSnHintIfPhysical: '如有实物可填，否则留空',
    reasonOptional: '原因（可选，写入事件 notes）',
  },

  // 阶段动作面板（StageActionPanel）
  stage: {
    currentStage: '当前阶段',
    deptProcessing: '{dept} 部门处理',
    heldPrefix: '已搁置：{reason}',
    holdResumeTitle: '搁置 / 恢复',
    defaultFormHint: '阶段 {stage} 暂无专属表单，可使用底部「切换阶段」推进，或前往对应业务表（PO/SO/Delivery/Service/Rental）填写详情。',
    deptNextStep: '{dept} · 下一步',
    nextStage: '下一阶段',
    arrivedAtOptional: '到货日期（可选）',
    notes: '备注',
    enterBonded: '进入保税',
    customsCleared: '清关完成',
    pdiResult: 'W1 PDI · 检验结果',
    foundIssue: '发现问题',
    issueDescription: '问题描述',
    passEnterModification: '通过 → 进入改装',
    procurementSourcing: '外采库',
    seriousIssueReturn: '严重问题 → 退供应商',
    warehouseReady: '仓储 · 已就绪',
    warehouseReadyHint: '贴标 7 项 + 配件 10 件检查需提前完成（数据填在「售后/装配」面板）。',
    availableReserveForSales: '可售 → 预留销售',
    salesPaymentValidation: '销售 · 付款校验',
    paymentValidationHintBefore: 'Guard G5：必须有 PaymentRecord(paymentStatus=PAID) 才能推进。详细付款录入走',
    paymentValidationHintAfter: '。',
    paymentList: '付款列表',
    paymentReceivedAdvance: '付款已到账 → 推进',
    deliveryPgi: '交付 · PGI 推进',
    deliveryPgiHintBefore: 'Guard 检查 DeliveryFulfillment.signedFormStatus=SIGNED + 付款 PAID。DeliveryFulfillment 详情走',
    deliveryPgiHintAfter: '。',
    deliveryList: '交付列表',
    signAndPaidDelivered: '签字 + PAID → 已交付',
    legalNextWhitelistGuard: '合法 next stage（白名单 + Guard 检查）：',
    selectTargetStagePlaceholder: '选择目标阶段',
    noLegalNextStage: '无合法下一阶段（终态）',
    advanceToStage: '推进到「{stage}」',
    poNumberLabel: 'PO 编号：',
    supplierLabel: '供应商：',
    notLinked: '未关联',
    // === Drawer 激活 SN 块 ===
    activateTitle: '当前是占位 SN — 收货时扫供应商物理标签激活',
    activatePlaceholderLabel: '占位 SN：',
    activateAfterHint: '激活后生成正式 FFSN（原占位 SN 保留至 placeholderSnOrig 字段供追溯）',
    activateScanBtn: '扫码激活 SN',
    activateSupplierSnLabel: 'Supplier SN（扫供应商物理标签）',
    activateSupplierSnPh: '例：SUP-12345 或扫码自动填入',
    activating: '激活中…',
    activateConfirm: '确认激活',
    activateFailed: '激活失败',
    activateMissingSn: '请输入扫码得到的 Supplier SN',
    // === Drawer footer ===
    drawerSectionTitle: '{stage} · 推进操作',
    escClose: 'Esc 取消',
    openDetail: '详情页',
    openDetailFull: '打开详情页',
    terminalStage: '终态 — 不可推进',
    advancing: '推进中…',
    advanceComplete: '完成并推进 → {label}',
    branchPickerHint: '该阶段有 {count} 个分支，请选择下一步：',
    advanceFailedDetail: '推进失败，请重试或前往详情页操作',
    // === V3FieldsPanel ===
    fieldSaved: '{field} 已保存',
    fieldSaveConflict: '数据已被他人修改，请刷新后重试',
    fieldSaveFailed: '保存失败: {msg}',
    fieldsThisStage: '本阶段需要填写',
    fieldsCount: '{count} 项',
    fieldsAllDetails: '机器人详细信息',
    fieldsFilledHint: '{filled}/{total} 已有数据 · 单击值可编辑',
    fieldCurrentBadge: '当前',
    fieldLoadingOptions: '加载选项…',
    fieldReadonly: '(只读)',
    // === 各 stage form 通用 ===
    processing: '处理中…',
    // WarehouseModificationForm
    modTitle: '改装 / 贴标 · 完成验证',
    modHint: '点击「完成」会一次性 verify 7 项贴标 (BRAND_PLATE / SERIAL_NUMBER / WARNING_LABEL / COMPLIANCE_CE / COMPLIANCE_FCC / BATTERY_INFO / QC_PASS) 并标记 10 件配件齐全。',
    modAdvance: '完成 → 配件齐套可售',
    // WarehouseBrandedReadyForm
    brandedHint: '点击预留会自动创建 1 个 SO 绑定此 robot；完整 SO（多 line / 折扣 / 合同）请走',
    brandedSalesLink: '销售单',
    brandedHintSuffix: '页。',
    brandedCustomer: '客户',
    brandedCustomerPh: '选择客户',
    brandedUnitPrice: '单价',
    brandedMissingCustomer: '请选择客户',
    brandedReuseExistingSo: '此设备已绑定销售单 {soNo}，复用现有 SO 直接预留（输入的客户/价格已忽略，如需改动请到销售单页编辑）',
    // SalesReservedForm
    salesAmountLabel: '付款金额',
    salesHint: '点击会自动按金额创建 PaymentRecord(PAID, FULL_PAYMENT_WIRE)，满足 G5 硬阻塞。完整付款（分期 / 多币种 / 银行流水关联）请走',
    salesHintSuffix: '页。',
    salesMissingSo: '未找到绑定此 robot 的 SO',
    // DeliveryReadyForm
    deliverHintBefore: '点击会自动创建 DeliveryFulfillment（signedFormStatus=SIGNED + acceptanceFormStatus=SIGNED）。完整签字单 / 验收单（带附件、PGI doc no）请走',
    deliverHintSuffix: '页。前置：robot 必须已绑定 SO + Payment 已 PAID（checkG5Payment 在 SALES_PAYMENT_VALIDATED 已校验）。',
    deliverMissingSo: '未找到绑定此 robot 的 SO，请先回到「配件齐套可售」预留客户',
    // DeliveredRmaBlock
    rmaTitle: '路径 A · 发起售后工单',
    rmaHint: '客户报障后开 ServiceTicket，推进到「售后工单中」(从那里可再推 RMA / 退货)。',
    rmaIssuePh: '问题描述（如：电池异常 / 关节故障）',
    rmaMissingIssue: '请填写问题描述',
    rmaSubmit: '创建工单 → 售后工单中',
    // DeliveredRentalBlock
    rentalTitle: '路径 B · 转租赁',
    rentalHint: '客户改为租赁付费，创建 ACTIVE RentalAgreement。客户从此 robot 已绑的 SO 取。',
    rentalPeriod: '租期（月）',
    rentalMonthlyRate: '月租金',
    rentalMissingSo: '未找到绑定此 robot 的 SO，无法定位客户',
    rentalSubmit: '创建租约并进入租赁',
    // DeliveredCloseBlock
    closeTitle: '路径 C · 资产注销',
    closeHint: '设备已报废 / 转售 / 永久退役。填 disposalType + 备注，自动设 retiredAt。',
    closeDisposalLabel: '处置方式',
    closeNotesPh: '备注（可选）',
    closeSubmit: '注销资产',
    closeDisposalScrapped: '报废 (SCRAPPED)',
    closeDisposalSoldOut: '转售 (SOLD_OUT)',
    closeDisposalDonated: '捐赠 (DONATED)',
    closeDisposalOther: '其它 (OTHER)',
    // V3 字段 tooltip
    fieldEditableColumn: '可编辑 (直接字段)',
    fieldEditableMetadata: '可编辑 (metadata.{key})',
  },

  // 工作台（my-work）
  myWork: {
    captionCurrentUserDept: '{user} · 部门：{depts}',
    yourDeptIs: '你负责的部门：{depts}',
    empty: '当前没有待处理机器人',
    viewAllList: '查看全量列表',
    allChip: '全部 ({count})',
    totalBanner: '台机器人在你的部门待处理，按阶段分组：',
    totalPrefix: '共',
    filterBannerPrefix: '筛选「',
    filterBannerMiddle: '」· ',
    filterBannerOfTotal: ' 台 / 共 ',
    filterBannerEnd: ' 台',
    selectAllGroup: '全选本组',
    deselectAllGroup: '取消全选',
    selectedCount: '已选 {count} 台',
    poGroupSummary: '· {count} 台占位',
    poStats: '（已收 {received} / 待收 {pending}）',
    expand: '展开 ▾',
    collapse: '收起 ▴',
    pendingFields: '待填 {count} 项',
    pendingFieldsTitle: '点击查看 {count} 个待填字段详情',
    bulkAdvanceLabel: '批量推进 → {label}',
    bulkAdvanceFailed: '批量推进失败: {msg}',
    bulkAdvancePicker: '批量推进到 …',
    bulkAdvanceResult: '批量推进：{ok} 台成功{failSuffix}',
    bulkAdvanceFailSuffix: ' · {fail} 台失败',
    bulkFillButton: '批量填字段',
    unknownError: '未知错误',
    holdLabel: '搁置',
    noLinkedPo: '(无关联 PO)',
  },

  // 6 个 L3 业务表 list 页（SimpleListPage 调用）
  lists: {
    salesOrders: {
      title: '销售单 (SO)',
      description: 'robot-manager L3 · 节点 12 销售',
      searchPlaceholder: '搜索 SO No / D365 SO ID',
    },
    purchaseOrders: {
      title: '采购单 (PO)',
      description: 'robot-manager L3 · 节点 01-03 供应链 · 创建后按 quantity 自动生成占位 RobotUnit',
      searchPlaceholder: '搜索 PO No / SAP PO No',
    },
    deliveries: {
      title: '交付申请 (Delivery)',
      description: 'robot-manager L3 · 节点 14 交付',
      searchPlaceholder: '搜索 Delivery No',
    },
    rentals: {
      title: '租赁合约 (Rental)',
      description: 'robot-manager L3 · 节点 17 租赁分支',
    },
    payments: {
      title: '付款记录 (Payment)',
      description: 'robot-manager L3 · 节点 P6.1 / 13 · 双向 INBOUND/OUTBOUND',
      searchPlaceholder: '搜索 Payment No',
    },
    serviceTickets: {
      title: '售后工单 (Service Tickets)',
      description: 'robot-manager L3 · 节点 ST 售后',
      searchPlaceholder: '搜索 Ticket No',
    },
  },

  // 交付类型字典
  deliveryType: {
    WILL_CALL: '客户自提',
    THREE_PL: '三方物流',
    WHITE_GLOVE: '白手套服务',
  },

  // QR 扫码组件
  qr: {
    scan: '扫码',
    scanTitle: '扫码定位机器人',
    startCamera: '启动摄像头扫码',
    closeCamera: '关闭摄像头',
    orManual: '或手输 ffsn',
    open: '打开',
    cameraError: '无法访问摄像头',
    notFound: '未找到机器人 ffsn={ffsn}',
    mobileHint: '手机端可直接用系统相机或微信扫一扫机器人身上的二维码，扫到的 URL 会自动跳转到该机器人详情页。',
    scanOrVisit: '扫码或访问',
    batchPrintTitle: '批量打印二维码（{count} 张）',
    batchPrintDesc: '扫码即进机器人详情页。A4 布局每页 4×6 = 24 张，标签约 65×45mm。',
    generating: '生成二维码中…',
    selectFirst: '请先选择要打印的机器人',
    closeDialog: '关闭',
    printCount: '打印 {count} 张',
  },

  // 操作按钮
  actions: {
    create: '新增机器人',
    edit: '编辑',
    delete: '删除',
    changeStatus: '变更状态',
    bulkChangeStatus: '批量变更状态',
    export: '导出',
    import: '导入',
    view: '查看',
    viewDetails: '查看详情',
    save: '保存',
    cancel: '取消',
    confirm: '确认',
    back: '返回',
    refresh: '刷新',
    new: '新建',
    search: '搜索',
    pasteImport: '粘贴导入',
    bulkEnable: '批量启用',
    bulkDisable: '批量停用',
    bulkDelete: '批量删除',
    clearSelection: '清除选择',
    undo: '撤销',
    discardDraft: '丢弃草稿',
    addLine: '添加行',
    advance: '推进',
    advanceTo: '推进到',
    next: '下一步',
    expand: '展开',
    collapse: '收起',
    creating: '创建中…',
    createShort: '创建',
    createAndOpenDetail: '创建并打开详情',
    hold: '搁置',
    resume: '恢复处理',
    manualSwitchStage: '手动切换阶段',
    advancedManualSwitch: '高级：手动切换阶段',
  },

  // 报表
  report: {
    inventory: '库存报表',
    sales: '销售报表',
    finance: '财务报表',
    totalCount: '总数量',
    byStatus: '按状态',
    byModel: '按型号',
    byLocation: '按位置',
    totalSales: '总销量',
    totalRevenue: '总收入',
    totalCost: '总成本',
    totalMargin: '总毛利',
    averageMargin: '平均毛利率',
    customerBreakdown: '客户分布',
    // KPI 卡片
    kpiTotalRobots: '机器人总数',
    kpiInStockHint: '在库 {warehouse} · 在途 {transit}',
    kpiSold: '已售出',
    kpiCustomers: '{count} 个客户',
    kpiRevenue: '总营收',
    kpiPerCustomer: '客均 {avg}',
    kpiGrossMargin: '毛利',
    kpiMarginRate: '{rate}% 利润率',
    // 区块标题
    sectionInventoryDist: '库存阶段分布',
    sectionTopCustomer: 'Top 客户营收',
    sectionCustomerDetails: '客户明细',
    sectionFinancialSummary: '财务摘要',
    sectionMonthlyTrend: '月度销售趋势',
    // 列名
    colCustomerName: '客户名称',
    colSoldCount: '已售台数',
    colRevenue: '营收',
    colAverage: '客均',
    // 空态/未知
    unknownCustomer: '未知',
    noData: '暂无数据',
    noSalesData: '暂无销售数据',
    unitSuffix: '台',
    // 财务摘要
    summaryRevenue: '总营收',
    summaryCost: '总成本',
    summaryMargin: '毛利',
    // 图表 legend
    legendRevenue: '营收',
    legendCount: '台数',
  },

  // 消息提示
  messages: {
    createSuccess: '机器人创建成功',
    createFailed: '创建失败',
    updateSuccess: '更新成功',
    updateFailed: '更新失败',
    deleteSuccess: '删除成功',
    deleteFailed: '删除失败',
    statusChangeSuccess: '状态变更成功',
    statusChangeFailed: '状态变更失败',
    bulkStatusChangeSuccess: '批量状态变更成功，已更新 {count} 台',
    bulkStatusChangeFailed: '批量状态变更失败',
    exportSuccess: '导出成功',
    exportFailed: '导出失败',
    importSuccess: '导入成功，共 {total} 条，成功 {success} 条，失败 {failed} 条',
    importFailed: '导入失败',
    confirmDelete: '确定要删除该机器人吗？此操作不可恢复。',
    confirmStatusChange: '确定要将状态变更为「{status}」吗？',
    confirmBulkStatusChange: '确定要将 {count} 台机器人的状态变更为「{status}」吗？',
    noDataMessage: '暂无数据',
    loadFailed: '加载失败',
    // 通用 toast / confirm
    updated: '已更新',
    held: '已搁置',
    resumed: '已取消搁置',
    advanced: '已推进',
    advanceFailed: '推进失败',
    actionFailed: '操作失败',
    saveSuccess: '保存成功',
    saveFailed: '保存失败',
    restored: '已恢复',
    restoreFailed: '恢复失败',
    fixErrors: '请先修正表单错误',
    draftRestored: '已自动恢复上次未提交的草稿',
    bulkEnabled: '已启用 {count} 条',
    bulkDisabled: '已停用 {count} 条',
    bulkDeleted: '已删除 {count} 条',
    bulkAllFailed: '全部失败（{count} 条）',
    bulkPartial: '成功 {success} / 失败 {failed}',
    bulkDeleteConfirm: '确认删除 {count} 条？此操作软删除可恢复。',
    deleteConfirmNamed: '确认删除「{name}」？',
    deletedNamed: '已删除 {name}',
    pasteEmpty: '请粘贴至少 1 行',
    pasteSuccess: '导入 {count} 条',
    selectModelSku: '请选择 Model 和 SKU',
    fillPoSupplier: '请填 PO 编号和供应商',
    oneLineRequired: '至少需要一行',
    lineSkuQtyPriceRequired: '第 {n} 行：SKU / 数量 / 单价均不能为空',
    dropdownLoadFailed: '加载下拉数据失败: {msg}',
    holdReasonRequired: '请填写搁置原因',
    selectTargetStage: '请选择目标阶段',
    requiredFieldTemplate: '{field} 必填',
    selected: '已选 {count} 条',
    robotCreatedNamed: '机器人 {ffsn} 创建成功',
    createFailedReason: '创建失败: {msg}',
    poCreatedSummary: 'PO {poNo} 创建成功 · {lines} 行 · {total} 台占位 RobotUnit',
    selectField: '请选字段',
    invalidNumber: '请输入有效数字',
    bulkFillResult: '批量填字段：{ok} 台成功{failSuffix}',
    bulkFillFailSuffix: ' · {fail} 台失败',
    importSummary: '总数 {total}，新增 {created}，更新 {updated}，跳过 {skipped}，失败 {failed}',
  },

  // 批量填字段 Dialog
  bulkFill: {
    title: '批量填字段',
    description: '对选中的 {count} 台机器人，统一填一个字段的同一个值。仅列出当前阶段可编辑的字段。',
    field: '字段',
    value: '值',
    selectField: '— 选择字段 —',
    noEditableField: '该阶段无可编辑字段',
    clearField: '— 留空（清空字段）',
    valuePlaceholder: '输入值（留空=清空字段）',
    largeBatchWarning: '⚠️ 选中 {count} 台 · 批量填会发 {count} 次 API 请求，可能较慢',
    submitting: '填写中…',
    applyToCount: '应用到 {count} 台',
  },

  // OptionsEditor 默认 i18n
  optionsEditor: {
    labelEn: 'English',
    labelEnPlaceholder: 'English label',
    labelZh: '中文',
    labelZhPlaceholder: '中文标签',
    enabled: '启用',
    addOption: '+ 添加选项',
    empty: '暂无选项，点击下方按钮添加',
    up: '上移',
  },

  // 后端业务错误码翻译（与 backend/.../errors/robot-manager.errors.ts 对应）
  errorCodes: {
    ROBOT_VERSION_CONFLICT: '数据已被其他用户修改，请刷新后重试',
    ROBOT_MUST_BIND_CUSTOMER_BEFORE_RESERVE: '预留设备前必须先绑定客户',
    ROBOT_MUST_SET_SALES_PRICE_BEFORE_SOLD: '标记为已售前必须设置销售价格',
    ROBOT_CUSTOMER_ID_REQUIRED_FOR_RETURN: '归还客户时必须绑定客户',
    ROBOT_SALES_PRICE_REQUIRED_FOR_RETURN: '归还客户时必须设置销售价格',
    ROBOT_REMARK_REQUIRED_FOR_CANCEL: '取消或报废必须填写原因',
    ROBOT_PO_NUMBER_IMMUTABLE: '采购订单号已设置，不可修改',
    ROBOT_SALES_ORDER_ID_IMMUTABLE: '销售订单号已设置，不可修改',
    ROBOT_EXCEL_MISSING_SHEET: 'Excel 文件中无工作表',
    ROBOT_EXCEL_MISSING_ROWS: 'Excel 文件中无数据行',
    ROBOT_FIELD_KEY_OR_LABEL_EN_REQUIRED: '请填写 Key 或英文标签',
    ROBOT_FIELD_KEY_GENERATION_FAILED: '无法从英文标签生成 Key，请改用含字母数字的文案或手动指定',
    ROBOT_FIELD_KEY_MUST_START_WITH_LETTER: '生成的 Key 必须以字母开头',
    ROBOT_FIELD_GROUP_REQUIRED_FOR_UNIT_SCOPE: 'scope=unit 时必须指定分组（group）',
    ROBOT_FIELD_OPTIONS_REQUIRED_FOR_SELECT: 'select 类型字段必须提供选项',
    ROBOT_FIELD_OPTION_REQUIRES_CODE_AND_LABEL: '字典选项必须同时包含 code 和 label',
    ROBOT_FIELD_OPTIONS_ONLY_FOR_SELECT: '选项仅适用于 select 类型字段',
    ROBOT_ATTACHMENT_NO_FILE: '请选择要上传的文件',
    ROBOT_ATTACHMENT_TOO_LARGE: '文件超过大小上限（50MB）',
    ROBOT_IMPORT_REQUIRED_MAPPING_MISSING: '必填字段未完成映射，请检查 FFSN / Model Code / SKU Code 是否都已选择对应列',
    ROBOT_IMPORT_MAPPING_COLUMN_NOT_FOUND: '映射中指定的 Excel 列不存在，请重新上传文件',
    ROBOT_IMPORT_MAPPING_DUPLICATE_COLUMN: '同一 Excel 列被映射到多个字段，请调整',
  },

  // 列表页
  listPage: {
    totalDevices: '设备总数',
    columnsConfig: '配置列',
    notAllowedForSelection: '（部分选中设备不支持）',
    selectedCount: '已选择 {count} 台',
    page: '第',
    pageOf: '页，共',
    pages: '页',
    total: '共',
    items: '条',
    prevPage: '上一页',
    nextPage: '下一页',
    pageSize: '每页',
    remarkRequired: '取消/报废必须填写原因',
    remarkOptional: '可选备注',
    bulkSuccess: '批量变更成功（{count} 台）',
    bulkPartial: '成功 {success}，失败 {failed}',
    selectDevices: '请先选择设备',
    selectTargetStatus: '请选择目标状态',
    targetStatus: '目标状态',
    remark: '备注',
    empty: '暂无数据，点右上角"新建"添加',
    pasteHintLine1: '从 Excel / CSV 复制多行后粘贴到下方。列顺序：',
    pasteHintLine2: '。每行一条记录，支持 Tab 或英文逗号分隔。',
    pasteExample: '示例：\nC-2026-001\\t客户 A\\tB2B\\t科技\\tCN\\tCNY',
    pasteImport: '粘贴导入 {title}',
    createTitle: '新建{title}',
    editTitle: '编辑{title}',
  },

  // 筛选
  filters: {
    all: '全部',
    filterByStatus: '按状态筛选',
    filterByModel: '按型号筛选',
    filterByLocation: '按位置筛选',
    filterBySupplier: '按供应商筛选',
    clearFilters: '清除筛选',
    showFilters: '显示筛选',
    hideFilters: '隐藏筛选',
    moreFilters: '更多筛选',
    filterByCustomer: '按客户筛选',
    filterBySku: '按 SKU 筛选',
    applyFilters: '应用',
    resetFilters: '重置',
  },

  // 表单
  form: {
    basicInfo: '基本信息',
    purchaseInfo: '采购信息',
    salesInfo: '销售信息',
    contractInfo: '合同信息',
    financeInfo: '财务信息',
    warrantyInfo: '售后信息',
    createTitle: '新增机器人',
    editTitle: '编辑机器人',
    selectStatus: '请选择状态',
    selectReason: '请输入变更原因',
    select: '请选择',
    required: '必填',
    saving: '保存中...',
    submitting: '提交中...',
    submit: '提交',
    processing: '处理中...',
    confirmDelete: '确认删除',
    confirmStatusChange: '确认状态变更',
    softDeleteHint: '此操作将软删除此设备，可通过后台恢复。',
    createHint: '新建设备初始状态为 ORDERED，FFSN 将由系统自动生成。',
    selectModelFirst: '请先选择型号',
    priceMustPositive: '价格不可为负',
    requiredField: '{field}为必填项',
    versionConflict: '数据已被其他人修改，请刷新后重试',
    noPermission: '没有权限修改该 section 的字段',
    defaultByStatus: '默认由状态推断',
    notFound: '设备不存在',
    // 通用 select 提示
    selectModel: '选择 Model',
    selectSku: '选择 SKU',
    selectSupplierOption: '选择供应商',
    selectCurrencyOption: '选择货币',
    loadingOption: '加载中…',
    noCurrencies: '无可用货币',
    notSpecifiedFillLater: '不指定 / 后续在详情页补',
    // NewRobotDialog
    newRobotTitle: '新建单台机器人',
    newRobotDesc: '走 PO 批量预留是主路径。本入口用于样机 / 研发机 / 历史数据迁移等边缘场景。创建后跳详情页继续填字段。',
    newRobotButton: '新建机器人',
    modelRequired: 'Model（必填）',
    skuRequired: 'SKU（必填）',
    usage: '用途',
    supplierOptional: '供应商（可选）',
    supplierSnOptional: '供应商 SN（可选）',
    usageSales: '销售（默认）',
    usageRnd: '研发样机',
    usageMarketing: '市场展示',
    // NewPoDialog
    newPoTitle: '新建采购单 (PO)',
    newPoDesc: '创建后自动按各行数量生成占位机器人，收货时扫码激活换正式 SN',
    newPoButton: '新建 PO',
    poNoLabel: 'PO 编号',
    orderedAtOptional: '采购日期（可选）',
    supplier: '供应商',
    currency: '货币',
    poLines: '采购行',
    poLinesSummary: '共 {lines} 行 · {qty} 台 · 合计 {currency} {total}',
    quantity: '数量',
    unitPriceWithCurrency: '单价 ({currency})',
    deleteThisLine: '删除该行',
    atLeastKeepOneLine: '至少保留一行',
    createPoButton: '创建 PO · {total} 台占位',
  },

  // 导航标签
  nav: {
    deviceManage: '全部设备',
    importExport: '导入导出',
    modelManage: '型号管理',
    skuManage: 'SKU 管理',
    importData: '数据导入',
    supplierManage: '供应商管理',
    customerManage: '客户管理',
    partnerManage: '合作伙伴',
    locationManage: '位置管理',
    dictionary: '字典管理',
    fieldDefs: '字段定义',
    settings: '系统配置',
    admin: '管理',
    groupArchive: '基础数据',
    groupConfig: '配置',
    groupTool: '工具',
    // v3 L3 业务表
    groupBusiness: '业务',
    purchaseOrders: '采购单',
    salesOrders: '销售单',
    deliveries: '交付',
    payments: '付款',
    serviceTickets: '售后工单',
    rentals: '租赁',
    // v3 流程图
    workflow: '业务流程图',
    groupReference: '参考',
    myWork: '快捷处理',
  },

  // 详情页 Tab
  tabs: {
    all: '全部',
    identity: '设备身份',
    supplyChain: '供应链',
    salesTab: '销售',
    financeTab: '财务',
    afterSales: '售后',
    compliance: '合规',
  },

  // 首页 Dashboard
  dashboard: {
    title: '概览',
    subtitle: '关键指标与近期动态',
    kpi: '关键指标',
    totalDevices: '总设备数',
    inStock: '在库',
    pendingDelivery: '待交付（已预留/已销售）',
    inRepair: '维修中',
    quickActions: '快捷入口',
    recentUpdates: '近期更新',
    viewAll: '查看全部',
  },

  // 附件
  attachments: {
    title: '附件',
    upload: '上传',
    uploading: '上传中...',
    download: '下载',
    remove: '删除',
    empty: '暂无附件。可上传合同、发票、验收单、图片等（单个文件最大 50 MB）',
    confirmDelete: '确定删除"{name}"？',
    uploadSuccess: '上传成功',
    uploadFailed: '上传失败',
  },

  // 详情页
  detail: {
    prevUnit: '上一台',
    nextUnit: '下一台',
    duplicate: '复制新建',
    duplicateHint: '已从该设备复制供应链/销售/财务等字段，FFSN 将重新自动生成',
    sectionEvents: '事件流',
    sectionCurrentAction: '当前操作',
    sectionIdentity: '身份',
    sectionQrCode: '二维码',
    notFound: '未找到',
    backToList: '返回列表',
    modelLabel: '型号',
    usageLabel: '用途',
    purchaseOrderLabel: '采购单',
    noEvents: '暂无事件',
    placeholderSn: '占位 SN',
    manufactureDate: '出厂日期',
  },

  // 全局搜索
  search: {
    placeholder: '搜索 FFSN、型号、SKU、客户、供应商、位置...',
    hintEmpty: '输入关键词开始搜索',
    hintClose: '关闭',
    hintEnter: '跳转',
    noResults: '未找到匹配结果',
    units: '设备',
    models: '型号',
    skus: 'SKU',
    suppliers: '供应商',
    customers: '客户',
    locations: '位置',
    triggerHint: '全局搜索',
  },

  // 对比视图
  compare: {
    title: '设备对比',
    field: '字段',
    unitsCount: '正在对比 {count} 台',
    diffHint: '不同值的行已高亮显示',
    noUnits: '请先在列表中选择设备',
    compareButton: '对比',
    compareMinHint: '请选择 2~4 台设备',
  },

  // Admin 通用
  admin: {
    create: '新建',
    edit: '编辑',
    operation: '操作',
    enabled: '启用',
    disabled: '禁用',
    confirmDeleteMsg: '确定删除？',
    saveFailed: '保存失败',
    name: '名称',
    code: 'Code',
    codeAutoGeneratedHint: '留空自动生成',
    status: '状态',
    searchPlaceholder: '搜索...',
    fillRequired: '请填写：{fields}',
    invalidJson: '{field}: 不是合法的 JSON（{reason}）',
    optionRowNoLabel: '{field}: 第 {row} 行需要填写至少一个标签',
    optionRowCannotGenerateCode: '{field}: 第 {row} 行标签无法生成 code（请改用含字母数字的文案）',
    noServiceRecords: '暂无维修记录',
    noStatusLogs: '暂无状态变更记录',
    completedAt: '完成于',
  },

  // Admin 字段定义
  fieldDefsPage: {
    title: '字段定义',
    tabs: {
      custom: '自定义字段',
      system: '系统字段',
    },
    descriptions: {
      custom: '机器人业务字段：业务方自助增删 metadata 字段',
      system: '系统字段：ServiceRecord / Location 等实体使用的下拉字典',
    },
    scope: {
      label: 'Scope（系统字段所属实体）',
      column: 'Scope',
      serviceRecord: '服务记录 (ServiceRecord)',
      location: '位置 (Location)',
      serviceRecordShort: '服务记录',
      locationShort: '位置',
    },
    columns: {
      key: 'Key',
      labelZh: '中文',
      type: 'Type',
      group: 'Group',
      options: 'Options',
      required: 'Required',
      inList: 'In List',
      optionsCount: '{count} 项',
    },
    fields: {
      keyLabel: 'Key（留空自动生成）',
      keyPlaceholder: 'e.g. poNumber, fccStatus',
      labelEn: 'English Label',
      labelZh: '中文标签（可选）',
      description: 'Description',
      type: 'Type',
      group: 'Group',
      options: '选项（仅 Type=Select）',
      optionsHint: '至少填写一个标签（中文或英文）',
      sortOrder: 'Sort Order',
      defaultValue: 'Default Value（可选）',
      defaultValuePlaceholder: 'e.g. USD / 1000 / true',
      required: 'Required',
      showInList: 'Show in list page',
    },
    optionsEditor: {
      labelEn: '英文',
      labelEnPlaceholder: '英文标签',
      labelZh: '中文',
      labelZhPlaceholder: '中文标签',
      enabled: '启用',
      addOption: '+ 添加选项',
      empty: '暂无选项，点击下方按钮添加',
      up: '上移',
    },
    searchPlaceholder: 'Search key or label...',
  },

  // Admin 字典
  dictionary: {
    title: '字典管理',
    description: '管理 10 类可配置分类标签，业务人员可自助维护',
    createItem: '新建字典项',
    editItem: '编辑字典项',
    category: '分类',
    sortOrder: '排序',
    labelZh: '中文',
    labelEn: '英文',
    codePlaceholder: '留空将从英文标签自动生成',
    codeHint: '留空则自动生成；创建后不可修改',
    labelZhPlaceholder: '如 教育',
    labelEnPlaceholder: '如 Education',
    codeAndLabelRequired: '请填写 code 和 label',
    labelRequired: '请填写中文标签',
    codeOrLabelEnRequired: '请填写 code 或英文标签（至少其一）',
    categories: {
      USAGE_TYPE: '用途类型',
      IMPORT_TYPE: '进口类型',
      DELIVERY_STATUS: '交付状态',
      CONTRACT_STATUS: '合同状态',
      PAYMENT_METHOD: '付款方式',
      PAYMENT_STATUS: '付款状态',
      WARRANTY_STATUS: '保修状态',
      SERVICE_TYPE: '维修类型',
      ISSUE_TAG: '故障标签',
      LOCATION_TYPE: '位置类型',
      CURRENCY: '货币',
    },
  },

  // Admin 设置
  settings: {
    title: '系统配置',
    description: 'FFSN 生成规则 / 状态默认位置映射 / 维修自动服务类型',
    saveAll: '保存全部',
    configSaved: '系统配置已保存',
    configLoadFailed: '加载配置失败',
    ffsn: {
      title: 'FFSN 生成规则',
      preview: '预览',
      prefix: '前缀',
      dateFormat: '日期格式',
      seqLength: '序号位数',
      resetPeriod: '重置周期',
      monthly: '每月重置',
      yearly: '每年重置',
      never: '永不重置',
    },
    statusLocation: {
      title: '状态 → 默认位置映射',
      description: '状态变更时自动设置默认位置。留空表示由 UI 按状态推断，不存储 locationId。',
      inferByUI: '（由 UI 推断）',
    },
    repairServiceType: {
      title: '进入 REPAIR 时自动创建的服务类型',
      description: '设备状态切换到 REPAIR 时会自动创建一条 ServiceRecord，此处设置默认类型。',
    },
  },

  // Admin 实体管理（models/skus/suppliers/customers/locations）
  entities: {
    models: { title: '型号管理', description: '管理机器人型号', brand: '品牌', skuCount: 'SKU / 设备', searchPlaceholder: '搜索 code / name / brand' },
    skus: { title: 'SKU 管理', description: '管理 SKU（挂在型号下）', parentModel: '所属型号', variant: '变体', defaultPrice: '默认售价', defaultCost: '默认成本', deviceCount: '设备数', searchPlaceholder: '搜索 code / name / variant' },
    suppliers: { title: '供应商管理', description: '管理机器人供应商', contactName: '联系人', contactPhone: '联系电话', contactEmail: '联系邮箱', address: '地址', paymentTerms: '付款条款', leadTimeDays: '交期(天)', deviceCount: '设备数', searchPlaceholder: '搜索 code / name / 联系人' },
    customers: { title: '客户管理', description: '管理机器人客户', industry: '行业', creditLimit: '信用额度', deviceLocationCount: '设备 / 位置', searchPlaceholder: '搜索 code / name / industry / 联系人' },
    locations: { title: '位置管理', description: '管理机器人所在位置（仓库 / 客户站点 / 保税区 / 服务中心 ...）', locationType: '位置类型', relatedCustomer: '关联客户', contact: '联系人', searchPlaceholder: '搜索 code / name / address' },
    description: '描述',
    imageUrl: '图片 URL',
    optional: '（可选）',
  },

  // 导入导出页
  importExport: {
    title: '导入导出',
    exportTitle: '导出 Excel',
    exportHint: '按筛选条件导出设备列表到 Excel 文件',
    importTitle: '导入 Excel',
    importHint: '批量导入设备数据，系统将校验 FFSN 唯一性、Enum 合法性和数值非负',
    statusFilter: '状态筛选',
    exportExcel: '导出 Excel',
    exporting: '导出中...',
    importExcel: '开始导入',
    importing: '导入中...',
    dropHint: '点击选择文件或拖拽到此处',
    fileTypes: '支持 .xlsx / .xls 格式',
    invalidFileType: '请上传 Excel 文件 (.xlsx / .xls)',
    selectFileFirst: '请先选择文件',
    importPartial: '导入完成：成功 {success} 条，失败 {failed} 条',
    resultTitle: '导入结果',
    totalRows: '总行数',
    success: '成功',
    failure: '失败',
    errorDetails: '错误详情',
    rowNum: '行号',
    fieldName: '字段',
    errorMsg: '错误信息',
    validationRules: '校验规则',
    rules: [
      'FFSN 必须唯一（Excel 提供，系统校验）',
      'Model Code / SKU Code 为必填，必须先在「型号管理」和「SKU 管理」建档',
      'Supplier Code / Customer Code / Location Code 若填写，必须先在对应管理页建档',
      '字典字段（Usage Type / Import Type / Delivery Status / Contract Status / Payment Method / Payment Status / Warranty Status / Issue Tag）使用字典 code',
      '状态值必须是合法状态（ORDERED / IN_TRANSIT / BONDED / IN_STOCK / RESERVED / DELIVERED）',
      '不允许直接导入为 REPAIR 或 CANCELLED 状态',
      '价格和成本不可为负数',
      '不同状态有不同必填字段要求（详见文档）',
    ],
    downloadTemplate: '下载模板',
    templateHint: '选择要导入的字段，系统会生成对应的 Excel 模板。FFSN / Model Code / SKU Code 为导入必填，始终包含',
    requiredColumns: '必填列（始终包含）',
    optionalFixedColumns: '可选系统列',
    dynamicFields: '动态字段',
    selectAll: '全选',
    selectNone: '全不选',
    // 列映射
    mappingTitle: '列映射',
    mappingHint: '请将 Excel 的列对应到系统需要的字段。已有数据的列会出现在下拉里，空列不参与映射。',
    fileStats: '{cols} 列，{rows} 行数据',
    fileStatsEmpty: '未选择文件',
    ourField: '系统字段',
    excelColumn: 'Excel 列',
    samplePrefix: '样本',
    pleaseSelect: '— 请选择 —',
    doNotImport: '不导入',
    autoMatched: '自动匹配',
    required: '必填',
    requiredMissing: '必填字段未映射',
    previewFailed: '预览失败，请检查文件',
    previewing: '解析中...',
    reupload: '重新选择文件',
    reset: '重置映射',
    // 冲突策略
    conflictStrategy: 'FFSN 已存在时',
    strategy_update: '更新已有数据',
    strategy_skip: '跳过',
    strategy_abort: '报错中止',
  },

  // 使用说明页
  help: {
    title: '使用说明',
    subtitle: '快速了解机器人管理系统',
    intro: {
      title: '这是什么系统',
      paragraph:
        '机器人管理系统以"一机一档"的方式记录每台机器人从下单、运输、入库、分配、交付到售后维修的全生命周期。业务人员、供应链、销售、财务各自维护自己负责的信息，系统自动串联状态流转、生成报表、支持 Excel 批量导入导出。',
      highlights: [
        { title: '单机维度', desc: '每行数据 = 一台机器人，通过 FFSN 唯一识别' },
        { title: '状态驱动', desc: '8 个生命周期状态，15 条合法转换，状态变更自动记录日志' },
        { title: '字段级权限', desc: '按岗位控制可写字段，避免误改他人负责的数据' },
      ],
    },
    concepts: {
      title: '核心概念',
      description: '开始使用前，先熟悉这几个词',
      items: [
        { term: 'FFSN', desc: 'FF 内部序列号，由系统按规则自动生成，全组织唯一，用于识别每台机器人' },
        { term: '型号 / SKU', desc: '型号是产品线（如 AEGIS），SKU 是型号下的具体规格（如 AEGIS-STD），每台机器人必须关联一个 SKU' },
        { term: '供应商 / 客户', desc: '独立的基础数据表，录入机器人时通过下拉关联，方便后续筛选和报表' },
        { term: '位置', desc: '仓库、客户站点、保税区、服务中心等实际位置，状态变更时系统会按配置自动设置默认位置' },
        { term: '字典', desc: '用途类型、付款方式、故障标签等可配置分类由管理员在字典管理中维护' },
        { term: '字段定义', desc: '除少数固定字段（FFSN、型号、状态等），其他业务字段由管理员在字段定义中自助维护：可新增/删除字段、设置类型（文本/数字/金额/日期/下拉等）、分组归类、配置校验规则，无需开发介入' },
      ],
    },
    stateFlow: {
      title: '状态流转',
      description: '10 个状态 × 19 条合法转换，图中全部展示',
      legendMain: '主流程',
      legendSpecial: '特殊路径',
      legendRepair: '维修分支',
      cancelNote: '备注：已下单 / 在途 / 保税仓 / 已销售 / 维修中 / 维修完成 这 6 个状态可转至「已取消」（图中未直接连线）',
      transitionsTitle: '按状态看可转到哪里',
      transitions: [
        { from: '已下单', options: '→ 在途（供应商发货） / 已取消（取消采购）' },
        { from: '在途', options: '→ 保税仓（到达保税区清关） / 在库（无需保税直接入库） / 已取消（物流异常）' },
        { from: '保税仓', options: '→ 在库（清关完成） / 已取消（海关扣押）' },
        { from: '在库', options: '→ 已预留（分配客户） / 维修中（库存发现故障）' },
        { from: '已预留', options: '→ 已销售（客户确认下单） / 在库（取消预留）' },
        { from: '已销售', options: '→ 已交付（交付客户） / 已取消（订单作废）' },
        { from: '已交付', options: '→ 维修中（客户报修）' },
        { from: '维修中', options: '→ 维修完成（修好待出库） / 已取消（判定报废）' },
        { from: '维修完成', options: '→ 已交付（归还原客户） / 在库（重新入库可再分配） / 已取消（验收不通过）' },
        { from: '已取消', options: '终态，不可再转出' },
      ],
    },
    tasks: {
      title: '我要做什么',
      description: '点击下方卡片直接跳转到对应功能页',
      create: '录入新设备',
      createDesc: '手动创建一台机器人，选择型号/SKU/供应商，FFSN 自动生成',
      list: '查看设备列表',
      listDesc: '搜索、筛选、按状态批量变更、导出当前视图',
      reports: '查看报表',
      reportsDesc: '库存 / 销售 / 财务三张报表，按状态、型号、位置、客户维度汇总',
      models: '维护型号 / SKU',
      modelsDesc: '新增产品线或规格，录入设备时从这里的下拉选择',
      suppliers: '维护供应商',
      suppliersDesc: '供应商基础数据：联系方式、付款条款、交期',
      customers: '维护客户',
      customersDesc: '客户基础数据：联系方式、信用额度、关联站点',
      importExport: '批量导入 / 导出',
      importExportDesc: 'Excel 模板批量录入新设备，或按筛选条件导出数据',
      fieldDefs: '字段定义',
      fieldDefsDesc: '业务方自助增删 metadata 字段 + 管理系统字典',
    },
    roles: {
      title: '角色与职责',
      description: '5 个角色各自在业务链路中的定位',
      items: [
        { code: 'Administrator', name: '系统管理员', scope: '全局', desc: '跨模块管理所有数据和权限' },
        { code: 'RobotManagerRLE', name: '机器人全生命周期工程师', scope: '全流程', desc: '对机器人全链路负责，可执行所有操作（包括删除和全量编辑）' },
        { code: 'RobotManagerSupplyChain', name: '供应链', scope: 'Identity + Supply Chain', desc: '采购下单、进口清关、收货入库；管理 PO、到货日期、物流状态' },
        { code: 'RobotManagerSales', name: '销售', scope: 'Sales', desc: '客户绑定、合同签订、交付跟进；维护销售价和合同状态' },
        { code: 'RobotManagerFinance', name: '财务', scope: 'Finance', desc: '成本核算、发票、回款；维护成本和付款状态' },
      ],
      permissionsTitle: '权限矩阵',
      permissionsNote: '✅ 表示该角色可操作；— 表示不可。字段级权限（write:xxx）只影响对应 Tab 的编辑能力，查看不受限。',
      permissionMatrix: {
        abilityHeader: '能力',
        view: '查看',
        create: '新建',
        delete: '软删除',
        status: '状态变更',
        identityAndSupplyChain: '编辑：身份 / 供应链',
        sales: '编辑：销售',
        finance: '编辑：财务',
        afterSalesAndCompliance: '编辑：售后 / 合规',
        manageFields: '管理字段定义 / 系统配置',
        manageModels: '管理型号 / SKU',
        manageSuppliers: '管理供应商',
        manageCustomers: '管理客户',
        manageLocations: '管理位置',
      },
    },
    setupFlow: {
      title: '基础数据维护',
      description: '按"谁最懂就谁维护"的原则——不同基础数据由不同角色自助维护',
      groups: [
        {
          name: 'Admin / RLE — 系统级配置',
          scope: '稳定，修改频率低',
          items: [
            { name: '系统设置', icon: 'settings', desc: 'FFSN 规则、状态默认位置、维修自动服务类型', path: '/robot-manager/admin/settings' },
            { name: '字段定义', icon: 'sliders', desc: '自定义业务字段 + 管理系统字典（服务类型/位置类型）', path: '/robot-manager/admin/fields' },
            { name: '型号 / SKU', icon: 'package', desc: '产品线和具体规格，录入机器人时必选', path: '/robot-manager/admin/models' },
          ],
        },
        {
          name: 'SupplyChain — 供应侧',
          scope: '频率中等，每新增供应商或仓库维护一次',
          items: [
            { name: '供应商', icon: 'truck', desc: '采购来源、联系方式、付款条款、交期', path: '/robot-manager/admin/suppliers' },
            { name: '位置（仓库/保税）', icon: 'map-pin', desc: '内部仓库、保税区、供应商处', path: '/robot-manager/admin/locations' },
          ],
        },
        {
          name: 'Sales — 客户侧',
          scope: '频率高，每签新客户维护一次',
          items: [
            { name: '客户', icon: 'users', desc: '客户基础数据：信用额度、行业分类', path: '/robot-manager/admin/customers' },
            { name: '位置（客户站点）', icon: 'map-pin', desc: '客户项目现场、分公司等交付地', path: '/robot-manager/admin/locations' },
          ],
        },
      ],
      note: '基础数据可按角色自助维护。停用不删除，保证历史机器人数据引用完整。',
    },
    businessFlow: {
      title: '机器人生命周期',
      description: '基础数据就绪后的日常高频操作，5 个典型协作场景',
      scenarios: [
        {
          name: '新机销售全链路（最常见）',
          desc: 'ORDERED → IN_TRANSIT → IN_STOCK → RESERVED → SOLD → DELIVERED',
          steps: [
            { actor: 'SupplyChain', action: '新建设备，填 PO 号和采购价' },
            { actor: 'SupplyChain', action: '发货后推进到 IN_TRANSIT' },
            { actor: 'SupplyChain', action: '收货后推进到 IN_STOCK（自动入库到 HQ_FZ）' },
            { actor: 'Sales', action: '分配客户 → RESERVED（必须先绑客户）' },
            { actor: 'Sales', action: '签合同 + Finance 确认收款 → SOLD（必须设销售价）' },
            { actor: 'Sales', action: '物流送达 → DELIVERED（自动填 deliveredDate）' },
          ],
        },
        {
          name: '库存故障检修',
          desc: 'IN_STOCK → REPAIR → REPAIRED → IN_STOCK',
          steps: [
            { actor: 'RLE', action: '巡检发现故障，标 issueTagCode，推进到 REPAIR' },
            { actor: 'RLE', action: '系统自动创建 ServiceRecord' },
            { actor: 'RLE', action: '维修完成 → REPAIRED' },
            { actor: 'RLE', action: '重新入库 → IN_STOCK（自动解绑客户，可再分配）' },
          ],
        },
        {
          name: '客户报修 → 维修 → 归还',
          desc: 'DELIVERED → REPAIR → REPAIRED → DELIVERED',
          steps: [
            { actor: '客户', action: '报修请求' },
            { actor: 'RLE', action: '推进到 REPAIR（保留 customerId，设备送回 HQ_FZ）' },
            { actor: 'RLE', action: '维修完成 → REPAIRED' },
            { actor: 'RLE', action: '归还客户 → DELIVERED（自动填新 deliveredDate）' },
          ],
          note: '智元换货：ServiceRecord 的 serviceTypeCode 选 ZHIYUAN_EXCHANGE，其他流程相同。',
        },
        {
          name: '采购取消 / 物流异常',
          desc: 'ORDERED / IN_TRANSIT / BONDED → CANCELLED',
          steps: [
            { actor: 'SupplyChain 或 RLE', action: '发现问题（供应商违约 / 物流丢失 / 海关扣押）' },
            { actor: '操作者', action: '推进到 CANCELLED（必须填 remark）' },
          ],
        },
        {
          name: '销售撤销（退款）',
          desc: 'SOLD → CANCELLED',
          steps: [
            { actor: 'Sales', action: '客户退款，推进到 CANCELLED（必须填 remark）' },
          ],
          note: '不支持 SOLD → RESERVED 回退；客户改签需新建设备。',
        },
      ],
    },
    dailyOps: {
      title: '监控分析与日常操作',
      description: '运维态操作：查看、筛选、批量处理、分析趋势',
      items: [
        { name: '列表筛选 + 搜索', desc: '按 FFSN / 状态 / 型号 / 客户 / 位置多维筛选；列显示偏好记忆到浏览器' },
        { name: '报表查看', desc: '库存 / 销售 / 财务三张报表，StatCard 点击下钻到筛选列表' },
        { name: '批量状态变更', desc: '勾选多台 → 选目标状态 → 逐台独立校验（不会因一台失败回滚全部）' },
        { name: 'Excel 导入导出', desc: '模板下载 / 按筛选条件导出；导入不允许直接 REPAIR / CANCELLED 状态' },
        { name: '复制新建', desc: '从已有设备快速复制（不复制 FFSN / PO / 销售订单号）' },
        { name: '附件管理', desc: '每台设备可上传合同扫描件 / 发货单 / 维修报告' },
        { name: '全局搜索', desc: '按 / 或 Cmd+K 快速跳转到任何 FFSN / 型号 / 客户' },
        { name: '状态变更日志', desc: '详情页底部，完整记录 from→to、操作人、时间、备注' },
      ],
      shortcutsTitle: '快捷键',
      shortcuts: [
        { key: '/', desc: '打开全局搜索' },
        { key: 'Cmd+K / Ctrl+K', desc: '打开全局搜索' },
        { key: 'c', desc: '从任意页跳转到创建页' },
        { key: '?', desc: '打开本使用说明' },
      ],
    },
    roadmap: {
      title: '未来规划',
      description: '机器人管理模块的 3 个迭代方向（持续演进）',
      phases: [
        {
          name: 'AI 增强',
          icon: 'ai',
          items: [
            { title: '智能状态推进', desc: '对接物流/支付接口自动推状态，业务方只需确认' },
            { title: '维修知识库', desc: 'LLM 索引历史 ServiceRecord，根据故障现象推荐解决方案' },
            { title: '客户流失预警', desc: '基于使用时长 + 保修期预测续约概率' },
            { title: 'Excel 导入 AI 纠错', desc: '智能列名映射 + 错误行建议' },
          ],
        },
        {
          name: '效率优化',
          icon: 'speed',
          items: [
            { title: '移动端适配', desc: '响应式 / PWA，扫码快速查询和变更状态' },
            { title: '批量操作增强', desc: '批量编辑字段、批量分配客户、批量打印条码' },
            { title: '自定义报表', desc: '可视化报表构建器 + 按角色默认看板' },
            { title: '审计时间线', desc: '机器人完整履历统一视图（状态 + 维修 + 编辑事件）' },
          ],
        },
        {
          name: '生态集成',
          icon: 'integrate',
          items: [
            { title: 'ERP 对账', desc: '每日自动同步销售额/成本到 SAP / 金蝶 / 用友' },
            { title: 'WMS 联动', desc: '仓储系统实时同步库位，FFSN 扫码确认' },
            { title: '物流实时追踪', desc: '对接顺丰 / DHL / 菜鸟等物流 API' },
            { title: 'CRM 集成', desc: '交付后自动发满意度调查，反馈回写 Salesforce / HubSpot' },
          ],
        },
      ],
      footer: '每季度 review 一次；收到建议请 PR 到 docs/modules/robot-manager/12-roadmap.md',
    },
  },

  // 数据导入工具（M1: PO；M2+ 扩展）
  import: {
    pageTitle: '数据导入',
    pageSubtitle: '通过 Excel 模板批量录入机器人模块的数据',
    comingSoon: '即将上线',
    tabs: {
      purchaseOrder: '采购单 (PO)',
      robotUnit: '机器人 (RobotUnit)',
      master: '主数据',
      serviceTicket: '售后工单',
    },
    steps: {
      template: '下载模板',
      upload: '上传文件',
      review: '预览校验',
      done: '完成',
    },
    common: {
      back: '返回上一步',
    },
    template: {
      title: '下载 {type} 模板',
      desc: '模板包含字段说明和示例。请按列填写,每行一条记录;同一 PO 的多行用相同 poNo。',
      downloadBtn: '下载模板 (.xlsx)',
      nextBtn: '我已下载,下一步',
    },
    upload: {
      title: '上传 Excel',
      desc: '单批最多 1000 行,文件 ≤ 10 MB。上传后系统会做字段、引用、业务规则校验。',
      uploading: '上传并校验中...',
    },
    review: {
      title: '校验结果',
      totalRows: '总行数',
      successRows: '成功',
      errorRows: '错误',
      warningRows: '警告',
      errorAlertTitle: '存在错误行,无法导入',
      errorAlertDesc: '请下载错误报告,修正后重新上传(系统在 24 小时内对同文件去重)。',
      errorListTitle: '错误明细 (前 50 行)',
      moreErrors: '还有 {n} 行错误未显示,请下载完整错误报告查看',
      confirmBtn: '确认导入',
      downloadErrorReportBtn: '下载错误报告',
      cancelBtn: '取消',
    },
    done: {
      title: '导入完成',
      summary: '已成功导入 {rows} 行,生成 {records} 条记录',
      restartBtn: '继续导入新文件',
    },
    toast: {
      templateDownloaded: '模板已下载',
      templateDownloadFailed: '模板下载失败',
      fileTooLarge: '文件超过 10 MB 限制',
      previewFailed: '校验失败',
      confirmFailed: '导入失败',
      importCompleted: '导入成功',
      errorReportFailed: '错误报告下载失败',
      deduped: '检测到 24 小时内同文件已上传,沿用上次批次',
    },
  },
};

export type RobotManagerTranslations = typeof robotManagerZh;
