export default {
  app: {
    name: 'Hotel OMS',
    theme: 'Theme',
    language: 'Language',
    navigationAria: 'Reservation navigation',
    healthUp: 'Backend connected',
    healthDown: 'Backend offline',
    healthChecking: 'Checking',
  },
  auth: {
    loginTitle: 'Sign in',
    loginSubtitle: 'Use your system account to enter the TH Hotel reservation workspace.',
    username: 'Username',
    password: 'Password',
    loginSubmit: 'Sign in',
    loggingIn: 'Signing in',
    loginFailed: 'The username or password is incorrect.',
    logout: 'Sign out',
    currentUser: 'Current user',
    currentHotel: 'Current hotel',
    unauthorizedTitle: 'No access',
    unauthorizedMessage: 'Your account does not have permission to access this page or action.',
    backHome: 'Back to available page',
  },
  nav: {
    orders: 'Order list',
    taskQueue: 'Task queue',
    sourceMessages: 'Source messages',
    systemStatus: 'System status',
    orderDetail: 'Order detail',
    taskDetail: 'Task detail',
    sourceMessageConversation: 'Email conversation',
    debugEml: 'Debug EML',
    systemSettings: 'System settings',
    systemUsers: 'Users',
    systemRoles: 'Roles',
    systemMenus: 'Menus',
    systemHotels: 'Hotels',
    systemAudits: 'Admin audits',
  },
  common: {
    loading: 'Loading',
    noData: 'No data',
    endpointPending: 'Endpoint pending',
    endpointMissing: 'Endpoint field pending',
    all: 'All',
    unknownStatus: 'Unknown status',
    unknownTaskType: 'Unknown task type',
    unknownTaskSubtype: 'Unknown task subtype',
    unknownReadonlyReason: 'Not processable yet',
    unknownActorType: 'Unknown actor',
    unknownAuditAction: 'Unknown action',
    unknownOperation: 'Unknown operation',
    previousPage: 'Previous',
    nextPage: 'Next',
    pageStatus: 'Page {current} / {total}',
    pageSize: 'Page size',
  },
  notFound: {
    title: 'Page unavailable',
    message: 'The frontend page for this menu or link is not available yet.',
    backHome: 'Back to available page',
  },
  systemAdmin: {
    title: 'System settings',
    subtitle: 'Maintain users, roles, permissions, menus, and hotel records',
    navigationAria: 'System settings navigation',
    common: {
      keyword: 'Keyword',
      viewDetail: 'View detail',
      selectRow: 'Select a row to view detail',
      create: 'Create',
      save: 'Save',
      edit: 'Edit',
      yes: 'Yes',
      no: 'No',
    },
    status: {
      ACTIVE: 'Active',
      DISABLED: 'Disabled',
    },
    users: {
      title: 'User filters',
      tableTitle: 'Users',
      detailTitle: 'User detail',
      createTitle: 'Create user',
      totalSuffix: 'users',
      keywordPlaceholder: 'Username / display name / email',
      userStatus: 'User status',
      username: 'Username',
      initialPassword: 'Initial password',
      displayName: 'Display name',
      email: 'Email',
      phone: 'Phone',
      roles: 'Roles',
      hotels: 'Authorized hotels',
      defaultHotel: 'Default hotel',
      saveRoles: 'Save roles',
      saveHotels: 'Save hotels',
      resetPassword: 'Reset password',
      temporaryPassword: 'Temporary password:',
      created: 'User created',
      columns: {
        user: 'User',
        status: 'Status',
        roles: 'Roles',
        defaultHotel: 'Default hotel',
      },
    },
    roles: {
      title: 'Role filters',
      tableTitle: 'Roles',
      detailTitle: 'Role detail',
      createTitle: 'Create custom role',
      totalSuffix: 'roles',
      keywordPlaceholder: 'Role code / role name',
      roleStatus: 'Role status',
      roleCode: 'Role code',
      roleName: 'Role name',
      builtinReadonly: 'Built-in roles are maintained by the system bootstrap matrix and cannot be edited here.',
      savePermissions: 'Save permissions',
      columns: {
        role: 'Role',
        status: 'Status',
        builtin: 'Built-in',
        permissions: 'Permissions',
        users: 'Users',
      },
    },
    menus: {
      title: 'Menu filters',
      createTitle: 'Create menu',
      editTitle: 'Edit menu',
      tableTitle: 'Menus',
      totalSuffix: 'menus',
      keywordPlaceholder: 'Menu code / name / route',
      menuStatus: 'Menu status',
      menuCode: 'Menu code',
      menuName: 'Menu name',
      componentKey: 'Component key',
      iconKey: 'Icon key',
      columns: {
        menu: 'Menu',
        route: 'Route',
        permission: 'Permission',
        visible: 'Visible',
        status: 'Status',
        sort: 'Sort',
        knownRoute: 'Known route',
      },
    },
    hotels: {
      title: 'Hotel filters',
      createTitle: 'Create hotel',
      editTitle: 'Edit hotel',
      tableTitle: 'Hotels',
      totalSuffix: 'hotels',
      keywordPlaceholder: 'Hotel ID / hotel name',
      hotelStatus: 'Hotel status',
      hotelId: 'Hotel ID',
      hotelName: 'Hotel name',
      saveStatus: 'Save status',
      singleActiveRule: 'Single-hotel mode allows only one ACTIVE hotel. Newly created hotels are disabled by default.',
      columns: {
        hotel: 'Hotel',
        status: 'Status',
        timeZone: 'Time zone',
        authorizedUsers: 'Authorized users',
        sort: 'Sort',
      },
    },
    audits: {
      title: 'Audit filters',
      tableTitle: 'Admin audit data',
      totalSuffix: 'audit records',
      targetType: 'Target type',
      targetId: 'Target ID',
      action: 'Action',
      columns: {
        action: 'Action',
        target: 'Target',
        actor: 'Actor',
        occurredAt: 'Occurred at',
      },
    },
  },
  workbench: {
    title: 'Order workbench',
    subtitle: 'Review, filter, and handle Reservation order tasks',
    filters: 'Filters',
    dateRange: 'Date range',
    businessKey: 'Business key / temporary code',
    orderStatus: 'Order status',
    taskStatus: 'Task status',
    taskCardType: 'Task card type',
    reset: 'Reset',
    tableTitle: 'Orders / tasks',
    columns: {
      businessKey: 'Business key',
      orderStatus: 'Order status',
      currentTask: 'Current task',
      taskStatus: 'Task status',
      updatedAt: 'Last updated',
      operation: 'Action',
    },
    view: 'View',
    totalPrefix: 'Total',
    totalSuffix: 'task leads',
  },
  orderList: {
    title: 'Order list',
    subtitle: 'Review Reservation work by order',
    keyword: 'Group Code / Confirmation No.',
    keywordPlaceholder: 'Group code / confirmation no.',
    groupCode: 'Group code',
    groupCodePlaceholder: 'Enter group code',
    confirmationNumber: 'Confirmation no.',
    confirmationNumberPlaceholder: 'Enter confirmation no.',
    tableTitle: 'Order data',
    totalSuffix: 'orders',
    viewDetail: 'View detail',
    continueTask: 'Continue task',
    noOpenTask: 'No open task',
    endpointPending: 'The order list endpoint is pending backend implementation. No fixture data is shown.',
    columns: {
      order: 'Order',
      status: 'Status',
      openTasks: 'Open tasks',
      createdAt: 'Created at',
    },
  },
  order: {
    summary: 'Order summary',
    taskQueue: 'Order task queue',
    sourceMessage: 'Source message',
    businessKeySource: 'Business key source',
    updatedAt: 'Last updated',
    guestName: 'Guest',
    arrivalDate: 'Arrival date',
    roomType: 'Room type',
    amount: 'Amount',
    openTask: 'Handle task',
    groupCode: 'Group Code',
    confirmationNumber: 'Confirmation No.',
    temporaryOrderNo: 'Temporary order no.',
    blockCode: 'Block Code',
    createdAt: 'Created at',
    conversationMessageCount: 'Conversation messages',
    sourceSummaryPending: 'Source email summary fields for the order task timeline are pending backend support. Open a task for available source details.',
  },
  taskList: {
    title: 'Task list',
    subtitle: 'Review Reservation work by task queue',
    keyword: 'Order / email keyword',
    keywordPlaceholder: 'Order no. / email keyword',
    taskType: 'Task type',
    taskSubtype: 'Task subtype',
    tableTitle: 'Task data',
    totalSuffix: 'tasks',
    noSourceSubject: 'No source subject',
    canProcess: 'Processable',
    cannotProcess: 'Not processable',
    queueParticipation: 'Queue participation',
    queueAll: 'All queue states',
    queueIncluded: 'In queue',
    queueExcluded: 'Not in queue',
    viewTask: 'View task',
    viewOrder: 'View order',
    viewConversation: 'View email conversation',
    sourceOnlyOrderLabel: 'Source message only',
    hiddenTechnicalOrder: 'No visible order',
    columns: {
      task: 'Task',
      order: 'Order',
      card: 'Task card',
      status: 'Status',
      source: 'Source email',
      queue: 'Queue',
    },
  },
  task: {
    title: 'Task card',
    fieldContract: 'Field contract',
    evidence: 'Evidence',
    saveDraft: 'Save draft',
    confirm: 'Confirm task',
    blocked: 'Blocked',
    readOnly: 'Read only',
    operaOperations: 'OPERA simulation',
    audits: 'Audit timeline',
    noOperations: 'OPERA simulation operations are created after confirmation.',
    noAudits: 'No audit records yet.',
    execute: 'Execute',
    retry: 'Retry',
    simulateFailure: 'Simulate failure',
    fieldNotes: 'Field notes',
    emptyValue: 'Empty',
    attachments: 'Attachments',
    fieldAreaFallback: 'Basic information',
    savedLocally: 'Draft saved',
    confirmedLocally: 'Task confirmed',
    validationFailed: 'Fix field errors first',
    validation: {
      required: '{field} is required',
      enum: '{field} must use one of the allowed options',
      date: '{field} must use YYYY-MM-DD',
      number: '{field} must be a number',
    },
    viewOrder: 'View order',
    viewConversation: 'View email conversation',
    parentGroup: 'Parent Group',
    sourceMessageId: 'Source message ID',
    sourceSubject: 'Source subject',
    sourceSender: 'Sender',
    sourceReceivedAt: 'Received at',
    sourceSummaryPending: 'Source email summary fields are pending backend support',
    sourceOnlyResult: 'Source message entry result',
    sourceOnlyReadonly: 'This task only shows the source message entry result. It does not enter order handling, field editing, or OPERA operations.',
    sourceOnlyNoOpera: 'This task type does not involve OPERA operations.',
    routeInfo: 'Route and processing',
    resultType: 'Result type',
    aiTaskType: 'AI task type',
    systemTaskType: 'System task type',
    taskCardType: 'Task card type',
    taskSubtype: 'Task subtype',
    routeCode: 'Route code',
    systemProcessCategory: 'System process category',
    reviewStatus: 'Review status',
    entryResultCode: 'Entry result code',
    entryResultMeaning: 'Result meaning',
    entryResultDescription: 'Result description',
    entryResultSourceMessageId: 'Result source message ID',
    rawAnswer: 'SuperAgent raw answer',
    agentAssessment: 'AI raw fields',
    sourceNotification: 'Source message notification',
    manualReviewData: 'Manual review data',
    manualReviewEvidence: 'Manual review evidence',
    manualReviewEvidenceFallback: 'Confirm the Parent Group identity from the source email and candidates.',
    manualReviewMissingFields: 'Missing fields',
    manualReviewBlockingPoints: 'Blocking points',
    manualReviewConflictingPoints: 'Conflicting points',
    manualReviewSuggestedActions: 'Suggested actions',
    manualReviewEvidenceToCheck: 'Evidence to check',
    parentIdentityCandidates: 'Parent Group candidates',
    parentIdentityCandidate: 'Candidate',
    noParentIdentityCandidates: 'No Parent Group candidates yet. Backend should expose context_used.parent_identity_candidates.',
    adapterContractErrors: 'Adapter contract errors',
    unhandledIntents: 'Unhandled intents',
    noSourceOnlyResult: 'No source message entry result is available.',
    manualResolution: {
      title: 'Manual review resolution',
      description: 'Fill missing fields on the original task card. The backend validates and unblocks the task after submission.',
      pendingStatus: 'Pending review',
      resolvedTitle: 'Review resolved',
      reasonCode: 'Reason code',
      reviewInstruction: 'Review instruction',
      confirmedOrderId: 'Confirmed order ID',
      fieldValuePlaceholder: 'Enter the confirmed value',
      noSupportedMissingFields: 'The current missing fields are not supported for frontend resolution yet. Confirm field mapping with backend.',
      fieldRequired: 'Fill the missing field values and confirmed order ID',
      reason: 'Resolution note',
      reasonPlaceholder: 'Optional note for the manual decision',
      submit: 'Submit review result',
      succeeded: 'Manual review resolved. Task status has been refreshed.',
    },
    manualConversion: {
      title: 'Manual conversion',
      description: 'Convert a Fallback / manual review task into a processable reservation task.',
      targetTaskType: 'Target task type',
      targetOrder: 'Target order',
      targetOrderHelp: 'Update or cancel tasks must select a non-deleted order.',
      targetOrderKeyword: 'Target order search',
      targetOrderKeywordPlaceholder: 'Group code, confirmation no., or order keyword',
      searchTargetOrders: 'Search orders',
      noTargetOrderCandidates: 'Enter a keyword and search for target orders',
      orderDeletedDisabled: 'Deleted orders cannot be selected',
      newBookingHint: 'New booking conversion does not require a target order; the backend will reassign by task context.',
      reason: 'Reason',
      reasonPlaceholder: 'Optional note for the manual decision',
      submit: 'Convert task',
      targetOrderRequired: 'Select a target order',
      succeeded: 'Manual conversion completed: {taskType}, target order {orderId}',
      orderId: 'Order ID',
    },
  },
  conversation: {
    title: 'Email conversation detail',
    subtitle: 'Review all messages in the source email conversation',
    endpointPending: 'The email conversation detail endpoint is pending backend implementation. No fixture data is shown.',
    subject: 'Conversation subject',
    messageCount: 'Messages',
    channel: 'Channel',
    firstReceivedAt: 'First received',
    lastReceivedAt: 'Last received',
    emptyBody: 'Empty message body',
    attachments: 'Attachments / inline images',
    unnamedAttachment: 'Unnamed attachment',
    relatedOrders: 'Related orders',
    relatedTasks: 'Related tasks',
  },
  debugEml: {
    title: 'Debug EML upload',
    subtitle: 'Upload one .eml email and review SourceMessage and SuperAgent debug results',
    uploadConfig: 'Upload configuration',
    hotelId: 'Hotel ID',
    debugUploadKey: 'Debug upload key',
    runLabel: 'Run label',
    emlFile: '.eml file',
    submit: 'Submit debug run',
    submitting: 'Waiting for SuperAgent',
    executionStatus: 'Execution status',
    status: 'Status',
    debugRunId: 'Debug run ID',
    backendStatus: 'Backend status',
    backendMessage: 'Backend message',
    waitingSuperAgent: 'Parsing the email and waiting for SuperAgent',
    systemStages: 'System stages',
    superAgentTrace: 'SuperAgent Trace',
    traceToolName: 'Tool',
    traceInputSummary: 'Input summary',
    traceOutputSummary: 'Output summary',
    traceStatus: 'Status',
    traceTime: 'Time',
    sourceTrace: 'SourceMessage trace',
    sourceMessageId: 'SourceMessage ID',
    sourceProvider: 'Source provider',
    externalMessageId: 'External message ID',
    externalConversationId: 'External conversation ID',
    mailPreview: 'Email preview',
    noSafeHtml: 'No safe HTML body is available',
    uploadedMedia: 'Uploaded media',
    unnamedMedia: 'Unnamed media',
    rawHtml: 'Raw processed HTML',
    superAgentResult: 'SuperAgent result',
    superAgentSessionId: 'SuperAgent session ID',
    superAgentRunId: 'SuperAgent run ID',
    parsedJson: 'Parsed JSON',
    rawAnswer: 'Raw answer',
    warnings: 'Warnings',
    debugPayload: 'Debug payload',
    statuses: {
      idle: 'Idle',
      uploading: 'Running',
      succeeded: 'Succeeded',
      failed: 'Failed',
    },
    errors: {
      REQUEST_FIELD_REQUIRED: 'Required fields are missing. Check hotel ID, file, or request parameters',
      EML_FILE_REQUIRED: 'Choose an .eml email file',
      EML_FILE_TOO_LARGE: 'The email file exceeds the backend limit',
      INVALID_FILE_TYPE: 'Only .eml email files are supported',
      DEBUG_UPLOAD_KEY_INVALID: 'The debug upload key is missing or invalid',
      EML_PARSE_FAILED: 'The email file could not be parsed',
      OSS_UPLOAD_FAILED: 'OSS upload failed. Contact backend support',
      SUPERAGENT_OPEN_API_FAILED: 'SuperAgent call failed. SourceMessage may already be captured',
      DEBUG_EML_RUN_FAILED: 'Debug EML run failed internally',
      UNKNOWN: 'Debug EML upload failed',
    },
  },
  status: {
    TEMPORARY: 'Temporary',
    ACTIVE: 'Active',
    ENDED: 'Ended',
    LOGIC_DELETED: 'Deleted',
    PENDING_CONFIRM: 'Pending confirmation',
    READY: 'Ready',
    EXECUTING: 'Executing',
    FAILED: 'Failed',
    COMPLETED: 'Completed',
    PENDING: 'Pending',
    SUCCEEDED: 'Succeeded',
    BLOCKED: 'Blocked',
    SKIPPED: 'Skipped',
  },
  cardType: {
    NEW_BOOKING: 'New booking',
    UPDATE_BOOKING: 'Update booking',
    CANCEL_BOOKING: 'Cancel booking',
    CANCEL_ALLOTMENT: 'Cancel Parent Group allotment',
    VOUCHER: 'Voucher',
    ROOMING_LIST: 'Rooming list',
    AMEND_GROUP_CODE: 'Amend group code',
    TRACE_NOTE: 'Trace / notes',
    TA_RECORD: 'TA record',
    MESSAGE_NOTIFICATION: 'Message notification',
    INFORMATIONAL_MESSAGE: 'Message notification (legacy)',
    SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'Source message notification',
    SOURCE_MESSAGE_ONLY: 'Source message only',
    MANUAL_REVIEW: 'Manual review',
    FALLBACK_REVIEW: 'Manual review',
  },
  taskSubtype: {
    NEW_BOOKING: 'New booking',
    UPDATE_BOOKING: 'Update booking',
    CANCEL_BOOKING: 'Cancel booking',
    RATE_CHANGE: 'Rate change',
    UPDATE_STAY_DATES: 'Update stay dates',
    UPDATE_ROOM_TYPE: 'Update room type',
    UPDATE_FIX_CHARGE: 'Update fixed charge',
    CANCEL_ALLOTMENT_CONTROL_BLOCK: 'Cancel Parent Group control block',
    NEW_GROUP_BLOCK: 'New group block',
    NEW_FIT_RESERVATION: 'New FIT reservation',
    MANUAL_REVIEW: 'Manual review',
    S10: 'Pure informational email (S10)',
    S99: 'Business material package unavailable (S99)',
    S000: 'Pure informational email',
    S999: 'Business material package unavailable',
  },
  resultType: {
    NORMAL_TASK: 'Normal task',
    MANUAL_REVIEW: 'Manual review',
    SOURCE_MESSAGE_REVIEW_NOTIFICATION: 'Source message notification',
    ADAPTER_CONTRACT_ERROR: 'Adapter contract error',
    UNHANDLED_CURRENT_INTENT: 'Unhandled intent',
  },
  systemProcessCategory: {
    BUSINESS_TASK: 'Business task',
    SOURCE_MESSAGE_NOTIFICATION: 'Source message notification',
    ADAPTER_CONTRACT_ERROR: 'Adapter contract error',
    UNHANDLED_CURRENT_INTENT: 'Unhandled intent',
  },
  readonlyReason: {
    PROCESSABLE: 'Processable',
    PREVIOUS_TASK_NOT_FINISHED: 'Previous task is not finished',
    TASK_FINISHED: 'Task finished',
    TASK_READ_ONLY: 'Task is read only',
    ORDER_CLOSED: 'Order closed',
    QUEUE_EXCLUDED: 'Not in queue',
    BLOCKED: 'Blocked',
    MANUAL_REVIEW_REQUIRED: 'Manual review required',
  },
  actorType: {
    USER: 'User',
    SYSTEM: 'System',
    AI: 'AI',
    AGENT: 'Agent',
    BACKEND: 'Backend service',
  },
  auditAction: {
    TASK_CREATED: 'Task created',
    TASK_LOADED: 'Task loaded',
    TASK_CONFIRMED: 'Task confirmed',
    TASK_CONFIRM: 'Task confirmed',
    DRAFT_SAVED: 'Draft saved',
    TASK_UPDATED: 'Task updated',
    OPERA_EXECUTED: 'OPERA executed',
    OPERA_RETRIED: 'OPERA retried',
    MANUAL_REVIEW_CREATED: 'Manual review created',
    MANUAL_REVIEW_CONVERT: 'Manual conversion',
    MANUAL_REVIEW_RESOLVED: 'Manual review resolved',
  },
  operaOperation: {
    CREATE_RESERVATION: 'Create reservation',
    UPDATE_RESERVATION: 'Update reservation',
    CANCEL_RESERVATION: 'Cancel reservation',
    UPDATE_ROOMING_LIST: 'Update rooming list',
    ADD_TRACE_NOTE: 'Add trace note',
  },
}
