/**
 * 租赁业务台账 — 字段标注规格（数据来源 + 计算方式）
 * 供 build-annotation-source.mjs 生成 annotation-source / PRD 字段说明。
 */
export const FIELD_ANNOTATION_SPEC = {
  'lbl-col-status': {
    source: '收款记录模块中关联到本账单的分配金额、账单应收合计。',
    formula: '分配金额 ≥ 应收合计且应收 > 0 → 已收款；0 < 分配金额 < 应收 → 部分收款；未关联收款 → 未收款。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-payment-due': {
    source: '账单起始日期（优先）或提车日期作为开始计费日；账单所属年月。',
    formula: '首期账单应付款日 = 开始计费日；后续每期 = 账单所属自然月 5 日。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-plate': {
    source: '车辆档案（按车牌匹配品牌、型号）。',
    formula: '导入/新增台账时按车牌号反写车辆信息。',
    editable: '只读展示（车牌 + 车型两行）。',
  },
  'lbl-col-customer': {
    source: '租赁合同（按账单日期 + 车牌匹配客户、项目）。',
    formula: '匹配当前车辆在账期内的有效合同，带出客户名称与项目名称。',
    editable: '只读展示（客户 + 项目两行）。',
  },
  'lbl-col-value-added-service': {
    source: '租赁合同签订时勾选的增值服务项目。',
    formula: '按车牌匹配合同增值服务配置，多项服务分行展示。',
    editable: '只读。',
  },
  'lbl-col-exemption-policy': {
    source: '租赁合同或业务手工维护。',
    formula: '手选枚举：帕力安18T里程优惠政策、帕力安4.5T里程优惠政策。',
    editable: '未归档/草稿状态可手选。',
  },
  'lbl-col-pickup-date': {
    source: '交车管理 / 运维 E 签宝签字完成时间。',
    formula: '取该车辆实际交车办结时间。',
    editable: '只读。',
  },
  'lbl-col-contract-start-date': {
    source: '提车日期（交车办结时间）。',
    formula: '合同生效日期 = 提车日期（YYYY-MM-DD），系统自动反写。',
    editable: '系统自动反写，只读。',
  },
  'lbl-col-contract-end-date': {
    source: '合同租期月数 + 提车日期，或合同约定的到期日。',
    formula: '日期模式：取合同存储的 contractEndDate；租期模式：提车日 + leaseTermMonths 个月。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-period-start-date': {
    source: '账单年月、提车日期。',
    formula: '月前已提车 → 当月 1 日；月内提车 → 提车日；月后提车 → 空（calcPeriodStartDate）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-return-date': {
    source: '退车管理登记的退车日期。',
    formula: '取该车牌退车办结日期；未退车为空。',
    editable: '只读。',
  },
  'lbl-col-avg-days': {
    source: '账单月内租赁天数、当月自然日天数。',
    formula: '平均天数 = 账单月内租赁天数 ÷ 当月自然日天数，保留两位小数（calcAvgDays）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-deposit': {
    source: '提车应收款 / 合同保证金。',
    formula: '与创建合同时保证金、提车应收款中该车辆保证金一致。',
    editable: '只读。',
  },
  'lbl-col-contract-rent': {
    source: '租赁合同月租金标准。',
    formula: '签订合同时该车辆的月租金（合同标的租金）。',
    editable: '合同带入，只读。',
  },
  'lbl-col-receivable-total': {
    source: '应收租金、保险上浮费、运维费（收入侧）、其他收入、里程/其他减免。',
    formula: '应收合计 = 应收租金 + 保险上浮费 + 运维费（收入侧）+ 其他收入 − 里程减免 − 其他减免（calcReceivableTotal）。',
    editable: '系统自动汇总，只读。',
  },
  'lbl-col-receivable-rent': {
    source: '合同标的租金、合同付款周期月数。',
    formula: '应收租金 = 合同标的租金 × 付款周期月数（1/3/6/12）（calcReceivableRent）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-monthly-income': {
    source: '月度租金、维保包干、保险上浮费、运维费（收入侧）、其他收入、减免项。',
    formula: '月度收入 = 月度租金 + 维保包干收入 + 保险上浮费 + 运维费（收入侧）+ 其他收入 − 里程减免 − 其他减免（calcMonthlyIncome）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-monthly-rent': {
    source: '合同标的租金。',
    formula: '月度租金 = 合同标的租金（calcMonthlyRent）。',
    editable: '只读。',
  },
  'lbl-col-maintenance-income': {
    source: '合同维保包干配置、账单里程。',
    formula: '勾选维保包干时：单价（元/km）× 里程数；未勾选为 0（calcMaintenanceIncome）。',
    editable: '包干未勾选时不可编辑。',
  },
  'lbl-col-insurance-surcharge': {
    source: '事故台账关联的保险上浮费。',
    formula: '关联事故单后汇总 linkedAccidentIds 对应上浮费；最新账单未关联时显示警示。',
    editable: '关联后自动汇总，支持多选事故单。',
  },
  'lbl-col-ops-income': {
    source: '还车应结款费用明细（运维相关 10 项）。',
    formula: '汇总账单月内该车牌还车应结款中清洗费、未结算保养、未结算维修等 10 项费用（sumReturnSettlementOpsFeeForBill）。',
    editable: '只读，系统自动汇总。',
  },
  'lbl-col-other-income': {
    source: '行内其他收入明细（事由、金额、备注）。',
    formula: '多条明细金额合计计入应收与月度收入（sumLineItems）。',
    editable: '草稿状态可编辑明细。',
  },
  'lbl-col-mileage-deduction': {
    source: 'BI 里程（GPS）、里程减免单价。',
    formula: '里程减免 = GPS 里程 × 单价；有 GPS 时默认 0.5 元/km，无 GPS 为 0（calcMileageDeduction）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-other-deduction': {
    source: '行内其他减免明细。',
    formula: '多条明细金额合计，从应收与月度收入扣减（sumLineItems）。',
    editable: '草稿状态可编辑明细。',
  },
  'lbl-col-received-amount': {
    source: '收款记录模块关联分配金额。',
    formula: '关联收款单后按分配计入金额汇总，不超过应收合计（calcReceivedAmountFromReceipts）。',
    editable: '通过「关联收款」操作维护。',
  },
  'lbl-col-unreceived': {
    source: '应收合计、实收金额。',
    formula: '未收金额 = 应收合计 − 实收金额（calcUnreceived）。',
    editable: '系统自动计算，不可手工录入。',
  },
  'lbl-col-invoice-date': {
    source: '关联收款记录中的开票信息。',
    formula: 'resolveInvoiceDateFromReceipts 取关联收款单开票日期。',
    editable: '只读。',
  },
  'lbl-col-actual-payment': {
    source: '关联收款记录的到账日期。',
    formula: '有关联收款时取到账记录付款日期；未关联为空。',
    editable: '只读。',
  },
  'lbl-col-payment-method': {
    source: '合同付款周期月数。',
    formula: '1→月度预付，3→季度预付，6→半年预付，12→年度预付（resolvePaymentMethod）。',
    editable: '只读。',
  },
  'lbl-col-vehicle-standard-cost': {
    source: '车型成本明细 / 车牌标准成本配置（PLATE_STANDARD_COST）。',
    formula: '按车型维护的固定月标准成本。',
    editable: '只读。',
  },
  'lbl-col-vehicle-actual-cost': {
    source: '车辆标准成本、账单月内租赁天数。',
    formula: '车辆实际成本 = 标准成本 × 租赁天数 / 30（calcVehicleActualCost）。',
    editable: '系统自动计算，只读。',
  },
  'lbl-col-insurance-fee': {
    source: '保险采购金额、保险有效天数、账单月租赁天数。',
    formula: '保险费 =（采购金额 / 有效天数）× 租赁天数，四舍五入两位（calcInsuranceFee）。',
    editable: '只读。',
  },
  'lbl-col-hydrogen-fee': {
    source: '氢费明细台账、合同氢费承担方式。',
    formula: '合同为「我司承担」时，汇总账单月内该车牌氢费（sumHydrogenFeeForBill）；客户承担不计入。',
    editable: '只读。',
  },
  'lbl-col-ops-cost': {
    source: '维修保养明细台账。',
    formula: '汇总账单月内该车牌维修保养明细「费用总计（含税）」（sumMaintenanceLedgerOpsFeeCostForBill）。',
    editable: '只读。',
  },
  'lbl-col-brokerage-fee': {
    source: '行内手工录入。',
    formula: '直接存储 brokerageFee 字段。',
    editable: '草稿可编辑。',
  },
  'lbl-col-other-cost': {
    source: '行内手工录入。',
    formula: '直接存储 otherCost；前方有其他收入时本项必填。',
    editable: '草稿可编辑。',
  },
  'lbl-col-gps-mileage': {
    source: 'BI 里程数据（bi-mileage.json / 车机 GPS）。',
    formula: 'lookupBiMileage(车牌, 年, 月) 取账单期里程。',
    editable: '只读。',
  },
  'lbl-col-deduction-detail': {
    source: '行内手工录入。',
    formula: '存储 otherDeductionDetail 文本。',
    editable: '草稿可编辑。',
  },
  'lbl-col-asset-ownership': {
    source: '车辆档案资产归属。',
    formula: '按车牌从 PLATE_ASSET_OWNER / 车辆档案反写。',
    editable: '只读。',
  },
  'lbl-col-signing-company': {
    source: '租赁合同甲方。',
    formula: '按车牌匹配签订合同时甲方名称（PLATE_SIGNING_COMPANY）。',
    editable: '只读。',
  },
  'lbl-col-remark': {
    source: '行内手工录入。',
    formula: '存储 remark 文本。',
    editable: '草稿可编辑。',
  },
  'lbl-col-archive-status': {
    source: '账单归档状态字段 archiveStatus。',
    formula: '草稿 / 未归档 / 已归档；工具栏「保存」「设置为归档」批量变更。',
    editable: '仅草稿可编辑业务字段。',
  },
  'lbl-col-maintainer-time': {
    source: '台账行维护记录。',
    formula: '展示最近一次保存/维护时间（maintainerTime）。',
    editable: '系统记录，只读。',
  },
  'lbl-col-dept': {
    source: '台账行业务部门、业务员字段。',
    formula: '导入或维护时写入，列表以「部门 + 业务员」两行展示。',
    editable: '导入/草稿可维护。',
  },
  'lbl-col-payment-date': {
    source: '收款记录关联反写。',
    formula: '关联租赁订单收款后反显收款日期。',
    editable: '只读。',
  },
};
