/**
 * 会议出勤模块翻译 - 中文
 */
export const meetingAttendanceZh = {
  nav: {
    dashboard: '总览',
    meetings: '会议管理',
    series: '系列会议',
    templates: '模板管理',
    users: '用户管理',
    reports: '报表统计',
    auditLogs: '审计日志',
    checkin: '签到',
    guestCheckin: '访客签到',
    changePassword: '修改密码',
    passwordShort: '密码',
    signOut: '退出登录',
    teamsMeetings: 'Teams 会议',
    teamsReports: 'Teams 报表',
    teamsConfig: 'Teams 配置',
    outlookSync: 'Outlook 同步',
    outlookBindings: '已绑定会议',
    help: '使用说明',
    systemLabel: '会议出勤管理系统',
    systemAdmin: '系统管理员',
    systemUser: '系统用户',
  },
  allowedMode: {
    onSite: '线下',
    online: '线上',
    notSet: '未设置 ⚠️',
    sourceCityDerived: '按工作地派生',
    sourceSeriesPreference: '系列默认',
    sourceMeetingOverride: '会议级覆盖',
    overrideTooltip: '原默认：{defaultMode} / 改为：{newMode}',
    notSetTooltip: '用户工作地未配置，无法派生签到方式',
    columnLabel: '允许签到方式',
    filterOnSite: '允许线下',
    filterOnline: '允许线上',
    filterNotSet: '未设置',
    filterOverridden: '已调整',
    actionChangeToOnSite: '改为线下',
    actionChangeToOnline: '改为线上',
    actionRestoreDefault: '恢复默认',
    actionUpdateSuccess: '已更新',
    actionUpdateFailed: '更新失败',
    adjustmentCountLabel: '调整次数',
    adjustmentCountInline: '调整 {count} 次',
  },
  enforceCheckinMode: {
    label: '签到方式校验',
    on: '已开启',
    off: '已关闭',
    guardTip: '开启前请先填写会议城市',
    toggleSuccess: '签到方式校验已更新',
    toggleFailed: '更新签到方式校验失败',
  },
  common: {
    moduleName: '会议出勤',
    moduleDescription: '会议出勤管理与统计',
    loading: '加载中...',
    empty: '暂无数据',
    back: '返回',
    actions: '操作',
    create: '创建',
    viewDetails: '查看详情',
    qrCodes: '二维码',
    creator: '创建人',
    location: '地点',
    time: '时间',
    start: '开始',
    end: '结束',
    required: '必到',
    present: '已到',
    late: '迟到',
    absent: '缺席',
    pending: '页面正在迁移中',
    notAvailable: '无',
    meetingTimezoneTime: '会议时区时间',
    viewerTimezoneTime: '当前时区时间',
  },
  permissions: {
    noAccessTitle: '权限不足',
    noAccessDescription: '你没有权限执行该操作。',
    backToMeetings: '返回会议列表',
  },
  meetingForm: {
    createTitle: '创建会议',
    createSubtitle: '填写会议信息以创建新会议。',
    infoTitle: '会议信息',
    infoDescription: '请完成所有必填会议信息。',
    titleLabel: '标题',
    titlePlaceholder: '请输入会议标题',
    descriptionLabel: '描述',
    descriptionPlaceholder: '请输入会议描述（可选）',
    timezoneLabel: '时区',
    startTimeLabel: '开始时间',
    endTimeLabel: '结束时间',
    locationLabel: '地点',
    locationPlaceholder: '请输入会议地点（可选）',
    typeLabel: '会议类型',
    typeOffline: '线下会议',
    typeOnline: '线上会议',
    typeHybrid: '混合会议',
    cancel: '取消',
    saving: '保存中...',
    createAction: '创建会议',
    editTitle: '编辑会议',
    editAction: '保存',
    cityLabel: '会议城市',
    cityPlaceholder: '输入或选择城市，如 Beijing / Los Angeles',
    cityHint: '与用户工作地对比派生线上/线下签到',
    enforceCheckinModeHint: '需先填写会议城市才能开启；绑定系列时跟随系列',
    inheritedFromSeries: '跟随系列',
  },
  meetings: {
    title: '会议管理',
    subtitle: '管理和查看全部会议',
    create: '创建会议',
    filterAll: '全部',
    filterScheduled: '未开始',
    filterInProgress: '进行中',
    filterCompleted: '已结束',
    emptyTitle: '暂无会议',
    emptyDescription: '当前没有创建任何会议，请先创建会议。',
    pageLabel: '第 {page} / {totalPages} 页（共 {total} 条）',
    prevPage: '上一页',
    nextPage: '下一页',
  },
  series: {
    title: '系列会议',
    subtitle: '创建并管理周期性会议',
    createAction: '创建系列会议',
    createFormTitle: '创建系列会议',
    createFormDescription: '创建一个周期性会议系列',
    formTitleLabel: '系列标题 *',
    formTitlePlaceholder: '例如：技术部周会',
    formLocationLabel: '地点',
    formLocationPlaceholder: '会议室或会议链接',
    formDescriptionLabel: '描述',
    formDescriptionPlaceholder: '请输入系列会议描述',
    formPatternLabel: '重复模式 *',
    patternDailyOption: '每日',
    patternWeeklyOption: '每周',
    patternMonthlyOption: '每月',
    patternYearlyOption: '每年',
    formFrequencyLabel: '频率',
    formDurationLabel: '时长（分钟）*',
    formMaxOccurrencesLabel: '最大次数',
    formTimezoneLabel: '时区 *',
    formStartDateTimeLabel: '开始日期与时间 *',
    formEndDateLabel: '结束日期',
    formTypeLabel: '会议类型',
    formAttendeesLabel: '默认参会人',
    formAddAttendeesAction: '添加参会人',
    formCancelAction: '取消',
    formSubmitAction: '创建系列会议',
    loadFailed: '系列会议加载失败',
    createSuccess: '系列会议已创建',
    createFailed: '系列会议创建失败，请稍后重试',
    toggleFailed: '操作失败，请稍后重试',
    deleteConfirm: '确认删除该系列会议？此操作不可撤销。',
    deleteSuccess: '系列会议已删除',
    deleteFailed: '系列会议删除失败，请稍后重试',
    updateSuccess: '系列会议已更新',
    updateFailed: '系列会议更新失败，请稍后重试',
    historyLoadFailed: '历史记录加载失败',
    scheduleMissingFields: '请填写完整信息',
    scheduleUpdating: '正在更新会议时间...',
    scheduleUpdateSuccess: '已更新 {count} 场会议',
    scheduleUpdateFailed: '更新时间失败，请稍后重试',
    attendeesLoadFailed: '参会人加载失败',
    attendeesAdded: '参会人已添加',
    attendeesAddFailed: '添加参会人失败，请稍后重试',
    attendeeRemoved: '参会人已移除，删除 {deletedCount} 条记录，影响 {affectedMeetings} 场会议',
    attendeeRemoveFailed: '移除参会人失败，请稍后重试',
    attendeeRoleMissing: '缺少必要信息',
    attendeeRoleUpdating: '正在更新参会角色...',
    attendeeRoleUpdated: '已更新 {updatedCount} 条记录，影响 {affectedMeetings} 场会议',
    attendeeRoleUpdateFailed: '更新参会角色失败，请稍后重试',
    patternDaily: '每 {frequency} 天',
    patternWeekly: '每 {frequency} 周',
    patternMonthly: '每 {frequency} 月',
    patternYearly: '每 {frequency} 年',
    recurrenceMaxOccurrences: '最大次数 {count}',
    recurrenceEndDate: '结束于 {date}',
    recurrenceByEndDate: '按结束日期',
    recurrenceUnlimited: '无限期/未设置',
    qrRangeEmpty: '所选日期范围内没有会议',
    qrTypeAll: '全部',
    qrTypeOnlineOnly: '仅线上',
    qrTypeOnsiteOnly: '仅线下',
    qrPrepare: '正在准备 {count} 场会议的{type}二维码...',
    qrDownloadSuccess: '二维码已下载',
    qrDownloadFailed: '二维码下载失败',
    wordPreparing: '正在生成 {count} 场会议的 Word 文档{type}...',
    qrRangeStartFallback: '开始',
    qrRangeEndFallback: '结束',
    qrRangeTo: '至',
    wordTitle: '系列二维码 - {count} 场会议{range}{type}',
    wordDateLabel: '日期',
    wordLocationLabel: '地点',
    qrOnlineLabel: '线上签到二维码',
    qrOnlineMissing: '线上二维码不可用',
    qrOnsiteLabel: '线下签到二维码',
    qrOnsiteMissing: '线下二维码不可用',
    wordGenerateSuccess: 'Word 文档已生成',
    wordGenerateFailed: 'Word 文档生成失败',
    instancesCount: '{count} 场会议',
    createdByLabel: '创建人：{name}',
    instancesTitle: '会议实例',
    instancesShowLess: '收起',
    instancesShowMore: '查看更多（{count}）',
    emptyTitle: '暂无系列会议',
    emptyDescription: '请先创建系列会议',
    editFormTitle: '编辑系列会议',
    editFormDescription: '修改系列会议设置',
    editFormSubmitAction: '保存修改',
    historyTitle: '会议历史',
    historySummary: '已完成 {totalMeetings} 场会议，平均出勤率 {averageAttendance}%',
    historyEmpty: '暂无已完成会议',
    historyAttendanceRate: '出勤率',
    historyRequired: '{count} 应到',
    historyAttended: '{count} 已到',
    historyAbsent: '{count} 缺席',
    historyAttendeesLabel: '参会人：',
    attendeeManageTitle: '管理默认参会人',
    attendeeManageDescription: '管理系列会议默认参会人（适用于未开始和进行中的会议）',
    attendeeManageCurrent: '当前默认参会人（{count}）',
    attendeeAddAction: '添加参会人',
    attendeeCompanyLabel: '公司：{value}',
    attendeeDepartmentLabel: '部门：{value}',
    attendeeNoneTitle: '暂无默认参会人',
    attendeeNoneDescription: '点击“添加参会人”开始配置',
    closeAction: '关闭',
    attendeeAddModalTitle: '添加参会人',
    attendeeAddModalDescription: '选择参会人并设置角色',
    attendeeRoleModalTitle: '编辑参会角色',
    attendeeRoleModalDescription: '更新当前与未来会议的参会角色',
    attendeeRoleNoticeTitle: '重要提示：',
    attendeeRoleNoticeItemCurrent: '仅更新进行中与未开始的会议',
    attendeeRoleNoticeItemPast: '已结束的会议不会被修改',
    attendeeRoleAttendeeLabel: '参会人',
    attendeeRoleCurrent: '当前角色：{role}',
    attendeeRoleNewLabel: '新角色',
    attendeeRoleNewHint: '选择该参会人的新角色',
    attendeeRoleUpdateAction: '更新角色',
    createAttendeeModalTitle: '添加参会人',
    createAttendeeModalDescription: '选择参会人并设置角色',
    scheduleModalTitle: '更新会议时间',
    scheduleModalDescription: '修改所有未开始/进行中会议的开始时间与时长',
    scheduleNoticeTitle: '重要提示：',
    scheduleNoticeItemCurrent: '仅更新未开始和进行中的会议',
    scheduleNoticeItemPast: '已结束和已取消的会议不会被修改',
    scheduleStartTimeLabel: '开始时间',
    scheduleStartTimeHint: '会议开始时间（例如 09:00）',
    scheduleDurationLabel: '时长（分钟）',
    scheduleDurationHint: '每场会议的持续时间',
    scheduleTimezoneLabel: '时区',
    scheduleTimezoneHint: '会议时间所在时区',
    scheduleUpdateAction: '更新会议时间',
    scheduleUpdateHint: '更新开始时间与时长',
    qrDownloadZipHint: '按日期范围下载 ZIP 二维码',
    qrDownloadWordHint: '按日期范围下载 Word 二维码',
    rangeTitle: '选择日期范围',
    rangeDescription: '选择需要包含的会议时间范围',
    rangeStartLabel: '开始日期',
    rangeEndLabel: '结束日期',
    qrTypeLabel: '二维码类型',
    qrTypeBothOption: '全部',
    qrTypeOnlineOption: '线上',
    qrTypeOnsiteOption: '线下',
    rangeCountIncluded: '将包含 {count} 场会议',
    rangeCountEmpty: '该范围内没有会议',
    rangeTotalLabel: '系列会议总数：{count}',
    rangeDownloadZip: '下载 ZIP',
    rangeDownloadWord: '下载 Word',
    formCityLabel: '系列城市',
    formCityPlaceholder: '输入或选择城市，如 Beijing',
    formCityHint: '用于下属会议签到方式派生；保存时级联刷新所有下属会议的城市',
    enforceCheckinModeHint: '需先填写系列城市才能开启；保存后级联刷新下属会议',
    attendeeSearchPlaceholder: '搜索姓名或邮箱...',
    attendeeBulkSelectedCount: '已选 {count} 人',
    attendeeBulkSetOnSite: '批量线下',
    attendeeBulkSetOnline: '批量线上',
    attendeeBulkSetFollowWorkCity: '批量跟随工作地',
    attendeeBulkUpdateSuccess: '已更新 {count} 人',
    attendeePrefLabel: '签到方式',
    attendeePrefFollow: '跟随工作地',
    attendeePrefOnSite: '线下',
    attendeePrefOnline: '线上',
    attendeePrefUpdateSuccess: '偏好已更新',
    attendeePrefUpdateFailed: '更新偏好失败',
  },
  meetingDetail: {
    title: '会议详情',
    subtitle: '会议详情与出勤统计',
    notFoundTitle: '会议不存在',
    notFoundDescription: '未找到对应的会议信息。',
    infoTitle: '会议信息',
    scheduleLabel: '会议时间',
    descriptionEmpty: '暂无描述',
    locationEmpty: '未设置地点',
    attendanceRate: '出勤率',
    optionalLabel: '可选',
    attendanceStats: '出勤统计',
    attendanceStatsHint: '点击筛选',
    clearFilter: '清除筛选',
    attendeeTitle: '参会人',
    attendeeTitleWithCount: '参会人（{current} / {total}）',
    attendeeSubtitle: '管理参会人并查看出勤状态',
    addAttendees: '添加参会人',
    refresh: '刷新出勤状态',
    searchPlaceholder: '搜索...',
    filterAll: '全部状态',
    filterTitle: '按状态筛选',
    selectAttendanceStatus: '选择出勤状态',
    noAttendees: '暂无参会人',
    noAttendeesWithStatus: '当前筛选无结果',
    checkinTime: '签到时间',
    checkinMethod: '方式',
    checkinMethodQr: '二维码',
    checkinMethodManual: '手动',
    checkinMethodOther: '其他',
    notes: '备注',
    deleteMeeting: '删除会议',
    editMeeting: '编辑',
    viewAgenda: '会议议程',
    viewReports: '查看报表',
    externalAttendeesTitle: 'Outlook 外部参会信息',
    externalAttendeesSubtitle: '同步快照共 {count} 条（含组织者与外部参会人）',
    externalAttendeesEmpty: '暂无外部参会人快照',
    externalName: '姓名',
    externalEmail: '邮箱',
    externalRole: '来源角色',
    externalType: '参会类型',
    externalResponse: '邀请回复状态',
    externalOrganizer: '组织者',
    externalAttendee: '参会人',
    externalAttendeeTypeRequired: '必需',
    externalAttendeeTypeOptional: '可选',
    externalAttendeeTypeResource: '资源',
    externalResponseAccepted: '已接受',
    externalResponseDeclined: '已拒绝',
    externalResponseTentative: '暂定接受',
    externalResponseNotResponded: '未回复',
    externalResponseNone: '无回复',
    syncLockedTitle: '该会议已转为本地维护',
    syncLockedDescription: '该会议已进行本地修改，已停止从 Outlook 自动同步。',
    syncLockedMeta: '锁定时间：{time}；操作人：{user}；原因：{reason}',
    syncResumeAction: '恢复 Outlook 同步',
    syncResumeLoading: '恢复中...',
    syncResumeConfirm: '确认恢复从 Outlook 自动同步？本地已做的修改将在下次同步时被 Outlook 原始值覆盖',
    syncResumeSuccess: '已恢复 Outlook 同步',
    syncResumeFailed: '恢复 Outlook 同步失败',
    cityLabel: '会议城市',
    cityEmpty: '未设置',
  },
  qrPage: {
    title: '会议签到二维码',
    subtitle: '线上/线下二维码',
    backToMeeting: '返回会议详情',
    refresh: '刷新二维码 | 刷新二维码',
    onlineTitle: '线上签到二维码 | 线上签到二维码',
    onlineSubtitle: '适用于远程参会人员 | 适用于远程参会人员',
    onlineUnavailable: '线上二维码不可用',
    offlineTitle: '现场签到二维码 | 现场签到二维码',
    offlineSubtitle: '适用于现场参会人员 | 适用于现场参会人员',
    offlineUnavailable: '现场二维码不可用',
    downloadImage: '下载图片 | 下载图片',
    instructionsTitle: '使用说明 | 使用说明',
    onlineInstructionsSubtitle: '如何使用线上签到二维码 | 如何使用线上签到二维码',
    offlineInstructionsSubtitle: '如何使用现场签到二维码 | 如何使用现场签到二维码',
    step1Title: '打开手机扫描二维码 | 打开手机扫描二维码',
    step1DescEn: '使用手机扫描二维码，输入姓名，完成签到。',
    step1DescZh: '使用手机扫描二维码，输入姓名，完成签到。',
    step2Title: '开会前 15 分钟可签到 | 开会前 15 分钟可签到',
    step2DescEn: '二维码会在开始前 15 分钟开放签到。',
    step2DescZh: '二维码会在开始前 15 分钟开放签到。',
    step3Title: '开会后 8 分钟记录迟到 | 开会后 8 分钟记录迟到',
    step3DescEn: '会议开始 8 分钟后签到将被标记为迟到。',
    step3DescZh: '会议开始 8 分钟后签到将被标记为迟到。',
    tipsTitle: '提示 | 提示',
    tipsOnline1: '适用于远程线上参会者 | 适用于远程线上参会者',
    tipsOffline1: '适用于现场参会者 | 适用于现场参会者',
    tips2: '每人仅可签到一次 | 每人仅可签到一次',
    tips3: '请按时签到避免迟到 | 请按时签到避免迟到',
    tips4: '如有任何问题，请联系运营团队 | 如有任何问题，请联系运营团队',
    meetingInfoTitle: '会议信息',
    meetingInfoTitleLabel: '标题：',
    meetingInfoDescriptionLabel: '描述：',
    meetingInfoStartLabel: '开始时间：',
    meetingInfoEndLabel: '结束时间：',
    meetingInfoLocationLabel: '地点：',
    meetingInfoStatusLabel: '状态：',
    meetingInfoDescriptionEmpty: '暂无会议描述',
    toastGenerating: '正在生成图片... | 正在生成图片...',
    toastCanvasFailed: '创建画布失败 | 创建画布失败',
    toastGenerateFailed: '生成图片失败 | 生成图片失败',
    toastTemplateFailed: '模板加载失败 | 模板加载失败',
    toastQrFailed: '二维码加载失败 | 二维码加载失败',
  },
  checkin: {
    title: '会议签到',
    subtitle: '请扫码或手动签到',
    loading: '签到中...',
    selectType: '请选择出勤方式',
    onSiteTitle: '线下参会',
    onSiteDesc: '现场参会',
    onlineTitle: '线上参会',
    onlineDesc: '远程参会',
    action: '签到',
    successTitle: '签到成功',
    successMessage: '签到完成，记录已提交。',
    failureTitle: '签到失败',
    lateSuccessMessage: '签到成功，但已记录为迟到。',
    meetingInfoTitle: '会议信息',
    meetingTimeLabel: '会议时间',
    localTimeLabel: '本地时间',
    availableFrom: '签到开放时间：{time}',
    notAvailableTitle: '暂未开放签到',
    notAvailableDesc: '会议开始前 15 分钟开放签到',
    backHome: '返回首页',
    viewMeeting: '查看会议',
    backToMeetings: '查看我的会议',
    scanHint: '请扫描会议二维码签到',
    contactHint: '或联系会议管理员获取签到链接',
    lateHint: '你已迟到，请注意时间',
    recordedHint: '签到记录已提交，会议组织者可查看你的状态。',
    attendeeLabel: '参会人',
    meetingLabel: '会议',
    checkinMeetingTz: '签到时间（会议时区）',
    checkinLocalTz: '签到时间（本地时区）',
    invalidInfo: '签到信息无效',
    failed: '签到失败，请稍后重试',
  },
  guestCheckin: {
    title: '访客签到',
    subtitle: '填写信息完成签到',
    invalidLinkTitle: '签到链接无效',
    invalidLinkDesc: '请确认二维码或链接是否正确。',
    loadingMeeting: '正在加载会议信息...',
    meetingNotFoundTitle: '会议不存在',
    nameLabel: '姓名',
    namePlaceholder: '请输入姓名',
    emailLabel: '邮箱',
    emailPlaceholder: '请输入邮箱（可选）',
    searchPlaceholder: '搜索参会人',
    scanBadge: '扫码签到',
    onlineTitle: '线上会议签到',
    offlineTitle: '线下会议签到',
    personalInfoTitle: '个人信息',
    checkinAction: '提交签到',
    checkingIn: '签到中...',
    successTitle: '签到成功',
    successMessage: '签到完成，记录已提交。',
    failureTitle: '签到失败',
    failureMessage: '签到失败，请稍后重试。',
    meetingNotFound: '会议不存在或已下线',
    checkinNotAvailable: '暂未开放签到',
    notInList: '不在参会名单',
    meetingInfoTitle: '会议信息',
    meetingTimeLabel: '会议时间',
    localTimeLabel: '本地时间',
    availableFrom: '签到开放时间：{time}',
    lateHint: '你已迟到',
    lateSuccessMessage: '签到成功，但已记录为迟到。',
    recordedHint: '签到记录已提交。',
    meetingCompletedTitle: '会议已结束',
    meetingCompletedDesc: '会议已结束，无法签到。',
    meetingCancelledTitle: '会议已取消',
    meetingCancelledDesc: '会议已取消，无法签到。',
    alreadyCheckedIn: '你已完成签到，请勿重复操作。',
    deviceUsed: '该设备已签到过本场会议，无法重复签到。',
    wrongCheckinQrCode: '请使用线下/线上专属二维码',
    wrongCheckinUseOnSite: '请使用"线下"专属二维码签到',
    wrongCheckinUseOnline: '请使用"线上"专属二维码签到',
    workCityNotConfigured: '请联系管理员配置您的工作地',
    meetingCityNotConfigured: '会议未配置地点',
    footerScanHint: '请扫码签到',
    footerContactHint: '如有疑问请联系会议运营团队',
  },
  attendance: {
    onSite: '线下',
    online: '线上',
    absent: '缺席',
    pto: '请假',
    businessConflict: '业务冲突',
    late: '迟到',
    notCheckedIn: '未签到',
  },
  attendees: {
    roleLabel: '参会角色',
    roleCsuite: '高管参会人',
    roleLevel1: '一级汇报',
    roleLevel2: '二级汇报',
    roleOperations: '会议运营',
    roleRegular: '普通参会人',
    roleOptional: '可选参会人',
    searchPlaceholder: '搜索用户姓名或邮箱',
    selected: '已选',
    add: '添加',
    addConfirm: '确认添加',
    cancel: '取消',
  },
  messages: {
    createFailed: '创建失败，请稍后重试',
    updateFailed: '更新失败，请稍后重试',
    deleteConfirm: '确认删除该会议？此操作不可撤销。',
    removeAttendeeConfirm: '确认移除该参会人？',
    deleteFailed: '删除失败，请稍后重试',
    updateSuccess: '会议更新成功',
    attendeesAdded: '参会人已添加',
    attendeeRemoved: '参会人已移除',
  },
  status: {
    scheduled: '未开始',
    inProgress: '进行中',
    completed: '已结束',
    cancelled: '已取消',
  },
  type: {
    offline: '线下',
    online: '线上',
    hybrid: '混合',
  },
  dashboard: {
    title: '会议总览',
    subtitle: '会议出勤管理入口',
    welcome: '欢迎回来，{name}',
    defaultUser: '用户',
    todayLabel: '{date}',
    todayMeetings: '今日会议数',
    activeMeetings: '进行中会议',
    totalUsers: '总用户数',
    todayAttendance: '今日签到数',
    todayMeetingsDesc: '今天安排的会议数量',
    activeMeetingsDesc: '未开始与进行中的会议',
    totalUsersDesc: '系统注册用户总数',
    todayAttendanceDesc: '今日完成签到的人数',
    systemStatusTitle: '系统状态',
    systemStatusSubtitle: '系统健康概览',
    systemStatusNormal: '正常',
    systemStatusOk: '正常',
    systemStatusMeeting: '会议服务',
    systemStatusCheckin: '签到服务',
    systemStatusReports: '报表服务',
    systemStatusDatabase: '数据库连接',
    systemStatusAuth: '认证服务',
    systemStatusQr: '二维码服务',
    quickActions: '快捷入口',
    quickActionsHint: '常用功能入口',
    meetingList: '会议列表',
    checkin: '签到',
    reports: '报表统计',
    createMeeting: '创建会议',
  },
  templates: {
    title: '会议模板',
    subtitle: '创建并管理会议模板，便于快速创建类似会议',
    createAction: '创建模板',
    updateAction: '保存修改',
    editAction: '编辑',
    deleteAction: '删除',
    createTitle: '创建会议模板',
    createDescription: '配置模板以快速创建类似会议',
    editTitle: '编辑会议模板',
    editDescription: '更新模板信息与默认参会人',
    nameLabel: '模板名称',
    namePlaceholder: '例如：周会模板',
    meetingTitleLabel: '会议标题',
    meetingTitlePlaceholder: '例如：技术部周会',
    descriptionLabel: '会议描述',
    descriptionPlaceholder: '请输入会议描述（可选）',
    durationLabel: '会议时长（分钟）',
    typeLabel: '会议类型',
    locationLabel: '地点',
    locationPlaceholder: '会议室或会议链接',
    publicLabel: '公开模板（其他用户可用）',
    attendeesLabel: '默认参会人',
    loadFailed: '模板加载失败',
    createSuccess: '模板创建成功',
    createFailed: '模板创建失败，请稍后重试',
    updateSuccess: '模板更新成功',
    updateFailed: '模板更新失败，请稍后重试',
    deleteConfirm: '确认删除模板“{name}”？此操作不可撤销。',
    deleteSuccess: '模板已删除',
    deleteFailed: '模板删除失败，请稍后重试',
    startTimePrompt: '请输入会议开始时间（YYYY-MM-DD HH:MM）',
    endTimePrompt: '请输入会议结束时间（YYYY-MM-DD HH:MM）',
    createMeetingSuccess: '会议创建成功',
    createMeetingFailed: '创建会议失败，请稍后重试',
    publicTag: '公开',
    durationValue: '{minutes} 分钟',
    attendeeCount: '{count} 位默认参会人',
    creatorLabel: '创建人：{name}',
    createMeetingAction: '创建会议',
    emptyTitle: '暂无模板',
    emptyDescription: '创建你的第一个会议模板',
  },
  changePassword: {
    title: '修改密码',
    subtitle: '更新你的密码以保证账号安全。',
    formTitle: '修改密码',
    formDescription: '请输入当前密码并设置新密码。',
    currentPassword: '当前密码',
    currentPasswordPlaceholder: '请输入当前密码',
    newPassword: '新密码',
    newPasswordPlaceholder: '请输入新密码（至少 6 位）',
    confirmPassword: '确认新密码',
    confirmPasswordPlaceholder: '请再次输入新密码',
    updateAction: '修改密码',
    cancelAction: '取消',
    updating: '修改中...',
    passwordHint: '密码至少 6 位字符',
    passwordTooShort: '密码至少需要 6 位字符',
    passwordMismatch: '两次输入的密码不一致',
    userNotFound: '未找到用户信息',
    updateSuccess: '密码修改成功！',
    updateSuccessDesc: '你的密码已修改，请使用新密码登录。',
    updateFailed: '密码修改失败',
    updateFailedDesc: '请检查当前密码后重试。',
  },
  users: {
    title: '用户管理',
    subtitle: '管理系统用户与权限',
    openOrgMembers: '前往组织架构管理',
    loadFailed: '用户列表加载失败',
    createAction: '创建用户',
    updateAction: '保存修改',
    createTitle: '创建用户',
    editTitle: '编辑用户',
    createSuccess: '用户创建成功',
    createSuccessWithPassword: '用户创建成功，初始密码：{password}',
    updateSuccess: '用户更新成功',
    saveFailed: '用户保存失败',
    nameLabel: '姓名',
    emailLabel: '邮箱',
    roleLabel: '角色',
    departmentLabel: '部门',
    companyLabel: '公司',
    positionLabel: '职位',
    statusLabel: '状态',
    createdMeetingsLabel: '创建会议',
    attendanceRecordsLabel: '参会次数',
    registrationDateLabel: '注册时间',
    active: '启用',
    inactive: '停用',
    activeLabel: '启用账号',
    searchLabel: '搜索用户',
    searchPlaceholder: '姓名、邮箱、部门...',
    roleFilterLabel: '角色筛选',
    allRoles: '全部角色',
    departmentFilterLabel: '部门筛选',
    allDepartments: '全部部门',
    applyFilters: '筛选',
    listTitle: '用户列表',
    pageLabel: '显示 {start} - {end} 条，共 {total} 条',
    prevPage: '上一页',
    nextPage: '下一页',
    importAction: '批量导入',
    importTitle: '批量导入用户',
    importHint: '上传 CSV 或 Excel 文件，字段需包含 email 和 name。',
    importFileRequired: '请选择导入文件',
    importSuccess: '导入完成',
    importFailed: '导入失败，请稍后重试',
    importing: '导入中...',
    downloadTemplate: '下载模板',
    downloadTemplateFailed: '模板下载失败',
    disableConfirm: '确认停用 {name}？',
    disableSuccess: '用户已停用',
    disableFailed: '停用失败',
    deleteSuccess: '用户已永久删除',
    deleteFailed: '删除失败',
    forceDeleteConfirm: '是否强制删除该用户及其关联数据？',
    resetTitle: '重置 {name} 的密码',
    resetAction: '重置密码',
    resetting: '重置中...',
    resetSuccess: '密码已重置',
    resetFailed: '重置失败',
    newPasswordLabel: '新密码',
    confirmPasswordLabel: '确认新密码',
    requirePasswordChangeLabel: '首次登录强制修改密码',
    roles: {
      admin: '管理员',
      manager: '会议出勤管理员',
      leader: '领导',
      employee: '员工',
    },
    roleDisplay: {
      admin: '系统管理员',
      manager: '会议出勤管理员',
      leader: '团队负责人',
      employee: '普通用户',
    },
  },
  auditLogs: {
    title: '审计日志',
    subtitle: '监控管理员和系统操作',
    refresh: '刷新',
    loadFailed: '加载审计日志失败',
    statsFailed: '加载审计统计失败',
    filtersTitle: '筛选条件',
    filtersDescription: '按条件筛选审计日志',
    filtersToggle: '筛选',
    userEmailLabel: '用户邮箱',
    userEmailPlaceholder: '按邮箱筛选',
    actionLabel: '操作类型',
    actionPlaceholder: '例如：USER_CREATE',
    resourceLabel: '资源类型',
    resourcePlaceholder: '例如：USER',
    startDateLabel: '开始日期',
    endDateLabel: '结束日期',
    clearFilters: '清空筛选',
    totalLogsCard: '日志总数',
    topActionCard: '高频操作',
    topResourceCard: '高频资源',
    mostActiveUserCard: '最活跃用户',
    topActionCount: '{count} 次',
    topResourceCount: '{count} 次操作',
    mostActiveUserCount: '{count} 次操作',
    noDataLabel: '无数据',
    listTitle: '审计日志记录 ({total})',
    listDescription: '管理员操作的详细记录',
    emptyTitle: '暂无审计日志',
    emptyDescription: '管理员操作后日志会显示在这里',
    timeLabel: '时间',
    userLabel: '用户',
    statusLabel: '状态码',
    methodLabel: '方法',
    endpointLabel: '接口',
    ipLabel: 'IP',
    errorLabel: '错误',
    pageLabel: '第 {page} / {totalPages} 页',
    prevPage: '上一页',
    nextPage: '下一页',
    accessDeniedTitle: '无权访问',
    accessDeniedDescription: '仅会议出勤管理员可以查看审计日志。',
    changeDetailsTitle: '📝 变更详情',
    subjectLabel: '对象：',
    meetingLabel: '会议：',
    attendanceLabel: '出勤：',
    notRecorded: '未记录',
    checkinTimeLabel: '签到时间：',
    lateLabel: '是否迟到：',
    yes: '是',
    no: '否',
    nameLabel: '姓名',
    emailLabel: '邮箱',
    roleLabel: '角色',
    departmentLabel: '部门',
    positionLabel: '职位',
    statusLabelText: '状态：',
    statusActive: '启用',
    statusDisabled: '停用',
    userLabelText: '用户：',
    titleLabel: '标题',
    locationLabel: '地点',
    startTimeLabel: '开始时间',
    reasonLabel: '原因：',
    newContentTitle: '✨ 新增内容',
    seriesTitleLabel: '系列标题：',
    patternLabel: '频率：',
    meetingCountLabel: '会议次数：',
    meetingCountValue: '{count} 次',
    firstMeetingLabel: '首次会议：',
    lastMeetingLabel: '最后会议：',
    meetingTitleLabel: '会议标题：',
    moreFields: '... 还有 {count} 个字段',
    emptyValue: '（空）',
    methodLabelText: '方法：',
    endpointLabelText: 'API 路径：',
    resourceIdLabel: '资源 ID：',
    ipLabelText: 'IP 地址：',
    rawChangesLabel: '原始变更：',
    errorMessageLabel: '错误信息：',
    actionLabels: {
      LOGIN: '用户登录',
      LOGIN_FAILED: '登录失败',
      LOGOUT: '用户退出',
      USER_CREATE: '创建用户',
      USER_UPDATE: '更新用户',
      USER_DELETE: '删除用户',
      USER_DISABLE: '禁用用户',
      USER_ENABLE: '启用用户',
      USER_IMPORT: '批量导入用户',
      MEETING_CREATE: '创建会议',
      MEETING_UPDATE: '更新会议',
      MEETING_DELETE: '删除会议',
      MEETING_CANCEL: '取消会议',
      SERIES_CREATE: '创建系列会议',
      SERIES_UPDATE: '更新系列会议',
      SERIES_DELETE: '删除系列会议',
      TEMPLATE_CREATE: '创建会议模板',
      TEMPLATE_UPDATE: '更新会议模板',
      TEMPLATE_DELETE: '删除会议模板',
      ATTENDANCE_UPDATE: '更新出勤',
      ATTENDANCE_MANUAL: '手动签到',
      ATTENDANCE_IMPORT: '批量导入参会人',
      REPORT_GENERATE: '生成报表',
      SYSTEM_SETTING_UPDATE: '更新系统设置',
    },
    roleLabels: {
      ADMIN: '系统管理员',
      MeetingManager: '会议出勤管理员',
      MANAGER: '会议出勤管理员',
      LEADER: '团队负责人',
      EMPLOYEE: '员工',
      GUEST: '访客',
    },
    attendanceStatusLabels: {
      ON_SITE: '现场',
      ONLINE: '线上',
      ABSENT: '缺席',
      LATE: '迟到',
      PTO: '请假',
      BUSINESS_CONFLICT: '商务冲突',
      MEETING: '会议冲突',
      NOT_CHECKED_IN: '未签到',
    },
    patternLabels: {
      DAILY: '每天',
      WEEKLY: '每周',
      BIWEEKLY: '每两周',
      MONTHLY: '每月',
    },
  },
  teamsMeetings: {
    title: '我的会议',
    subtitle: '在 Teams 中管理你的会议出勤',
    loading: '正在加载会议信息...',
    emptyTitle: '暂无会议',
    emptyDescription: '当前没有已排期会议',
    viewQr: '二维码',
    checkinAction: '在线签到',
    checkinSuccess: '签到成功！',
    checkinFailed: '签到失败，请稍后重试',
    qrTabName: '签到二维码',
    attendanceCount: '{count} 参会人数',
    currentTeam: '当前团队：{team}',
    personalTeam: '个人',
    statusLabel: '状态：{status}',
    statusCheckedIn: '已签到',
    statusNotCheckedIn: '未签到',
  },
  teamsReports: {
    title: '出勤报表',
    subtitle: 'Teams 内数据统计与分析',
    loading: '正在加载报表数据...',
    noAccessTitle: '权限不足',
    noAccessDesc: '你没有权限查看报表数据。',
    noDataTitle: '暂无数据',
    noDataDesc: '暂时没有可用的报表数据',
    seriesSelectTitle: '选择会议系列',
    totalAttendanceRecords: '出勤记录总数',
    checkedIn: '已签到',
    late: '迟到',
    absent: '缺席',
    totalRequired: '应到人次',
    totalAttended: '已到人次',
    attendanceRate: '出勤率',
    departmentCount: '部门数量',
    departmentStatsTitle: '部门出勤统计',
    departmentStatsDesc: '各部门出勤对比',
    statusDistributionTitle: '出勤状态分布',
    statusDistributionDesc: '总体出勤状态分布情况',
    departmentDetailsTitle: '部门明细',
    departmentDetailsDesc: '各部门出勤详情',
    departmentCheckinCount: '{attended}/{total} 已到',
  },
  teamsConfig: {
    title: '配置会议出勤应用',
    subtitle: '为你的 Teams 团队配置会议出勤管理。',
    appName: '会议出勤',
    saveSuccess: '配置保存成功',
    featuresTitle: '功能概览',
    featuresMeetings: '• 查看并管理会议',
    featuresCheckin: '• 二维码签到',
    featuresStats: '• 实时出勤统计',
    featuresReports: '• 报表分析',
    permissionTitle: '权限说明',
    permissionDesc: '应用需要访问你的身份信息以提供个性化会议管理体验。',
    saveAction: '保存配置',
  },
  outlookSync: {
    title: 'Outlook 同步',
    subtitle: '自动识别当前管理员邮箱并手动纳管会议同步到出勤系统',
    candidates: '候选会议',
    managedMeetings: '已纳管会议',
    settings: '同步设置',
    mailboxEmail: '邮箱',
    displayTimezone: '展示时区',
    actions: '操作',
    shared: '共享邮箱',
    personal: '个人邮箱',
    manage: '纳管',
    manageSuccess: '纳管成功',
    managed: '已纳管',
    managedByOther: '已由其他管理员绑定',
    managedBySeries: '系列纳管',
    takeover: '接管',
    unmanage: '取消纳管',
    unmanageSuccess: '已取消纳管（仅停止后续同步，历史会议保留）',
    takeoverSuccess: '接管成功',
    ownerNotInParticipants: '绑定人不在参与人中，建议接管',
    excludeOccurrence: '排除此实例',
    excludedOccurrence: '已排除实例',
    refresh: '刷新',
    triggerReconcile: '触发同步',
    reconcileTriggered: '已触发同步并刷新数据',
    snapshotInitializing: 'Outlook 数据初始化中，请稍候自动刷新...',
    save: '保存',
    cancel: '取消',
    loading: '加载中...',
    noData: '暂无数据',
    statusActive: '有效',
    statusExpired: '过期',
    statusError: '异常',
    statusDisabled: '已停用',
    columnTitle: '标题',
    columnSelect: '选择',
    columnStart: '开始时间',
    columnType: '类型',
    columnOwner: '绑定人',
    columnBindingNotice: '绑定提示',
    columnStatus: '状态',
    columnSyncMode: '同步模式',
    columnSubscription: '订阅状态',
    columnHealth: '同步健康',
    columnLastSyncedAt: '最近同步',
    columnLastReconciledAt: '最近同步',
    columnLastError: '最近错误',
    candidateKeywordPlaceholder: '搜索标题/类型/事件ID',
    allCandidateTypes: '全部会议类型',
    candidateTypeSingle: '单次会议',
    candidateTypeSeriesMaster: '系列主会议',
    candidateTypeOccurrence: '系列实例',
    candidateTypeException: '例外实例',
    managedKeywordPlaceholder: '搜索标题/事件ID/iCalUId',
    managedTypeAll: '全部类型',
    managedStatusAll: '全部状态',
    includeCancelled: '包含已取消',
    includePast: '包含历史会议',
    onlyUnmanaged: '仅显示未纳管',
    cancelledTag: '已取消',
    batchManage: '批量纳管',
    batchManaging: '纳管中...',
    batchManageSuccess: '批量纳管成功',
    batchManagePartial: '部分纳管成功',
    batchManageStarted: '已开始批量纳管',
    managing: '纳管中...',
    managingBySeries: '纳管中（继承系列）',
    childManageViaSeries: '仅可通过系列主会议纳管',
    unmanaging: '取消纳管中...',
    takingOver: '接管中...',
    excluding: '排除中...',
    removingExclusion: '取消排除中...',
    noSelectedCandidates: '请先选择待纳管会议',
    selectAllUnmanaged: '全选未纳管',
    clearSelection: '清空选择',
    search: '搜索',
    prevPage: '上一页',
    nextPage: '下一页',
    pageLabel: '第 {page}/{total} 页',
    pageSizeLabel: '{size}条/页',
    details: '详情',
    managedBindingDetailTitle: '纳管详情',
    detailGraphEventId: 'Graph 事件 ID',
    detailICalUId: 'iCalUId',
    detailCancellationSource: '取消来源',
    detailPrimaryMailbox: '主来源邮箱',
    detailEffectiveMailbox: '生效来源邮箱',
    detailMeetingId: '本地会议 ID',
    detailMeetingSeriesId: '本地系列 ID',
    detailOwnerEmail: '绑定管理员邮箱',
    detailSyncFrom: '同步起点',
    detailSyncMode: '同步模式',
    detailSyncModeAuto: '自动同步',
    detailSyncModeLocked: '本地维护（停止覆盖）',
    detailLocalOverrideAt: '本地维护时间',
    detailLocalOverrideBy: '本地维护操作人',
    detailLocalOverrideReason: '本地维护原因',
    detailOccurrenceExclusions: '已排除实例',
    detailSyncHistory: '同步历史',
    detailHistoryTime: '时间',
    detailHistoryEventType: '事件',
    detailHistoryResult: '结果',
    detailHistoryErrorCode: '错误码',
    detailHistoryMessage: '消息',
    detailOnlyErrorHistory: '仅失败事件',
    detailExportCsv: '导出 CSV',
    detailAllEventTypes: '全部事件类型',
    detailAllStages: '全部阶段',
    detailNoStage: '无阶段',
    detailStartDate: '开始时间',
    detailEndDate: '结束时间',
    detailHistoryTotal: '共 {total} 条',
    removeExclusion: '取消排除',
    reconcileNow: '立即同步',
    reconciling: '同步中...',
    healthHealthy: '健康',
    healthError: '异常',
    healthNeverSynced: '未同步',
    enable: '启用',
    disable: '停用',
    reconcileCron: '同步 Cron',
    deltaBatchSize: '增量批次大小',
    lookaheadDays: '前看天数',
    lookbackDays: '回看天数',
    renewBeforeMinutes: '提前续订分钟',
    includeOrganizerAsAttendee: '将组织者并入参会人（可选）',
    saveSuccess: '保存成功',
    saveFailed: '保存失败',
    operationFailed: '操作失败',
    cutoverChecklistTitle: '上线手工检查清单',
    cutoverChecklistDescription: '历史系列由管理员手工处理，系统提供检查统计与操作步骤。',
    checklistLegacySeriesTotal: '候选历史系列',
    checklistImpactedSeriesTotal: '需处理系列',
    checklistImpactedFutureMeetingsTotal: '需处理未来会议',
    operationChecklist: '操作清单',
    checklistCurrentEndDate: '当前结束时间',
    checklistFutureMeetings: '未来会议数',
  },
  reports: {
    title: '会议报表',
    subtitle: '查看单场会议或系列会议的出勤统计',
    refresh: '刷新',
    exportCsv: '导出 CSV',
    singleReportTab: '单场会议报表',
    seriesReportTab: '系列会议报表',
    selectMeetingLabel: '选择会议',
    selectMeetingPlaceholder: '请选择会议...',
    selectSeriesLabel: '选择系列',
    selectSeriesPlaceholder: '请选择系列...',
    startDateLabel: '开始日期',
    endDateLabel: '结束日期',
    dateHint: '不填日期表示统计全部会议（自动生成）',
    includeLegacyLabel: '包含旧系列数据（迁移前）',
    legacyMergedBanner: '本报表已合并旧系列数据（迁移收尾过渡期内，历史出勤以旧系列为准）',
    loading: '正在生成报表...',
    requiredAttendees: '应到人数',
    attendedLabel: '已到人数',
    attendanceRateLabel: '出勤率',
    optionalLabel: '可选参会人',
    statusDistributionTitle: '出勤状态分布',
    statusDistributionAll: '按状态统计的分布情况',
    statusDistributionSeriesAll: '按状态统计的分布情况（系列会议汇总）',
    statusDistributionFiltered: '筛选 {count} 个角色后的状态分布',
    filterRolesTitle: '筛选角色',
    selectAll: '全选',
    totalAttendees: '共 {count} 人',
    personalDetailsTitle: '个人出勤详情',
    personalDetailsAll: '全部参会人出勤情况（共 {count} 人）',
    personalDetailsFiltered: '筛选 {roles} 个角色的出勤情况（共 {count} 人）',
    seriesDetailsAll: '全部参会人出勤统计（共 {count} 人，按出勤率排序）',
    seriesDetailsFiltered: '筛选 {roles} 个角色的出勤统计（共 {count} 人，按出勤率排序）',
    totalMeetingsLabel: '会议总数',
    totalRequiredAttendees: '应到人次',
    totalAttendedLabel: '已到人次',
    overallAttendanceRate: '整体出勤率',
    lowAttendanceTitle: '低出勤率排名',
    lowAttendanceAll: '出勤率最低的人员名单',
    lowAttendanceFiltered: '筛选 {count} 个角色后的低出勤率名单',
    rankLabel: '排名',
    nameLabel: '姓名',
    emailLabel: '邮箱',
    departmentLabel: '部门',
    roleLabel: '角色',
    statusLabel: '状态',
    expectedLabel: '应到',
    presentLabel: '实到',
    onSiteLabel: '线下',
    onlineLabel: '线上',
    lateLabel: '迟到',
    absentLabel: '缺席',
    ptoLabel: '请假',
    conflictLabel: '冲突',
    notCheckedInLabel: '未签到',
    cityLabel: '地点',
    singleReportTitle: '单场会议报表',
    seriesReportTitle: '系列会议报表',
    personalStatsTitle: '个人统计',
    dateRangeLabel: '日期范围',
    dateRangeBeginning: '开始至今',
    dateRangeNow: '至今',
    dateRangeTo: '至',
    dateRangeAll: '全部会议',
    meetingsAnalyzedLabel: '统计会议数',
    actualPeriodLabel: '实际区间',
    singleReportFileName: 'single-meeting-report',
    seriesReportFileName: 'series-report',
  },

  help: {
    title: '使用说明',
    subtitle: '快速了解会议出勤系统',
    intro: {
      title: '这是什么系统',
      paragraph:
        '会议出勤系统迁移自原线上系统，保留全部功能并接入 FF AI Workspace 统一登录与权限。v1.2 引入 Outlook 单向同步、签到方式校验（线上 / 线下分流），访客扫码免登录保留但必须在参会名单内。',
      highlights: [
        { title: '开会前 15min 开放签到', desc: '会议开始后 8 分钟判迟到，结束后未签到批量标缺席' },
        { title: 'Outlook 单向同步', desc: 'Webhook + Delta + 定时对账兜底；本地修改后停止覆盖' },
        { title: '签到方式校验', desc: '按"工作地 vs 会议地点"派生允许方式，扫错码或未配地点拒签' },
      ],
    },
    concepts: {
      title: '核心概念',
      description: '理解这几个词，再用系统就清楚了',
      items: [
        { term: 'Meeting', desc: '一场会议实例，状态 4 态：SCHEDULED / IN_PROGRESS / COMPLETED / CANCELLED，按时间自动流转' },
        { term: 'MeetingSeries', desc: '系列会议（如每周例会），一次配置自动衍生多场 Meeting；可单期排除' },
        { term: '二维码', desc: '每场会议生成线上 + 线下两套二维码，用于签到方式校验区分' },
        { term: 'Attendance', desc: '出勤记录，状态：NOT_CHECKED_IN / ON_SITE / ONLINE / LATE / ABSENT' },
        { term: 'OutlookBinding', desc: 'Outlook 候选会议被纳管后的绑定关系；同一 graphEventId 全局唯一' },
        { term: '本地维护标识', desc: '一旦本地修改标题 / 时间 / 地点 / 参会人，会议转"本地维护"，Outlook 不再覆盖' },
        { term: '签到方式校验', desc: '开关在会议 / 系列两层，开启后按用户工作地 vs 会议地点自动派生允许方式' },
        { term: 'city（工作地 / 会议地点）', desc: '城市标识，自动补全数据源 GET /cities/suggestions；为空则签到方式校验无法启用' },
      ],
    },
    roles: {
      title: '角色与职责',
      description: '5 种角色在系统中的定位',
      columnHeaders: { role: '角色', scope: '职责', desc: '典型操作' },
      items: [
        { code: 'Administrator', name: '系统管理员', scope: '全局管理', desc: '跨邮箱看所有已绑定会议、权限调整' },
        { code: 'MeetingManager', name: '会议管理员', scope: '会议与名单管理', desc: '创建会议、导入参会名单、查看全量报表、Outlook 纳管' },
        { code: 'Leader', name: '领导', scope: '关注出勤', desc: '查看出勤报表与排名' },
        { code: 'Employee', name: '普通员工', scope: '参会签到', desc: '扫码签到、查看个人会议' },
        { code: 'Guest', name: '访客', scope: '免登录签到', desc: '扫码签到（必须在参会名单内）' },
      ],
    },
    tasks: {
      title: '常用任务',
      description: '点击卡片直接跳到对应功能页',
      cards: [
        { id: 'dashboard', name: '总览', desc: '会议总览、近期会议、个人签到状态' },
        { id: 'meetings', name: '会议管理', desc: '创建 / 编辑 / 取消会议，生成双二维码' },
        { id: 'series', name: '系列会议', desc: '创建系列、批量改期、配置默认参会人' },
        { id: 'templates', name: '模板管理', desc: '常用配置一键复用' },
        { id: 'reports', name: '报表统计', desc: '单场 / 系列出勤率、调整次数列、双语导出' },
        { id: 'users', name: '用户管理', desc: '查看用户（管理跳转组织架构）' },
        { id: 'auditLogs', name: '审计日志', desc: '会议关键操作审计：创建 / 修改 / 取消 / 纳管 / 接管' },
        { id: 'outlookSync', name: 'Outlook 同步', desc: '候选会议筛选、纳管接管、同步历史与差异审计' },
      ],
    },
  },
  agenda: {
    pageTitle: '议程编辑',
    pageSubtitle: '管理议程段与议程项',
    saveSuccess: '已保存',
    saveFailed: '保存失败',
    saveButton: '保存',
    backToMeeting: '返回会议详情',
    leftColumnTitle: '议程结构',
    rightColumnTitle: '议程项详情',
    rightColumnEmpty: '请在左侧选择一个议程项以编辑',
    emptyTree: '尚无议程，点击下方按钮添加议程段',
    addFirstSection: '添加议程段',
    reorderSuccess: '排序已更新',
    reorderFailed: '排序更新失败',
    meetingTitleLabel: '所属会议',
    editAfterEndWarning: '该会议已结束 / 取消，是否仍要修改议程？',
    editAfterEndConfirm: '继续编辑',
    editAfterEndCancel: '取消',
    detailHeaderEditAgenda: '编辑议程',
    detailHeaderUploadMeetingFile: '上传会议资料',
    detailEmptyAgenda: '尚无议程',
    detailEmptyAgendaCta: '添加议程',
    viewPage: {
      pageTitle: '会议议程',
      backToMeeting: '返回会议详情',
      meetingNotFound: '未找到会议信息',
    },
    table: {
      no: '#',
      topic: '议程主题',
      code: '编号',
      description: '描述',
      time: '时长',
      presenter: '主讲人',
      files: '资料 / 待办',
    },
    section: {
      title: '议程段',
      titlePlaceholder: '请输入段标题（≤200 字）',
      newPlaceholder: '新议程段',
      addSection: '新增议程段',
      editSection: '编辑议程段',
      deleteSection: '删除议程段',
      configureColumns: '列配置',
      columnsBadge: '{n} 栏',
      deleteConfirmTitle: '删除议程段',
      deleteConfirmBody: '将连带删除该段下所有议程项 / 待办任务 / 附件，30 天内可联系管理员恢复',
      itemsCount: '{n} 个议程项',
      reorderHint: '拖动调整顺序',
      sectionMenu: '段操作',
      saveFailedTitleEmpty: '段标题不能为空',
      saveFailedTitleTooLong: '段标题不能超过 200 字',
    },
    columnConfig: {
      dialogTitle: '段列配置',
      dialogDescription: '设置该段下议程项描述的分栏方式。单栏 = 整行一段文字；多栏 = 按列拆分（例如 FFAI/EAI-EV vs EAI-Robotics 对照）',
      presetLabel: '快捷预设',
      presetSingle: '单栏',
      presetFfaiRobotics: 'FFAI vs Robotics',
      presetThree: '三栏（空白）',
      presetCustom: '自定义',
      columnsListLabel: '列名（按顺序）',
      columnNamePlaceholder: '列标题（≤100 字）',
      addColumn: '添加一列',
      removeColumn: '删除此列',
      singleColumnHint: '当前为单栏模式，议程项使用单 description 字段。',
      errorEmptyLabel: '列名不能为空',
    },
    item: {
      title: '议程项',
      addItem: '加项',
      newPlaceholder: '新议程项',
      editItem: '编辑',
      deleteItem: '删除',
      deleteConfirmTitle: '删除议程项',
      deleteConfirmBody: '将连带删除该项的 {n} 个附件 + {m} 个待办任务，30 天内可联系管理员恢复',
      assignTask: '分配任务',
      titleLabel: '标题',
      titlePlaceholder: '请输入议程项标题（≤200 字）',
      descriptionLabel: '描述',
      descriptionPlaceholder: '议题描述（可选，≤2000 字）',
      codeLabel: '编号',
      codePlaceholder: '可选业务编号（≤64 字）',
      timeMinutesLabel: '时长（分钟）',
      timeMinutesPlaceholder: '预计耗时',
      presenterLabel: '主讲人',
      presenterPlaceholder: '搜索用户',
      presenterClear: '清空',
      saveButton: '保存',
      saveFailedTitleEmpty: '议程项标题不能为空',
      saveFailedTitleTooLong: '议程项标题不能超过 200 字',
      saveFailedDescriptionTooLong: '描述不能超过 2000 字',
      saveFailedCodeTooLong: '编号不能超过 64 字',
      saveFailedTimeInvalid: '时长必须大于 0',
      attachmentsBadge: '附件 {n}',
      uploadFile: '上传资料',
    },
    uploadTask: {
      sectionTitle: '上传任务',
      assignTitle: '分配上传任务',
      assignDescription: '选择一个或多个参会人，由其上传该议程项的资料',
      assigneesLabel: '被分配人',
      dueAtLabel: '截止时间（可选）',
      dueAtPlaceholder: '选择截止时间',
      assignButton: '分配',
      cancelTaskButton: '撤销任务',
      cancelTaskConfirm: '确认撤销该任务？被分配人将不再收到提醒',
      assignSuccess: '已分配 {count} 个任务',
      assignFailed: '分配失败',
      cancelSuccess: '已撤销',
      cancelFailed: '撤销失败',
      skippedExisting: '已有 {count} 人已分配，跳过',
      status: {
        pending: '待上传',
        uploaded: '已上传',
        cancelled: '已取消',
      },
      statusBadgePending: '待上传 {n}',
      statusBadgeUploaded: '已上传 {n}',
      pendingCount: '待上传 {n}',
      uploadedCount: '已上传 {n}',
      dueAt: '截止时间',
      noDueAt: '无截止',
      assignedBy: '分配人',
      assignedAt: '分配时间',
      empty: '尚无上传任务',
    },
  },
  attachment: {
    sectionTitle: '资料',
    upload: '上传资料',
    uploadMeetingFile: '上传会议资料',
    download: '下载',
    delete: '删除附件',
    deleteConfirm: '确认删除该附件？',
    deleteSuccess: '已删除',
    deleteFailed: '删除失败',
    uploadDialogTitle: '上传文件',
    uploadDialogDescription: '支持 PDF / Word / PowerPoint / Excel / 图片 / 视频，单文件不超过 200MB',
    dropzoneIdle: '拖拽文件到此处，或点击选择',
    dropzoneActive: '松开鼠标以上传',
    dropzoneClickHint: '点击选择文件',
    dropzoneSupported: '支持：PDF / DOCX / PPTX / XLSX / JPG / PNG / MP4 / MOV',
    queueTitle: '上传队列',
    queueEmpty: '尚无文件',
    queueRemove: '移除',
    queueRetry: '重试',
    queueCancel: '取消',
    queueStatusQueued: '等待中',
    queueStatusUploading: '上传中 {percent}%',
    queueStatusSuccess: '已上传',
    queueStatusFailed: '上传失败',
    queueStatusCancelled: '已取消',
    queueTotalProgress: '总进度：{loaded} / {total}',
    confirmCloseWhileUploading: '仍在上传，确定关闭吗？',
    closeButton: '关闭',
    uploadAllDone: '全部上传完成',
    folderNotSupported: '不支持目录上传，请逐个选择文件',
    tooManyFiles: '单次最多上传 10 个文件',
    tooLarge: '文件超过 200MB，请压缩后再上传',
    mimeNotAllowed: '不支持的文件类型',
    mimeMismatch: '文件内容与扩展名不一致，可能被篡改',
    notOwned: '该上传任务不属于你',
    deleteForbidden: '仅本人或管理员可删除',
    notFound: '附件不存在或已删除',
    netError: '网络中断，请重试',
    uploadedBy: '上传人',
    uploadedAt: '上传时间',
    sizeColumn: '大小',
    listEmpty: '尚无资料',
    categoryLabel: '类型',
    categoryMinutes: '会议纪要',
    categoryMaterial: '会议资料',
    categoryPresentation: 'PPT',
    categoryOther: '其他',
    categoryAll: '全部',
  },
  myTasks: {
    pageTitle: '我的待办',
    pageSubtitle: '查看分配给您的议程项资料上传任务',
    empty: '暂无待办上传任务',
    cardTitle: '为「{meeting}」议程项「{item}」上传资料',
    cardSection: '所属段',
    cardDueAt: '截止：{date}',
    cardNoDueAt: '无截止',
    cardAssignedBy: '分配人：{name}',
    cardGoUpload: '去上传',
    filterStatusLabel: '状态',
    filterStatusAll: '全部',
    filterStatusPending: '待上传',
    filterStatusUploaded: '已上传',
    filterStatusCancelled: '已取消',
    sortLabel: '排序',
    sortDueAtAsc: '按截止时间升序',
    sortAssignedAtDesc: '按分配时间倒序',
    loadMore: '加载更多',
    loadFailed: '加载失败',
    loadRetry: '重试',
    itemDeleted: '议程项已删除',
  },
};

export type MeetingAttendanceTranslations = typeof meetingAttendanceZh;
