export default { app: { name: 'Hotel OMS', theme: '主题', language: '语言', navigationAria: '预订订单导航', healthUp: '后端已连接', healthDown: '后端未连接', healthChecking: '检查中', }, auth: { loginTitle: '登录系统', loginSubtitle: '使用系统账号进入 TH Hotel 预订处理工作台。', username: '用户名', password: '密码', loginSubmit: '登录', loggingIn: '登录中', loginFailed: '用户名或密码错误。', logout: '退出登录', currentUser: '当前用户', currentHotel: '当前酒店', unauthorizedTitle: '没有访问权限', unauthorizedMessage: '当前账号没有访问这个页面或操作的权限,请联系管理员调整角色权限。', backHome: '返回可访问页面', }, nav: { orders: '订单列表', taskQueue: '预订事项', manualInvoice: '手工开票', roomingList: '房表生成', sourceMessages: '消息来源', systemStatus: '系统状态', orderDetail: '订单总览', taskDetail: '订单事项办理', sourceMessageConversation: '邮件会话', sourceNotificationDetail: '来源通知详情', debugEml: 'Debug EML', systemSettings: '系统设置', systemUsers: '用户管理', systemRoles: '角色权限', systemMenus: '菜单管理', systemHotels: '酒店管理', systemReservationCatalogs: '预订目录', systemAudits: '管理审计', }, common: { loading: '加载中', noData: '暂无数据', endpointPending: '接口待接入', endpointMissing: '接口待补', all: '全部', unknownStatus: '未知状态', unknownTaskType: '未知任务类型', unknownTaskSubtype: '未知任务细分', unknownReadonlyReason: '暂不可处理', unknownActorType: '未知操作者', unknownAuditAction: '未知操作', unknownOperation: '未知操作', previousPage: '上一页', nextPage: '下一页', pageStatus: '第 {current} / {total} 页', pageSize: '每页', refresh: '刷新', saving: '保存中', cancel: '取消', }, notFound: { title: '页面不可用', message: '当前菜单或链接对应的前端页面尚未接入。', backHome: '返回可访问页面', }, systemAdmin: { title: '系统设置', subtitle: '维护用户、角色权限、菜单和酒店资料', navigationAria: '系统设置导航', common: { keyword: '关键词', viewDetail: '查看详情', selectRow: '选择一行查看详情', create: '新增', save: '保存', edit: '编辑', yes: '是', no: '否', }, status: { ACTIVE: '启用', DISABLED: '禁用', }, users: { title: '用户筛选', tableTitle: '用户数据', detailTitle: '用户详情', createTitle: '新增用户', totalSuffix: '个用户', keywordPlaceholder: '用户名 / 展示名 / 邮箱', userStatus: '用户状态', username: '用户名', initialPassword: '初始密码', displayName: '展示名称', email: '邮箱', phone: '手机号', roles: '角色', hotels: '授权酒店', defaultHotel: '默认酒店', saveRoles: '保存角色', saveHotels: '保存酒店授权', resetPassword: '重置密码', temporaryPassword: '临时密码:', created: '用户已创建', columns: { user: '用户', status: '状态', roles: '角色', defaultHotel: '默认酒店', }, }, roles: { title: '角色筛选', tableTitle: '角色数据', detailTitle: '角色详情', createTitle: '新增自定义角色', totalSuffix: '个角色', keywordPlaceholder: '角色代码 / 角色名称', roleStatus: '角色状态', roleCode: '角色代码', roleName: '角色名称', builtinReadonly: '内置角色由系统启动矩阵维护,不能在页面修改。', savePermissions: '保存权限', columns: { role: '角色', status: '状态', builtin: '内置', permissions: '权限', users: '用户数', }, }, menus: { title: '菜单筛选', managementTitle: '菜单管理', managementHint: '维护侧边栏菜单的父子层级、排序、可见性和权限入口。', createTitle: '新增菜单', editTitle: '编辑菜单', tableTitle: '菜单数据', totalSuffix: '个菜单', keywordPlaceholder: '菜单代码 / 名称 / 路由', menuStatus: '菜单状态', visibleOnly: '只看可见菜单', treeWarningTitle: '菜单树存在异常配置', treeWarningHint: '后端已返回菜单树,但以下配置需要管理员确认。', treeTitle: '菜单树', treeDirty: '树结构有未保存调整', treeDirtyActionBlocked: '请先保存树结构后再继续操作。', treeWarningSaveBlocked: '请先处理菜单树异常,确认父级关系正确后再保存树结构。', saveTreeOrder: '保存树结构', menuCode: '菜单代码', menuName: '菜单名称', parentMenu: '上级菜单', rootMenu: '根菜单', componentKey: '组件标识', iconKey: '图标标识', unknownRoute: '未知路由', unknownRouteHint: '当前路由未被前端识别,菜单可能会进入未接入页面。', permissionLoadFailed: '权限列表加载失败,权限选择和菜单配置保存暂不可用。', moveUp: '上移', moveDown: '下移', columns: { menu: '菜单', route: '路由', permission: '权限码', visible: '可见', status: '状态', sort: '排序', knownRoute: '已知路由', }, }, hotels: { title: '酒店筛选', createTitle: '新增酒店', editTitle: '编辑酒店', tableTitle: '酒店数据', totalSuffix: '家酒店', keywordPlaceholder: '酒店 ID / 酒店名称', hotelStatus: '酒店状态', hotelId: '酒店 ID', hotelName: '酒店名称', saveStatus: '保存状态', singleActiveRule: '单酒店阶段只允许一家 ACTIVE 酒店;新增酒店默认禁用。', columns: { hotel: '酒店', status: '状态', timeZone: '时区', authorizedUsers: '授权用户', sort: '排序', }, }, catalogs: { title: 'Reservation V4 目录管理', subtitle: '维护 Account、Room Type 和 Rate Code,供 V4 任务卡 lookup 和后端确认校验使用。', typeNavigation: 'Reservation V4 目录类型', filters: '目录筛选', hotel: '酒店', defaultHotel: '当前默认酒店', keywordPlaceholder: '代码 / 名称', catalogStatus: '目录状态', createTitle: '新增 {type}', createHint: '第一版新增目录由系统管理维护,保存后默认启用。', createAction: '新增目录', createSucceeded: '目录已新增', statusUpdated: '目录状态已更新', disabledLookupNotice: '停用目录项后,普通 V4 任务卡 lookup 不再返回该项;已确认历史卡片不会被回滚。', defaultActiveHint: '新增后默认启用。Account 第一版固定使用 Market=LEISURE、Source=TRAVEL_AGENT。', hotelRequired: '请先选择酒店。', tableTitle: '{type} 数据', totalSuffix: '条目录', accountCode: 'Account Code', accountName: 'Account 名称', marketCode: 'Market Code', sourceCode: 'Source Code', externalAccountId: '外部 Account ID', code: '代码', displayName: '显示名称', externalId: '外部目录 ID', sortOrder: '排序', catalogVersion: '目录版本', metadataJson: '扩展 JSON', enableAction: '启用', disableAction: '停用', types: { accounts: 'Account', roomTypes: 'Room Type', rateCodes: 'Rate Code', }, columns: { catalog: '目录', status: '状态', marketSource: 'Market / Source', source: '来源 / 版本', sort: '排序', }, }, audits: { title: '审计筛选', tableTitle: '管理审计数据', totalSuffix: '条审计记录', targetType: '对象类型', targetId: '对象 ID', action: '操作类型', columns: { action: '操作', target: '对象', actor: '操作者', occurredAt: '发生时间', }, }, }, workbench: { title: '订单工作台', subtitle: '查看、筛选和处理预订订单任务', filters: '筛选条件', dateRange: '日期范围', businessKey: '业务号 / 临时单号', orderStatus: '订单状态', taskStatus: '任务状态', taskCardType: '任务卡类型', reset: '重置', tableTitle: '订单 / 任务列表', columns: { businessKey: '业务号', orderStatus: '订单状态', currentTask: '当前任务', taskStatus: '任务状态', updatedAt: '最近更新', operation: '操作', }, view: '查看', totalPrefix: '共', totalSuffix: '条任务线索', }, orderList: { title: '订单列表', subtitle: '按订单查看预订处理入口', keyword: '团队号 / 确认号', keywordPlaceholder: '团队号 / 确认号', groupCode: '团队号', groupCodePlaceholder: '输入团队号', confirmationNumber: '确认号', confirmationNumberPlaceholder: '输入确认号', tableTitle: '订单数据', totalSuffix: '条订单', viewDetail: '查看详情', continueTask: '继续处理', noOpenTask: '无待处理任务', endpointPending: '订单列表接口待后端接入,当前不展示假数据。', columns: { order: '订单', status: '状态', openTasks: '待处理', createdAt: '创建时间', }, }, manualInvoice: { title: '手工开票', createTitle: '创建 Invoice', subtitle: '无订单、无任务时,手工填写 Proforma Invoice 字段并生成 PDF。', sourceBadge: '手工生成', independentHint: '本页第一版不关联订单或任务,生成记录和审计由后端统一落库。', documentSection: '单据信息', recipientSection: '收件方', bookingSection: '预订信息', chargesSection: '费用明细', previewSection: '金额预览', resultSection: '生成结果', invoiceDate: '开票日期(Invoice Date)', bookingDate: '预订日期(Booking Date)', dueDate: '付款截止日期(Due Date)', companySeed: '选择公司(Company)', contactSeed: '选择收件人(Attention)', selectCompany: '请选择公司', selectContact: '请选择收件人', company: '公司(Company)', attention: '收件人(Attention)', address: '地址(Address)', companyInputPlaceholder: '输入公司名称', attentionInputPlaceholder: '输入收件人', addressInputPlaceholder: '输入客户完整账单地址', telephone: 'Tel', email: 'Email', groupName: '团队名称(Group Name)', arrivalDate: '到店日期(Arrival Date)', departureDate: '离店日期(Departure Date)', roomRateNote: '房价备注(Room Rate Note)', roomRateNotePlaceholder: '例如 including BF', datePlaceholder: '年-月-日', extraBedRate: '加床价格(Extra Bed Rate)', description: '费用描述(Description)', roomType: '房型(Room Type)', quantity: '数量(Quantity)', rate: '单价(Rate)', nights: '晚数(Nights)', amount: 'Amount', subtotal: 'Sub-Total', vat: 'VAT 7%', total: 'Total', addCharge: '新增一行', removeCharge: '删除', chargeLineLabel: '第 {index} 行', removeChargeLineAria: '删除第 {index} 行', maxChargesReached: '第一版最多支持 10 条费用明细。', previewDisclaimer: '前端仅做金额预览,最终金额以后端返回 totals 为准。', manualOverrideHint: '选择 Company / Attention 后会自动带出资料,带出的文本仍可手工覆盖。', generate: '确认并生成 PDF', generating: '生成中', openPdf: '打开 PDF', downloadPdf: '下载 PDF', downloadingPdf: '下载中', downloadFallback: '浏览器未能直接下载,已尝试打开 PDF 页面。', technicalDetails: '技术详情', generationId: '生成记录 ID', generationStatus: '生成状态', pdfUrl: 'PDF 链接', hotelId: '酒店 ID', templateCode: '模板', createdAt: '创建时间', noPdfUrl: '后端未返回 PDF 链接。', backendTotals: '后端返回金额', validationTitle: '请先修正表单', fieldErrors: { required: '必填', invalidEmail: 'Email 格式不正确', dateOrder: '日期顺序不正确', positiveNumber: '必须大于 0', nonNegativeNumber: '不能小于 0', }, statuses: { SUCCEEDED: '已生成', GENERATED: '已生成', FAILED: '生成失败', PROCESSING: '生成中', }, errors: { FRONTEND_VALIDATION: '表单校验未通过,请检查必填字段和费用明细。', RESERVATION_INVOICE_VALIDATION_FAILED: 'Invoice 字段校验失败,请检查表单内容。', RESERVATION_INVOICE_CONTEXT_MISMATCH: '订单或任务上下文不匹配。', DOCUMENT_CONVERSION_FAILED: 'PDF 生成失败,请稍后重试或联系管理员。', DOCUMENT_CONVERSION_TIMEOUT: 'PDF 生成超时,请稍后重试。', AUTH_401: '登录已失效,请重新登录后再生成。', AUTH_403: '当前账号没有手工开票权限。', UNKNOWN: '生成失败,请稍后重试。', requiredFields: '请补充日期、收件方、预订信息和至少一条有效费用明细。', invalidEmail: 'Email 格式不正确。', dueDateBeforeBookingDate: 'Due Date 不能早于 Booking 日期。', departureBeforeArrival: 'Departure Date 必须晚于 Arrival Date。', extraBedNegative: '加床价格不能小于 0。', chargePositive: '费用明细的 Quantity、Rate、Nights 必须大于 0。', }, }, roomingList: { eyebrow: '预订工具', title: '生成 Rooming List Excel', subtitle: '上传旅行团名单 Excel,填写每房人数和目标列默认值,生成酒店可导入的 Rooming List。', currentHotel: '当前酒店', sourceSection: '来源名单与必填信息', targetSection: '目标 Excel 默认值', sourceFile: '来源 Excel 文件', sourceFileHint: '支持 .xls / .xlsx;前端不会读取或记录名单内容。', noFile: '选择 .xls / .xlsx 文件', peoplePerRoom: '每间房人数', arrival: '入住日期', departure: '离店日期', roomType: '房型', roomTypePlaceholder: '例如 DLX / TWN', titleColumn: '称谓(Title)', rateCode: '价格代码(Rate Code)', adults: '成人数(Adults)', children: '儿童数(Children)', paymentType: '付款方式(Payment Type)', vip: 'VIP', nationality: '国籍(Nationality)', email: '邮箱(Email)', idType: '证件类型(ID Type)', idNumber: '证件号码(ID Number)', generate: '生成并下载 Excel', generating: '生成中', validationTitle: '请先修正表单', resultSuccess: '生成结果', resultDownloaded: 'Excel 已生成,并已触发浏览器下载。', downloadedFile: '下载文件', fieldErrors: { fileRequired: '请选择来源 Excel 文件。', fileType: '仅支持 .xls / .xlsx 文件。', positiveInteger: '每间房人数必须大于 0。', nonNegativeInteger: '必须是 0 或正整数。', arrivalRequired: '请填写入住日期。', departureRequired: '请填写离店日期。', dateFormat: '日期格式必须为 yyyy-MM-dd。', departureAfterArrival: '离店日期必须晚于入住日期。', roomTypeRequired: '请填写房型。', invalidEmail: 'Email 格式不正确。', }, errors: { FRONTEND_VALIDATION: '表单校验未通过,请检查必填字段。', ROOMING_LIST_VALIDATION_FAILED: 'Rooming List 字段校验失败,请检查表单内容。', ROOMING_LIST_SOURCE_FILE_INVALID: '来源名单文件不合法,请检查 Excel 表头和文件格式。', FRONTEND_PERMISSION_DENIED: '当前账号没有生成 Rooming List 的权限。', HOTEL_ACCESS_DENIED: '当前账号不能访问所选酒店。', AUTH_TOKEN_REQUIRED: '请先登录后再生成 Rooming List。', AUTH_SESSION_INVALID: '登录已失效,请重新登录后再生成。', UNKNOWN: 'Rooming List 生成失败,请稍后重试。', }, }, order: { summary: '订单摘要', taskQueue: '同订单预订事项', v4TaskTimeline: '处理记录', v4TaskTimelineEmpty: '暂无处理记录。', v4TaskTimelineHint: '只展示来源邮件处理记录和事项状态摘要;办理动作请进入订单事项办理页完成。', v4OverviewTitle: '订单信息总览', v4OverviewSubtitle: '仅来自已确认事项,不使用未确认建议。', v4OverviewEmpty: '暂无已确认的订单信息。', accountCode: 'Account 代码', accountName: 'Account 名称', marketCode: 'Market 代码', sourceCode: 'Source 代码', departureDate: '离店日期', rateCode: 'Rate Code', roomItems: '已确认房型房量', latestConfirmedAt: '最近确认时间', traceCardStatus: '跟进事项状态', roomingListCardStatus: '房表事项状态', paymentCardStatus: '付款凭证状态', nextV4ActionTitle: '下一步处理', nextV4ActionSubtitle: '订单总览只提供入口,不直接确认、复核或编辑事项。', nextV4ActionType: '下一步', nextV4ActionStatus: '处理状态', nextV4CardId: '事项编号', openOrderTaskCount: '待处理事项数', enterV4Task: '进入办理页', nextActionConfirm: '确认事项', nextActionReview: '需要复核', nextActionNone: '无待处理事项', nextStep: '处理事项', nextStepConfirm: '有事项待确认', nextStepReview: '有事项需要复核', nextV4ActionEmpty: '暂无下一步处理事项。', relatedSourceMessages: '关联来源邮件', relatedSourceMessagesHint: '只展示邮件头和会话摘要;全文请进入邮件会话页查看。', relatedSourceMessagesEmpty: '暂无关联来源邮件。', externalConversationId: '外部会话编号', latestActivityAt: '最近活动时间', v4CardsEmpty: '暂无事项状态摘要。', cardStatusSummary: '事项状态摘要', cardId: '事项编号', reviewStatus: '复核状态', confirmedBy: '确认人', confirmedAt: '确认时间', sourceEventIndex: '来源邮件事件 {index}', processingRecord: '来源邮件处理记录', sourceMessage: '来源消息', businessKeySource: '业务号来源', updatedAt: '最近更新', guestName: '客人', arrivalDate: '入住日期', roomType: '房型', amount: '金额', openTask: '处理任务', groupCode: '团队号(Group Code)', confirmationNumber: '确认号(Confirmation No.)', temporaryOrderNo: '临时单号', blockCode: '团队预留号(Block Code)', createdAt: '创建时间', conversationMessageCount: '会话邮件数', sourceSummaryPending: '订单详情任务时间线的来源邮件摘要字段待后端补充;请从具体任务进入后查看。', }, taskList: { title: '待处理预订事项', subtitle: '查看需要确认、复核或已读的预订事项', keyword: '订单 / 邮件关键词', keywordPlaceholder: '订单号 / 邮件关键词', taskType: '任务类型', taskSubtype: '任务细分', tableTitle: '预订事项', totalSuffix: '条事项', noSourceSubject: '暂无来源主题', sourceReceivedAt: '来源时间', businessStatus: '事项状态', filterPending: '待处理', filterReview: '需要复核', filterCompleted: '已完成', filterSourceNotification: '来源通知', noOpenItems: '暂无需要处理的预订事项', noPendingItems: '暂无待确认的预订事项', noReviewItems: '暂无需要复核的预订事项', noCompletedItems: '暂无已完成的预订事项', noSourceNotifications: '暂无来源通知', itemType: '工作项类型', itemTypeOrderTask: '预订事项', itemTypeSourceNotification: '来源通知', orderTaskStatus: '订单任务状态', cardStatus: '卡片状态', orderUnresolved: '订单归属待确认', sourceNotificationNoOrder: '不关联订单', sourceNotificationNoOrderHint: '该邮件不关联订单,请查看邮件内容。', cardCountsTotal: '共 {total} 个事项', cardCountsPending: '待确认 {count}', cardCountsReview: '待复核 {count}', cardCountsConfirmed: '已确认 {count}', viewNotification: '查看通知', canProcess: '可处理', cannotProcess: '不可处理', queueParticipation: '是否参与队列', queueAll: '全部队列状态', queueIncluded: '参与队列', queueExcluded: '不参与队列', viewTask: '处理事项', viewOrder: '查看订单', viewConversation: '查看邮件会话', sourceOnlyOrderLabel: '来源消息只读', hiddenTechnicalOrder: '不关联可见订单', columns: { item: '事项类型', task: '任务', order: '订单', card: '事项', status: '状态', source: '来源邮件', cards: '事项进度', queue: '队列', }, }, taskV4: { title: '订单事项办理', subtitle: '按来源邮件办理当前订单事项', orderTaskSummary: '事项摘要', orderTaskId: '事项编号', orderReference: '订单引用', targetBookingType: '预订类型', targetLocator: '订单线索', targetResolutionStatus: '订单归属', cardCounts: '事项统计', sourceMessageCard: '来源邮件', basicInformationCard: '预订基础信息', roomInformationCard: '房型与日期', paymentCard: '付款凭证', businessCards: '预订事项', adapterContractErrors: '适配契约诊断', noAdapterContractErrors: '暂无适配契约异常。', noBusinessCards: '暂无需要办理的预订事项。', displayPayload: '展示摘要', rawCardPayload: '卡片安全摘要', readonlyReason: '不可操作原因', blockedReason: '阻塞原因', bookingTypeGroup: '团队预订', bookingTypeFit: '散客预订', bookingTypeUnknown: '预订类型待确认', targetResolved: '已确认', targetUnresolved: '待确认', targetPending: '待确认', confirmCard: '确认卡片', confirmingCard: '确认中', resolveReview: '提交复核', resolvingReview: '提交中', reviewReason: '复核说明', reviewReasonPlaceholder: '可选,说明人工判断依据', confirmedOrderId: '确认订单编号', confirmedOrderIdPlaceholder: '订单归属未解决时填写', confirmedOrderRequired: '订单归属未解决,请先填写确认订单编号。', cardConfirmed: '卡片已确认,详情已刷新。', reviewResolved: '复核已提交,详情已刷新。', validationFailed: '请先修正当前卡片字段。', roomInformation: { noDisplayModel: '房型与日期信息暂不可用,请稍后刷新或联系管理员。', eventType: { NEW_BOOKING: '新预订', UPDATE_BOOKING: '修改预订', CANCEL_BOOKING: '取消预订', unknown: '预订事项', }, emptyValues: '暂无可展示字段。', changeSummary: '本次变更摘要', currentValues: '当前值', proposedValues: '建议值', finalValues: '最终值', groupBlockName: '团队名称', fitName: '散客姓名', arrivalDate: '入住日期', departureDate: '离店日期', nights: '晚数', rateCode: 'Rate Code', breakfastIncluded: '含早', groupBookingStatus: '团队预订状态', blockId: 'Block ID', confirmationNumber: '确认号', roomItems: '房型明细', roomTypeCode: '房型代码', roomCount: '房间数', yes: '是', no: '否', }, paymentAttachments: { title: '付款凭证附件', loading: '正在加载附件预览权限...', loadFailed: '附件预览暂不可用,可检查来源邮件权限后重试。', empty: '暂无付款凭证附件。', openPreview: '查看大图', closePreview: '关闭预览', download: '下载', previewUnavailable: '不可预览', downloadUnavailable: '不可下载', noMatchedMedia: '当前邮件中未找到匹配附件。', missingSourceMessage: '缺少来源邮件,暂不可预览或下载。', unavailableReason: '不可用原因:{reason}', fileMeta: '{type} · {size}', }, roomingList: { title: '房表事项', targetOrder: '目标订单', unboundOrder: '暂未绑定可见订单', description: '当前来源消息包含需要人工处理的 Rooming List 事项,请在酒店内部流程处理后确认该卡片。', confirmHint: '第一版仅确认该事项已由人工处理,不展示或处理名单明细和附件内容。', }, trace: { title: '跟进事项', itemLabel: '事项 {index}', generalTitle: '普通事项', extraBedTitle: '加床事项', action: '固定动作', }, lookup: { loading: '选项加载中', empty: '暂无可选项,如需新增请联系管理员维护资料。', stale: '当前目录为过期快照,仍可选择,最终以后端校验为准。', warning: '目录提示:{warning}', error: '选项暂不可用,请刷新后重试。', accountDerived: '选择后会带出市场:{market} / 来源:{source}。', currentNotInCatalog: '原值“{value}”不在当前可选项中,请重新选择。', }, sourceMessage: { subject: '主题', sender: '发件人', receivedAt: '接收时间', conversationCount: '会话邮件数', attachments: '附件', excerpt: '邮件片段', body: '当前邮件正文', bodyCollapsed: '邮件正文已折叠,展开后读取当前触发邮件正文。', bodyLoading: '正在加载当前邮件正文...', bodyLoadFailed: '当前邮件正文暂时无法加载,可进入邮件会话查看。', noBody: '暂无当前邮件正文。', showFullBody: '展开全文', collapseBody: '收起正文', noExcerpt: '暂无邮件片段', noAttachments: '无附件', }, field: { required: '必填', readonly: '只读', empty: '未填写', hidden: '敏感内容已隐藏', selectPlaceholder: '请选择', datePlaceholder: '年-月-日', }, error: { loadFailed: '订单事项办理页加载失败。', actionFailed: '操作失败,请检查后端返回信息。', }, }, sourceNotification: { title: '来源通知详情', subtitle: 'S10/S99 来源消息只读通知,不进入订单或任务卡处理。', summary: '通知摘要', notificationId: '通知编号', routeCode: '路由代码', status: '通知状态', sourceMessage: '来源邮件', ackReason: '处理说明', ackReasonPlaceholder: '可选,说明已读或已处理依据', ack: '确认已读', acking: '确认中', acked: '已确认已读,详情已刷新。', noBusinessEntry: '该通知不关联订单、业务卡、字段编辑、复核或 OPERA 操作。', error: { loadFailed: '来源通知详情加载失败。', ackFailed: '确认已读失败,请检查后端返回信息。', }, }, task: { title: '任务卡', fieldContract: '字段契约', evidence: '证据区', saveDraft: '保存草稿', confirm: '确认任务', blocked: '阻塞中', readOnly: '只读', operaOperations: 'OPERA 模拟操作', audits: '审计时间线', noOperations: '确认任务后生成 OPERA 模拟操作。', noAudits: '暂无审计记录。', execute: '执行', retry: '重试', simulateFailure: '模拟失败', fieldNotes: '字段备注', emptyValue: '未填写', attachments: '附件', fieldAreaFallback: '基础信息', savedLocally: '草稿已保存', confirmedLocally: '任务已确认', validationFailed: '请先修正字段', validation: { required: '{field}为必填项', enum: '{field}必须来自可选项', date: '{field}日期格式必须为 YYYY-MM-DD', number: '{field}必须是数字', }, viewOrder: '查看订单', viewConversation: '查看邮件会话', parentGroup: 'Parent Group', sourceMessageId: '来源消息编号(ID)', sourceSubject: '来源主题', sourceSender: '发件人', sourceReceivedAt: '接收时间', sourceSummaryPending: '来源邮件摘要字段待后端补充', sourceEmailPreview: '来源邮件预览', sourceEmailExcerpt: '邮件片段', sourceEmailAttachments: '相关附件', sourceEmailNoExcerpt: '暂无邮件片段', sourceEmailNoAttachments: '无附件', sourceEmailFullConversation: '查看完整邮件会话', sourceOnlyResult: '来源消息入口结果', sourceOnlyReadonly: '该任务仅用于展示来源消息入口结果,不进入订单处理、字段编辑或 OPERA 操作。', sourceOnlyNoOpera: '该类任务不涉及 OPERA 操作。', routeInfo: '路由与处理信息', resultType: '识别结果类型', aiTaskType: 'AI 任务类型', systemTaskType: '系统任务类型', taskCardType: '任务卡类型', taskSubtype: '任务细分', routeCode: '路由代码', systemProcessCategory: '系统处理分类', reviewStatus: '复核状态', entryResultCode: '入口结果码', entryResultMeaning: '结果含义', entryResultDescription: '结果说明', entryResultSourceMessageId: '结果来源消息编号', rawAnswer: 'SuperAgent 原始回答', agentAssessment: 'AI 原始字段', sourceNotification: '来源消息通知', manualReviewData: '人工复核信息', manualReviewEvidence: '人工复核证据', manualReviewEvidenceFallback: '请根据来源邮件和候选信息确认 Parent Group 身份。', manualReviewMissingFields: '缺失字段', manualReviewBlockingPoints: '阻塞点', manualReviewConflictingPoints: '冲突点', manualReviewSuggestedActions: '建议动作', manualReviewEvidenceToCheck: '建议核对证据', parentIdentityCandidates: 'Parent Group 候选', parentIdentityCandidate: '候选项', noParentIdentityCandidates: '暂无 Parent Group 候选;需要后端透出 context_used.parent_identity_candidates。', adapterContractErrors: '适配契约异常', unhandledIntents: '未处理意图', noSourceOnlyResult: '暂无来源消息入口结果。', manualResolution: { title: '人工复核解阻', description: '在原任务卡上补齐缺失字段,提交后由后端校验并解除阻塞。', pendingStatus: '待复核', resolvedTitle: '复核已完成', reasonCode: '复核原因代码', reviewInstruction: '复核说明', confirmedOrderId: '确认订单编号', fieldValuePlaceholder: '填写确认后的值', noSupportedMissingFields: '当前缺失字段暂不支持前端解阻,请联系后端确认字段映射。', unopenedFieldsTitle: '未开放编辑字段', fieldBackendUnopened: '当前字段后端未开放编辑', fieldRequired: '请填写缺失字段和确认订单编号', reason: '处理说明', reasonPlaceholder: '可选,说明人工判断依据', submit: '提交复核结果', succeeded: '人工复核已解阻,任务状态已刷新。', }, manualConversion: { title: '人工转换', description: '将人工复核任务转换为可处理的预订任务。', targetTaskType: '目标任务类型', targetOrder: '目标订单', targetOrderHelp: '修改或取消预订必须选择一个未删除订单。', targetOrderKeyword: '目标订单搜索', targetOrderKeywordPlaceholder: '团队号、确认号或订单关键词', searchTargetOrders: '搜索订单', noTargetOrderCandidates: '请输入关键词并搜索目标订单', orderDeletedDisabled: '已删除订单不可选', newBookingHint: '转为新预订时不强制选择目标订单,后端会按当前任务重新归属。', reason: '转换原因', reasonPlaceholder: '可选,说明人工判断依据', submit: '转换任务', targetOrderRequired: '请选择目标订单', succeeded: '人工转换已完成:{taskType},目标订单 {orderId}', orderId: '订单编号', }, }, conversation: { title: '邮件会话详情', subtitle: '查看来源邮件所在会话下的全部历史邮件和回复', endpointPending: '邮件会话详情接口待后端接入,当前不展示假数据。', subject: '会话主题', messageCount: '邮件数', channel: '渠道', firstReceivedAt: '首次接收', lastReceivedAt: '最近接收', emptyBody: '邮件正文为空', attachments: '附件 / 内嵌图片', unnamedAttachment: '未命名附件', relatedOrders: '关联订单', relatedTasks: '关联任务', }, debugEml: { title: 'Debug EML 调试上传', subtitle: '上传单封 .eml 邮件并查看 SourceMessage 与 SuperAgent 调试结果', uploadConfig: '上传配置', hotelId: '酒店 ID', debugUploadKey: 'Debug 上传口令', runLabel: '运行标签', emlFile: '.eml 文件', submit: '提交调试', submitting: '等待 SuperAgent 返回', executionStatus: '执行状态', status: '状态', debugRunId: 'Debug 运行 ID', backendStatus: '后端状态', backendMessage: '后端消息', waitingSuperAgent: '正在解析邮件并等待 SuperAgent 返回', systemStages: '本系统处理阶段', superAgentTrace: 'SuperAgent Trace', traceToolName: '工具', traceInputSummary: '入参摘要', traceOutputSummary: '出参摘要', traceStatus: '状态', traceTime: '时间', sourceTrace: 'SourceMessage 追溯', sourceMessageId: 'SourceMessage ID', sourceProvider: '来源 Provider', externalMessageId: '外部消息 ID', externalConversationId: '外部会话 ID', mailPreview: '邮件内容预览', noSafeHtml: '当前没有可安全渲染的 HTML 正文', uploadedMedia: '上传媒体', unnamedMedia: '未命名媒体', rawHtml: '原始处理 HTML', superAgentResult: 'SuperAgent 结果', superAgentSessionId: 'SuperAgent Session ID', superAgentRunId: 'SuperAgent Run ID', parsedJson: '解析 JSON', rawAnswer: '原始回答', warnings: '警告', bookingExcelExtractions: 'Booking Excel 附件预处理', debugPayload: '调试 Payload', statuses: { idle: '待上传', uploading: '执行中', succeeded: '成功', failed: '失败', }, errors: { REQUEST_FIELD_REQUIRED: '缺少必填字段,请检查酒店 ID、文件或请求参数', EML_FILE_REQUIRED: '请选择 .eml 邮件文件', EML_FILE_TOO_LARGE: '邮件文件超过后端限制', INVALID_FILE_TYPE: '只支持 .eml 邮件文件', DEBUG_UPLOAD_KEY_INVALID: '调试上传口令缺失或错误', EML_PARSE_FAILED: '邮件文件无法解析', OSS_UPLOAD_FAILED: 'OSS 上传失败,请联系后端排查', SUPERAGENT_OPEN_API_FAILED: 'SuperAgent 调用失败,SourceMessage 可能已经写入', DEBUG_EML_RUN_FAILED: 'Debug EML 链路内部失败', UNKNOWN: 'Debug EML 调试失败', }, }, status: { TEMPORARY: '临时', ACTIVE: '有效', ENDED: '已结束', LOGIC_DELETED: '已删除', PENDING_CONFIRM: '待确认', READY: '待执行', EXECUTING: '执行中', FAILED: '失败', COMPLETED: '已完成', PENDING: '待执行', SUCCEEDED: '成功', BLOCKED: '阻塞', SKIPPED: '跳过', OPEN: '处理中', READONLY: '只读', REVIEW_REQUIRED: '待复核', CONFIRMED: '已确认', ACK_REQUIRED: '待确认已读', ACKED: '已读', }, cardType: { NEW_BOOKING: '新预订', UPDATE_BOOKING: '修改预订', CANCEL_BOOKING: '取消预订', CANCEL_ALLOTMENT: '取消 Parent Group 配额', VOUCHER: '凭证', ROOMING_LIST: '房表', AMEND_GROUP_CODE: '修改团队号', TRACE_NOTE: '追踪备注(Trace)', TA_RECORD: '旅行社记录', MESSAGE_NOTIFICATION: '消息通知', INFORMATIONAL_MESSAGE: '消息通知(历史 Message Notification)', SOURCE_MESSAGE_REVIEW_NOTIFICATION: '来源消息通知', SOURCE_MESSAGE_ONLY: '来源消息只读', SOURCE_MESSAGE_DISPLAY: '来源消息展示卡', SOURCE_MESSAGE_NOTIFICATION: '来源消息通知卡', BASIC_INFORMATION: '基础信息卡', ROOM_INFORMATION: '房型信息卡', TRACE_RESERVATION_NOTES: '追踪备注卡', PAYMENT: '付款信息卡', MANUAL_REVIEW: '人工复核', FALLBACK_REVIEW: '人工复核', }, taskSubtype: { NEW_BOOKING: '新预订', UPDATE_BOOKING: '修改预订', CANCEL_BOOKING: '取消预订', RATE_CHANGE: '价格调整', UPDATE_STAY_DATES: '修改入住日期', UPDATE_ROOM_TYPE: '修改房型', UPDATE_FIX_CHARGE: '修改固定收费', CANCEL_ALLOTMENT_CONTROL_BLOCK: '取消 Parent Group 整块配额', NEW_GROUP_BLOCK: '新团队预留', NEW_FIT_RESERVATION: '新散客预订', MANUAL_REVIEW: '人工复核', S10: '纯信息类邮件(S10)', S99: '无法形成业务素材包(S99)', S000: '纯信息类邮件', S999: '无法形成业务素材包', }, resultType: { NORMAL_TASK: '普通任务', MANUAL_REVIEW: '人工复核', SOURCE_MESSAGE_REVIEW_NOTIFICATION: '来源消息通知', ADAPTER_CONTRACT_ERROR: '适配契约异常', UNHANDLED_CURRENT_INTENT: '未处理意图', }, systemProcessCategory: { BUSINESS_TASK: '业务任务', SOURCE_MESSAGE_NOTIFICATION: '来源消息通知', ADAPTER_CONTRACT_ERROR: '适配契约异常', UNHANDLED_CURRENT_INTENT: '未处理意图', }, readonlyReason: { PROCESSABLE: '可处理', PREVIOUS_TASK_NOT_FINISHED: '前序任务未完成', TASK_FINISHED: '任务已结束', TASK_READ_ONLY: '任务只读', ORDER_CLOSED: '订单已关闭', QUEUE_EXCLUDED: '未参与队列', BLOCKED: '阻塞中', MANUAL_REVIEW_REQUIRED: '需要人工复核', }, actorType: { USER: '人工用户', SYSTEM: '系统', AI: 'AI', AGENT: '外部助手', BACKEND: '后端服务', }, auditAction: { TASK_CREATED: '任务创建', TASK_LOADED: '任务读取', TASK_CONFIRMED: '任务确认', TASK_CONFIRM: '任务确认', DRAFT_SAVED: '草稿保存', TASK_UPDATED: '任务更新', OPERA_EXECUTED: 'OPERA 执行', OPERA_RETRIED: 'OPERA 重试', MANUAL_REVIEW_CREATED: '创建人工复核', MANUAL_REVIEW_CONVERT: '人工转换', MANUAL_REVIEW_RESOLVED: '人工复核解阻', }, operaOperation: { CREATE_RESERVATION: '创建预订', UPDATE_RESERVATION: '更新预订', CANCEL_RESERVATION: '取消预订', UPDATE_ROOMING_LIST: '更新房表', ADD_TRACE_NOTE: '添加追踪备注', }, }