/**
 * 组织架构翻译 - 中文
 * Organization Translations - Chinese
 */
export const organizationZh = {
  // 页面标题
  title: "组织架构",
  subtitle: "管理您的团队和部门",

  helpTip: "管理组织人员与权限",

  // 导航/标签
  membersTab: "成员管理",
  departmentsTab: "部门管理",
  structureTab: "组织结构",

  // 通用字段（顶层字段，供各模块使用）
  name: "姓名",
  employeeId: "工号",
  hiredAt: "入职日期",
  status: "状态",
  email: "邮箱",

  // 通用状态标签
  active: "在职",
  inactive: "未激活",
  suspended: "已停用",
  terminated: "已离职",

  // 组织/区域配置
  orgs: {
    fields: {
      regions: "关联区域",
      primaryRegion: "主要区域",
      operatingRegions: "运营区域",
      name: "组织名称",
      code: "组织编码",
      head: "组织负责人",
      description: "描述",
    },
    default: "默认",
    setDefault: "设为默认",
    primary: "主要",
    primaryBadge: "主要",
    regionHint: "选择此组织关联的区域",
    primaryRegionHint: "权威归属，用于统计、路由、数据隔离",
    operatingRegionsHint:
      "运营覆盖，用于筛选、展示、权限扩展（自动包含主要区域）",
    topLevelHint: "顶级组织可以配置关联区域",
    cannotRemovePrimaryRegion: "不能移除主要区域",
    selectOrganization: "选择组织",
    addOrganization: "添加组织",
    codeHint: "唯一标识，创建后不可修改",
    selectPrimaryRegion: "请选择主要区域",
    placeholders: {
      name: "请输入组织名称",
      code: "请输入组织编码（如 ORG-001）",
      head: "搜索并选择负责人",
      description: "请输入组织描述（选填）",
    },
    messages: {
      empty: "暂无组织",
      addMember: "添加成员",
      createSuccess: "组织创建成功",
      createFailed: "创建失败",
    },
    selectOrgFirst: "请先选择组织",

    // 组织列表页
    list: {
      title: "组织管理",
      searchPlaceholder: "搜索组织名称或代码...",
      allRegions: "全部区域",
      allStatus: "全部状态",
      statusActive: "激活",
      statusInactive: "停用",
      statusSuspended: "暂停",
      statusDissolved: "解散",
      createOrg: "新建组织",
      loadFailed: "加载失败",
      retry: "重试",
      noOrganizations: "暂无组织",
      viewDetails: "查看详情",
      edit: "编辑",
      delete: "删除",
      operatingRegions: "运营区域",
      primaryTag: "主",
      regionCount: "区域",
      employeeCount: "员工",
      departmentCount: "部门",
      confirmDeleteTitle: "确认删除",
      confirmDeleteMessage:
        '确定要删除组织 "{name}" 吗？此操作无法撤销，将删除该组织下的所有部门和相关数据。',
      pageInfo: "第 {page} 页，共 {totalPages} 页，共 {total} 条",
      prevPage: "上一页",
      nextPage: "下一页",
    },

    // 新建组织页
    new: {
      title: "新建组织",
      basicInfo: "基本信息",
      nameLabel: "组织名称",
      nameRequired: "请输入组织名称",
      namePlaceholder: "例如: FF China",
      codeLabel: "组织代码",
      codeRequired: "请输入组织代码",
      codePlaceholder: "例如: FFCN",
      codeHint: "唯一标识符，建议使用大写字母和数字",
      descriptionLabel: "描述",
      descriptionPlaceholder: "组织的详细描述（可选）",
      regionConfig: "区域配置",
      noRegionsAvailable: "暂无可用区域，请先创建区域",
      primaryRegionLabel: "主要区域",
      primaryRegionPlaceholder: "请选择主要区域",
      primaryRegionHint: "组织的主要运营区域",
      operatingRegionsLabel: "运营区域（可多选）",
      regionsSelected: "已选择 {count} 个区域",
      primaryBadge: "主",
      loadRegionsFailed: "加载区域列表失败",
      createSuccess: "组织创建成功",
      createFailed: "创建组织失败",
      creating: "创建中...",
      createButton: "创建组织",
    },

    // 组织详情页
    detail: {
      title: "组织详情",
      loadFailed: "加载组织详情失败",
      notFound: "组织不存在",
      goBack: "返回组织列表",
      editButton: "编辑组织",
      deleteButton: "删除组织",
      basicInfoTitle: "基本信息",
      nameLabel: "组织名称",
      displayNameLabel: "显示名称",
      codeLabel: "组织代码",
      primaryRegionLabel: "主要区域",
      operatingRegionsLabel: "运营区域",
      descriptionLabel: "描述",
      headLabel: "组织负责人",
      statisticsTitle: "统计信息",
      employeeCountLabel: "员工数",
      departmentCountLabel: "部门数",
      positionCountLabel: "岗位数",
      createTimeLabel: "创建时间",
      updateTimeLabel: "更新时间",
      emptyRegions: "暂无关联区域",
      emptyEmployees: "暂无员工",
    },
  },

  // 成员管理
  memberManagement: "成员",
  positionManagement: "岗位",
  roleManagement: "角色与权限",
  aiToolsManagement: "AI 工具",
  dataScopesNav: "数据范围",
  regionManagement: "区域",
  organizationStructure: "架构图",
  organizationStructureGrid: "架构图（网格）",
  syncSettings: "用户同步",
  dingtalkSync: "钉钉同步",
  annualLeaveQuotaPage: "假期余额总览",
  annualLeaveReleasePlanPage: "年假释放计划",

  dingtalkAnnualLeave: {
    backToSync: "返回钉钉同步",
    quotaTitle: "钉钉假期余额总览",
    quotaDescription:
      "查看当前钉钉系统中每位员工各假期类型的总额、已用和剩余。",
    matrixDescription:
      "按员工汇总展示，每一列对应一种假期类型，单元格主显示剩余天数，并补充已用/总额。",
    releasePlanTitle: "年假释放计划",
    releasePlanDescription:
      "按员工查看年假释放中间表中第 1 天、第 2 天到第 N 天年假分别会在哪天释放。",
    employeeCount: "员工数",
    leaveTypeCount: "假期类型数",
    nonZeroQuotaCount: "非零余额记录",
    planCount: "计划条数",
    upcomingDays: "未来待释放天数",
    todayReleaseEmployeeCount: "今日释放人数",
    totalPlannedDays: "总计划天数",
    noPlan: "未生成",
    noPlanReasonLabel: "原因",
    releaseDayPrefix: "第 {index} 天",
    pageInfo: "第 {page} / {totalPages} 页，共 {total} 人",
    previousPage: "上一页",
    nextPage: "下一页",
    hoverForIdentity: "悬停查看编号",
    employeeNumberLabel: "工号",
    copy: "复制",
    copied: "已复制",
    keyword: "员工搜索",
    keywordPlaceholder: "输入姓名、工号或 userId",
    userId: "钉钉 UserID",
    hideZero: "隐藏零余额",
    upcomingOnly: "仅看未来未释放",
    includeConsultant: "显示顾问",
    includeLeaveWithoutPay: "显示停薪留职",
    includeTerminated: "显示已离职",
    year: "年度",
    leaveType: "假期类型",
    quotaCycle: "周期",
    totalDays: "总额（天）",
    usedDays: "已用（天）",
    remainingDays: "剩余（天）",
    noBalance: "0",
    usedTotalCompact: "已用 {used} / 总额 {total}",
    effectiveRange: "有效期",
    releaseDate: "释放日期",
    releaseDays: "释放天数",
    released: "是否已释放",
    releaseTimelineTitle: "释放记录",
    usageTimelineTitle: "使用记录",
    noReleaseRecords: "暂无释放记录",
    noUsageRecords: "暂无使用记录",
    loading: "加载中...",
    empty: "暂无数据",
    yes: "是",
    no: "否",
    refresh: "刷新",
    refreshSnapshot: "刷新快照",
    refreshPlan: "更新中间表",
    refreshPlanSuccess: "年假中间表更新成功",
    refreshPlanHint: "仅重算本地年假释放计划，不直接发放到钉钉",
    planSettingsTitle: "编辑年假计划参数",
    planSettingsDescription: "仅调整本地年假释放计划参数，不直接修改员工主数据。",
    planSettingsLoadFailed: "加载年假计划参数失败",
    planSettingsSaveSuccess: "年假计划参数已更新",
    planSettingsSaveFailed: "保存年假计划参数失败",
    workStartDateLabel: "首次参加工作日期",
    planLastCalculatedAt: "上次重算时间",
    adjustmentDaysLabel: "额度扣减天数",
    adjustmentDaysHint: "仅影响累计应释放额度，不改变释放日期。",
    adjustmentDaysInvalid: "额度扣减天数格式不正确",
    notCountDaysLabel: "释放计划偏移天数",
    notCountDaysHint: "参与释放日期重算，不直接扣减最终额度。",
    notCountDaysInvalid: "释放计划偏移天数必须为整数",
    save: "保存",
    saving: "保存中...",
    cancel: "取消",
    lastSyncedAtLabel: "快照更新时间",
    notSynced: "未刷新",
    openQuotaPage: "查看余额",
    openReleasePlanPage: "查看计划",
    quotaEntryTitle: "假期余额",
    quotaEntryDesc: "按员工查看钉钉里当前每类假期的总额、已用和剩余。",
    releaseEntryTitle: "释放计划",
    releaseEntryDesc: "查看年假释放表中未来每次释放的日期和天数。",
    exportCsv: "导出清单",
    exportFailed: "导出失败，请重试",
    statusFilter: "状态筛选",
    statusAll: "全部",
    statusNormal: "正常",
    statusConsultant: "顾问",
    statusLeaveWithoutPay: "停薪留职",
    statusTerminated: "已离职",
  },

  structure: {
    description: "查看和管理完整的组织架构图",
    manageDepartments: "管理部门",
    totalDepartments: "部门总数",
    totalMembers: "员工总数",
    members: "成员",
    organizationLevels: "组织层级",
    topLevelDepartments: "顶级部门",
    expandAll: "全部展开",
    collapseAll: "全部收起",
    noDepartments: "暂无部门数据",
    createFirst: "请先创建部门以构建组织架构",
    createDepartment: "创建部门",
    manageMembers: "管理成员",
    people: "人",
    subDepartments: "个子部门",
    noManager: "未设置负责人",
    notSet: "未设置",
    allMembers: "全部成员",
    noMembers: "暂无成员",
    zoomIn: "放大",
    zoomOut: "缩小",
    resetZoom: "重置",
    loadFailed: "加载失败",
    noData: "暂无组织架构数据",
    noDataHint: "请先创建部门",
    createDeptFirst: "请先创建部门",
    basicInfo: "基本信息",
    departmentHead: "部门主管",
    employeeCount: "在职人数",
    name: "姓名",
    position: "职位",
    employeeType: "员工类型",
    fullTime: "全职",
    deptHead: "部门负责人",
  },

  // 组织架构 - 网格视图（暗色，只读）
  structureGrid: {
    pageTitle: "组织架构",
    subtitle: "从侧栏选择一个部门，或点击卡片浏览组织架构的各个层级。",
    departments: "部门",
    general: "概览",
    subDepartments: "子部门",
    confirmedLeads: "已确认负责人",
    openTbd: "待定 / 招聘中",
    channelsSubDepartments: "频道 — 子部门",
    subTeams: "子团队",
    teamMembers: "团队成员",
    noMembers: "暂无成员记录。",
    departmentLead: "部门负责人",
    subDepartmentCount: "{count} 个子部门",
    seeAllChannels: "查看全部频道",
    moreSuffix: "更多",
    lead: "负责人",
    tbd: "待定",
    acting: "代理",
    member: "成员",
    open: "招聘中",
    loading: "加载中…",
    loadFailed: "加载失败",
    retry: "重试",
    noData: "暂无部门数据",
    deeperLevels: "更深层级",
    closeDrawer: "关闭",
    backHome: "返回首页",
    category: {
      exec: "执行层",
      eng: "工程与产品",
      ops: "运营",
      biz: "商业",
      corp: "公司治理",
      fin: "财务与资本",
    },
  },

  // 成员列表页
  membersList: {
    title: "用户管理",
    batchImport: "批量导入",
    syncFromLDAP: "从LDAP同步",
    syncing: "同步中...",
    createUser: "新建用户",
    batchImportMemberships: "批量导入成员关系",
    allDepartments: "全部部门",
    allStatus: "全部状态",
    allRoles: "全部角色",
    roleLabel: "角色",
    username: "用户名",
    displayName: "显示名称",
    email: "邮箱",
    department: "部门",
    statusColumn: "状态",
    actions: "操作",
    noMatchingUsers: "未找到匹配的用户",
    tryOtherFilters: "尝试调整搜索条件",
    noUsersYet: "暂无用户数据",
    clickToCreate: "点击按钮创建第一个用户",
    createFirstUser: "创建第一个用户",
    assignRoles: "分配角色",
    suspend: "暂停",
    resume: "恢复",
    deactivate: "停用",
    activate: "激活",
    terminate: "离职",
    prevPage: "上一页",
    nextPage: "下一页",
    batchImportWorkCity: "批量导入工作地",
    workCityColumn: "工作地",
  },
  memberList: "成员列表",
  addMember: "添加成员",
  importMembers: "批量导入",
  exportMembers: "导出成员",
  syncFromLdap: "从 Entra ID 同步",
  syncing: "同步中...",
  syncSuccess: "同步成功",
  syncFailed: "同步失败",
  passwordMinLength: "密码长度至少8位",
  ldapUsernameRequired: "请输入LDAP用户名",

  // 用户表单字段（新建/编辑用户页）
  basicInfo: "基本信息",
  displayName: "显示名称",
  identitySource: "身份源",
  localUser: "本地用户",
  localUserHint: "本地用户使用系统密码登录",
  ldapUserHint: "LDAP用户将使用企业LDAP/AD账号登录，无需设置密码",
  usernamePlaceholder: "请输入用户名",
  usernameHint: "3-50个字符，仅限字母、数字和下划线",
  usernameInvalid: "用户名只能包含字母、数字和下划线，长度3-50",
  realNamePlaceholder: "请输入真实姓名",
  emailPlaceholder: "请输入邮箱",
  emailInvalid: "请输入有效的邮箱地址",
  password: "密码",
  passwordPlaceholder: "至少8个字符",
  passwordHint: "密码长度至少8位，需包含至少2种字符类型",
  confirmPassword: "确认密码",
  confirmPasswordPlaceholder: "再次输入密码",
  ldapUsername: "LDAP用户名",
  ldapUsernameHint: "LDAP用户名用于匹配企业目录中的账号",
  phonePlaceholder: "请输入手机号",
  employeeIdPlaceholder: "请输入员工编号",
  selectDeptFirst: "请先选择部门",
  region: "区域",

  // organization 级别的通用字段
  addOrganization: "添加组织",
  selectOrgFirst: "请先选择组织",
  loadOrgFailed: "加载组织数据失败",
  orgName: "组织名称",
  orgNamePlaceholder: "请输入组织名称",
  orgManager: "组织负责人",
  searchManagerPlaceholder: "搜索并选择负责人",
  description: "描述",
  primaryRegion: "主要区域",
  selectRegionPlaceholder: "请选择主要区域",
  operatingRegions: "运营区域",
  primaryRegionHint: "权威归属，用于统计、路由、数据隔离",
  operatingRegionsHint:
    "运营覆盖，用于筛选、展示、权限扩展（自动包含主要区域）",
  orgNameRequired: "请填写组织名称",
  selectRegionRequired: "请选择主要区域",
  createSuccess: "组织创建成功",

  // users/members 新建页面
  members: {
    searchPlaceholder: "搜索用户名、邮箱、员工编号...",
    basicInfo: "基本信息",
    identitySource: "身份源",
    localUser: "本地用户",
    localUserHint: "本地用户使用系统密码登录",
    ldapUserHint: "LDAP用户将使用企业LDAP/AD账号登录，无需设置密码",
    usernamePlaceholder: "请输入用户名",
    usernameHint: "3-50个字符，仅限字母、数字和下划线",
    usernameInvalid: "用户名只能包含字母、数字和下划线，长度3-50",
    realNamePlaceholder: "请输入真实姓名",
    emailPlaceholder: "请输入邮箱",
    emailInvalid: "请输入有效的邮箱地址",
    password: "密码",
    passwordPlaceholder: "至少8个字符",
    passwordHint: "密码长度至少8位，需包含至少2种字符类型",
    passwordMinLength: "密码长度至少8位",
    passwordMismatch: "两次输入的密码不一致",
    confirmPassword: "确认密码",
    confirmPasswordPlaceholder: "再次输入密码",
    ldapUsername: "LDAP用户名",
    ldapUsernamePlaceholder: "sAMAccountName",
    ldapUsernameHint: "LDAP用户名用于匹配企业目录中的账号",
    ldapUsernameRequired: "请输入LDAP用户名",
    phonePlaceholder: "请输入手机号",
    employeeIdPlaceholder: "请输入员工编号",
    selectDeptFirst: "请先选择部门",
    region: "区域",
    workCity: "工作地",
    workCityPlaceholder: "请输入或选择工作地城市",
    workCityHint: "用于签到方式校验，按与会议地点精确比对派生线上/线下（trim 后区分大小写）",
    loadFailed: "加载成员信息失败",
  },

  // 成员信息
  memberInfo: "成员信息",
  username: "用户名",
  realName: "真实姓名",
  phone: "电话",
  department: "部门",
  position: "岗位",
  role: "角色",
  joinDate: "入职日期",
  lastLogin: "最后登录",

  // 部门管理
  departmentManagement: "组织与部门",
  orgManagement: "组织",
  departmentList: "部门列表",
  addDepartment: "添加部门",
  editDepartment: "编辑部门",
  deleteDepartment: "删除部门",
  departmentName: "部门名称",
  departmentCode: "部门编码",
  parentDepartment: "上级部门",
  manager: "直属上级",
  noManager: "未设置上级",
  memberCount: "成员数量",
  module: "模块",
  action: "操作",
  employeeType: "员工类型",
  employeeTypeFull: "全职",

  // departments 页面专用
  departments: {
    selectTargetParent: "请选择目标父部门",
    loadFailed: "加载部门列表失败",
    loadDeletedMembersFailed: "加载已删除成员失败",
    autoSetPrimaryDept: "已自动将另一个部门设为主部门",
    memberUpdateSuccess: "成员信息更新成功",
    memberRemoved: "已将 {user} 从 {dept} 移除",
    cannotDeleteHasMembers: "该部门下还有成员，无法删除",
    cannotDeleteHasSubDepts: "该部门下还有子部门，无法删除",
    subDepts: "子部门",
    addSubDept: "添加子部门",
    deptHead: "部门负责人",
    employeeCount: "在职人数",
    setManager: "设置负责人",
    loadOrgFailed: "加载组织数据失败",
    noDepartments: "暂无部门",
    selectDeptOrOrg: "请在左侧选择部门或组织查看成员",
    includeSubDeptMembers: "包含子部门员工",
    noMembers: "暂无成员",
    noMatchingMembers: "未找到匹配的成员",
    searchDept: "搜索部门",
    changeParentDept: "修改父部门",
    batchImport: "批量导入",
    noMatchingDepts: "未找到匹配的部门",
    noPosition: "不设置职位",
    managerPlaceholder: "例如：技术负责人",
    searchNameOrEmailPlaceholder: "输入姓名或邮箱搜索...",
    searchUserPlaceholder: "搜索用户...",
    descriptionPlaceholder: "请输入部门描述（选填）",
    confirmRemoveMember: "确认移除成员",
    noDeptManagers: "该部门暂无其他可选上级",
    noDirectManager: "不设置直属上级",
    batchChangeParent: "批量修改父部门",
    batchChangeParentDesc: "这些部门的父部门将统一修改为您选择的目标部门",
    selectNewParent: "选择新的父部门",
    selectParentDeptPlaceholder: "请选择父部门",
    selectedDeptCannotBeTarget: "被选中的部门不能作为目标父部门",
    batchImportTitle: "批量导入部门",
    importSteps: "导入步骤",
    downloadTemplate: "下载导入模板",
    fieldDeptName: "部门名称",
    fieldDeptNameDesc: "必填，部门的显示名称",
    fieldParentName: "上级部门名称",
    fieldParentNameDesc:
      "可选，如果是顶级部门则留空，如果是子部门则填写上级部门的完整名称",
    fieldDescriptionDesc: "可选，部门的职责描述",
    reselectFile: "点击重新选择文件",
    selectFilePlaceholder: "点击选择文件或拖拽文件到此处",
    deptNameCol: "部门名称",
    parentDeptCol: "上级部门名称",
    confirmRestore: "确认恢复用户",
    managerSetSuccess: "负责人设置成功",
    setManagerTitle: "设置负责人",
    searchManager: "搜索负责人",
    loadUsersFailed: "加载用户列表失败",
    availableUsers: "可添加用户",
    selected: "已选择",
    clickToAdd: "点击左侧用户添加",
    selectFileFirst: "请选择导入文件",
    rootDeptNotFound: "无法获取根部门ID，请刷新页面重试",
    membersTab: "成员",
    departmentsTab: "部门",
    deletedMembersTab: "已删除成员",
    searchPlaceholder: "搜索...",
    add: "添加",
    usersLabel: "用户",
    columnSettings: "列设置",
    dragToReorder: "拖动调整顺序",
    personInCharge: "负责人",
    addFirstDepartment: "添加第一个部门",
    departmentName: "部门名称",
    size: "规模",
    source: "来源",
    action: "操作",
    deletedMembersWarning: "以下是已删除的成员，可以选择恢复",
    noDeletedMembers: "暂无已删除成员",
    deletedMembersHint: "已删除的成员会在30天后永久删除",
    memberName: "成员姓名",
    email: "邮箱",
    department: "部门",
    deletedAt: "删除时间",
    restore: "恢复",
    // 示例数据
    templateCol1: "部门名称*",
    templateCol2: "上级部门名称",
    templateCol3: "描述",
    exampleHR: "人力资源部",
    exampleHRDesc: "负责公司人力资源管理",
    exampleRecruit: "招聘团队",
    exampleRecruitDesc: "负责人才招聘",
    exampleTraining: "培训发展部",
    exampleTrainingDesc: "负责员工培训和发展",
    exampleTech: "技术部",
    exampleTechDesc: "负责公司技术研发",
    exampleFrontend: "前端团队",
    exampleFrontendDesc: "负责前端开发",
    exampleBackend: "后端团队",
    exampleBackendDesc: "负责后端开发",
  },

  // 区域管理（已在上面统一定义）
  regions: {
    title: "区域管理",
    subtitle: "管理系统支持的业务区域",
    create: "新建区域",
    createRegion: "新建区域",
    edit: "编辑区域",
    delete: "删除区域",
    searchPlaceholder: "搜索区域代码或名称...",
    requiredFields: "请填写区域代码和名称",
    fillRequired: "请填写必填字段",
    codePattern: "区域代码必须为2-10位大写字母、数字或下划线",
    codePlaceholder: "例如: CN, US, UAE",
    namePlaceholder: "例如: 中国区域",
    nameEnPlaceholder: "例如: China",
    createSuccess: "区域创建成功",
    updateSuccess: "区域更新成功",
    deleteSuccess: "区域删除成功",
    createFailed: "创建失败",
    updateFailed: "更新失败",
    deleteFailed: "删除失败",
    loadFailed: "加载区域列表失败",
    loadOrgsFailed: "加载组织列表失败",
    setDefaultSuccess: "设置默认组织成功",
    clearDefaultSuccess: "清除默认组织成功",
    setDefaultFailed: "设置默认组织失败",
    organizations: "组织",
    users: "用户",
    defaultOrg: "默认组织",
    setDefaultOrg: "设置默认组织",
    selectDefaultOrgHint: "为此区域选择一个默认的顶级组织",
    selectOrganization: "选择组织",
    clearDefaultOrg: "清除默认组织",
    noTopLevelOrgs: "暂无可用的顶级组织",
    nameZhPlaceholder: "例如: 中国",
    timezonePlaceholder: "例如: Asia/Shanghai",
    currencyPlaceholder: "例如: CNY, USD",
    localePlaceholder: "例如: zh-CN, en-US",
    noRegions: "暂无区域",
    noMatchingRegions: "未找到匹配的区域",
    createFirstRegion: '点击上方"新建区域"按钮添加第一个区域',
    fields: {
      code: "区域代码",
      name: "区域名称",
      nameEn: "英文名称",
      nameZh: "中文名称",
      timezone: "时区",
      currency: "货币",
      locale: "语言环境",
      order: "排序",
    },
    empty: {
      title: "暂无区域",
      description: '点击上方"新建区域"按钮添加第一个区域',
    },
    confirmDelete: {
      title: "确认删除",
      message: '确定要删除区域 "{name}" 吗？此操作无法撤销。',
    },
  },

  // 岗位管理（已在上面统一定义）
  positions: {
    subtitle: "管理企业岗位与职级",
    add: "添加岗位",
    edit: "编辑岗位",
    name: "岗位名称",
    code: "岗位编码",
    level: "职级",
    description: "描述",
    userCount: "在职人数",
    items: "个岗位",
    noData: "暂无岗位数据",
    noMatchingPositions: "未找到匹配的岗位",
    addFirst: "添加第一个岗位",
    searchPlaceholder: "搜索岗位名称或编码...",
    namePlaceholder: "请输入岗位名称",
    codePlaceholder: "请输入岗位编码，如 ENGINEER",
    descriptionPlaceholder: "请输入岗位描述（可选）",
    nameRequired: "请输入岗位名称",
    codeRequired: "请输入岗位编码",
    codeNotEditable: "岗位编码创建后不可修改",
    levelTip: "职级范围 1-20，数字越大级别越高",
    confirmDelete: '确定要删除岗位 "{name}" 吗？',
    confirmDeleteTitle: "确认删除",
    deleteSuccess: "删除成功",
    deleteWarning: "该岗位还有在职人员，删除后将影响这些用户",
    saveFailed: "保存失败",
    deleteFailed: "删除失败",
    loadFailed: "加载岗位数据失败",
    notFound: "岗位不存在",
    totalCount: "共 {count} 个岗位",
    employees: "在职人员",
    employeeCount: "在职人数",
    noEmployees: "暂无在职人员",
  },

  // 组织结构（已在上面统一定义为 '架构图'）
  viewTree: "树形视图",
  viewList: "列表视图",
  expand: "展开",
  collapse: "收起",
  expandAll: "全部展开",
  collapseAll: "全部收起",

  // 角色管理（已在上面统一定义）
  roleAndPermissionManagement: "角色与权限",
  addRole: "添加角色",
  editRole: "编辑角色",
  deleteRole: "删除角色",
  roleName: "角色名称",
  roleCode: "角色编码",
  roleDescription: "角色描述",
  permissions: "权限",
  roleMembers: "角色成员",

  // 同步设置（已在上面统一定义为 '同步'）
  syncStatus: "同步状态",
  syncReady: "Entra ID 同步就绪",
  lastSync: "上次同步",
  viewSyncDetails: "查看同步详情",
  created: "新增",
  updated: "更新",
  skipped: "跳过",
  total: "总计",

  sync: {
    title: "用户同步",
    subtitle: "管理 Entra ID 用户数据同步",
    description: "管理 Entra ID 用户数据同步",
    currentStatus: "当前状态",
    lastSyncTime: "上次同步",
    lastSyncResult: "上次同步结果",
    duration: "耗时",
    neverSynced: "从未同步",
    clickToStart: '点击"立即同步"开始',
    totalUsers: "总用户数",
    statsAdded: "新增",
    statsUpdated: "更新",
    statsSkipped: "跳过",
    statsConflicts: "冲突",
    instructions: "同步说明",
    confirmSync: "确认同步",
    confirmSyncMessage: "确定要立即同步用户数据吗？这可能需要几分钟时间。",
    syncSuccess: "同步成功！",
    statsTotal: "总计",
    lastResult: "上次同步结果",
    syncNow: "立即同步",
    syncing: "同步中...",
    ready: "就绪",
    readyToSync: "系统已准备好进行同步",
    syncInProgress: "正在同步中",
    pleaseWait: "请稍候，同步正在进行中...",
    syncFailed: "同步失败，请稍后重试",
    howItWorks: "同步说明",
    step1: "系统会从 Azure Entra ID 获取所有用户信息",
    step2: "根据邮箱或用户名匹配现有用户，更新用户信息",
    step3: "对于新用户，将自动创建账号并分配默认角色",
    step4: "如果存在邮箱冲突，相关用户将被跳过并记录",
    warning: "注意事项",
    warningText: "同步过程中请勿关闭页面。大量用户同步可能需要数分钟时间。",
    warningTitle: "注意事项",
    warningMessage: "同步过程中请勿关闭页面。大量用户同步可能需要数分钟时间。",
    errors: "错误",
    moreErrors: "还有",
    moreErrorsSuffix: "个错误",
  },

  // 用户状态
  statusActive: "在职",
  statusInactive: "未激活",
  statusSuspended: "已停用",
  statusTerminated: "已离职",

  // 统计
  stats: {
    totalUsers: "总用户数",
    active: "在职",
    totalDepartments: "部门数量",
    topLevel: "顶级部门",
    totalPositions: "岗位数量",
    positionTypes: "岗位类型",
    totalRoles: "角色数量",
    systemRoles: "系统",
    workflowRoles: "流程",
  },

  // 快捷操作
  quickActions: {
    addMember: "添加成员",
    addMemberDesc: "创建新的系统用户账号",
    addDepartment: "添加部门",
    addDepartmentDesc: "创建新的组织部门",
    manageRoles: "角色管理",
    manageRolesDesc: "配置系统角色与权限",
    syncFromEntra: "同步用户",
    syncFromEntraDesc: "从 Entra ID 同步用户数据",
  },

  // 用户状态分布
  userStatusDistribution: "用户状态分布",

  // 角色子页面导航
  roles: {
    overview: "概览",
    title: "角色管理",
    systemRoles: "系统角色",
    workflowRoles: "流程角色",
    permissionList: "权限清单",

    // 概览页
    overviewTitle: "角色与权限概览",
    overviewSubtitle: "统一管理系统角色、流程角色与权限",

    // 快捷操作
    quickActions: "快捷操作",
    systemRolesDesc: "管理系统功能权限角色",
    workflowRolesDesc: "管理流程审批抽象角色",
    permissionListDesc: "查看所有系统权限点",

    // 统计卡片
    systemRolesCount: "功能权限角色数量",
    workflowRolesCount: "审批流程角色数量",
    permissionsLabel: "权限点",
    permissionsCount: "系统权限点总数",
    roleAssignments: "角色分配",
    roleAssignmentsCount: "总角色分配次数",

    // 系统说明
    systemNotes: "系统说明",
    systemRolesNote:
      "用于管理用户在系统中的功能权限，如菜单访问、页面访问、按钮操作等。",
    workflowRolesNote:
      '用于流程审批中的抽象身份，如"直属上级"、"部门负责人"，通过规则动态计算审批人。',
    permissionListNote:
      "展示系统中所有可配置的权限点，按模块和资源分组，可用于角色权限配置。",
    aboutSystemRoles: "关于系统角色",
    aboutWorkflowRoles: "关于流程角色",
    aboutPermissions: "关于权限列表",

    // System roles page
    searchPlaceholder: "搜索角色名称、编码或描述...",
    createRole: "新建角色",
    roleName: "角色名称",
    roleCode: "角色编码",
    description: "描述",
    memberCount: "成员数",
    permissionCount: "权限数",
    type: "类型",
    builtIn: "内置",
    custom: "自定义",
    noMatchingRoles: "未找到匹配的角色",
    noRoles: "暂无角色",
    tryOtherKeywords: "请尝试其他搜索条件",
    noRolesHint: "还没有添加任何系统角色",
    createFirstRole: "创建第一个角色",
    rolesUnit: "个角色",
    totalRoles: "共 {count} 个角色",
    filteredFrom: "从 {count} 个角色中筛选",
    totalWorkflowRoles: "共 {count} 个流程角色",
    usedInWorkflows: "使用流程",

    // Delete confirmation
    confirmDeleteRole: "确认删除角色",
    confirmDeleteRoleMessage: "确定要删除角色",
    confirmDeleteRoleSuffix: "吗？",
    cannotUndo: "此操作不可撤销。",
    roleHasMembers: "该角色还有",
    membersWillLosePermissions: "个成员，删除后这些用户将失去该角色的权限。",

    // Toast messages
    loadRolesFailed: "加载角色失败",
    loadSystemRolesFailed: "加载系统角色失败",
    loadUsersFailed: "加载用户列表失败",
    roleDeleted: "角色已删除",
    deleteFailed: "删除失败",
    deleteSuccess: "删除成功",
    deleteRoleFailed: "删除角色失败",
    createSuccess: "创建成功",
    createFailed: "创建失败",
    basicInfoSaved: "基本信息已保存",
    permissionsSaved: "权限已保存",
    userAdded: "用户已添加",
    addUserFailed: "添加用户失败",
    userRemoved: "用户已移除",
    removeUserFailed: "移除用户失败",

    // Additional fields
    noMembers: "暂无成员",
    codeEditPlaceholder: "请输入角色编码（如：ADMIN）",
    searchUserPlaceholder: "搜索用户（姓名、用户名、邮箱、工号）",
    workflowRoleName: "流程角色名称",
    workflowRoleCode: "流程角色编码",
    workflowRoleDescription: "流程角色描述",
    selectRuleTypePlaceholder: "请选择规则类型",
    orgRelationType: "组织关系类型",
    selectOrgRelationPlaceholder: "请选择组织关系",
    mappedSystemRole: "映射的系统角色",
    selectOrgRelationRequired: "请选择组织关系类型",
    selectSystemRoleRequired: "请选择映射的系统角色",

    // Form validation
    nameRequired: "请输入角色名称",
    codeRequired: "请输入角色编码",
    nameCodeRequired: "请输入角色名称和编码",
    ruleTypeRequired: "请选择规则类型",
    enterScript: "请输入脚本内容",
    selectAtLeastOneUser: "请选择至少一个用户",

    // Form placeholders
    namePlaceholder: "请输入角色名称",
    codePlaceholder: "请输入角色编码",
    selectSystemRolePlaceholder: "请选择系统角色",
    enterScriptPlaceholder: "请输入 JavaScript 脚本",
    newWorkflowRoleTitle: "新建流程角色",
    nameHint: "为角色提供一个易于理解的名称",
    codeHint: "唯一标识符，建议使用大写字母和下划线",
    permissionsConfig: "权限配置",
    selectedCount: "已选择 {count} 个权限",
    loadingPermissions: "加载权限列表中...",
    descriptionPlaceholder: "请输入角色描述（可选）",

    // Workflow roles page
    searchWorkflowRolesPlaceholder: "搜索流程角色名称、编码或描述...",
    createWorkflowRole: "新建流程角色",
    ruleType: "规则类型",
    ruleTypes: {
      fixedUsers: "固定用户",
      orgRelation: "组织关系",
      roleMapping: "角色映射",
      dynamicScript: "动态脚本",
    },
    ruleConfig: "规则配置",
    ruleDescription: "规则说明",
    ruleDescriptions: {
      fixedUsers: "由管理员指定固定的用户列表作为审批人",
      orgRelation:
        "根据申请人与组织架构的关系动态确定审批人，如直属上级、部门负责人等",
      roleMapping: "根据申请人的系统角色映射到对应的审批人",
      dynamicScript: "使用自定义脚本动态计算审批人",
    },
    assignedUsers: "分配用户",
    noAssignedUsers: "暂无分配用户",
    assignedUserCount: "分配用户数",
    usageCount: "使用次数",
    workflows: "个流程",
    notFound: "流程角色不存在",
    loadFailed: "加载失败",
    workflowCount: "使用流程",
    noMatchingWorkflowRoles: "未找到匹配的流程角色",
    noWorkflowRoles: "暂无流程角色",
    noWorkflowRolesHint: "还没有添加任何流程角色",
    createFirstWorkflowRole: "创建第一个流程角色",
    workflowRolesUnit: "个流程角色",
    confirmDeleteWorkflowRole: "确认删除流程角色",
    confirmDeleteWorkflowRoleMessage: '确定要删除流程角色 "{name}" 吗？',
    roleUsedInWorkflows:
      "⚠️ 该角色被 {count} 个流程使用，删除后这些流程可能无法正常工作。",
    savePermissionsConfig: "保存权限配置",
    fallbackScopeTitle: "兜底数据范围（resource = *）",
    fallbackScopeHint: "适用于所有未单独配置数据范围的资源；通常设为本部门或本组织",
    scopePickPlaceholder: "选择数据范围",
    scopeNone: "未绑定（继承兜底）",
    scopeFallbackHint: "未绑定 — 继承兜底",
    // 权限配置 tab UX 文案
    builtInReadonlyBanner: "内置角色不可修改，仅供查看配置",
    permSearchPlaceholder: "搜索 resource / 模块名",
    showAll: "显示全部 ({count})",
    showOnlyConfigured: "只看已配置",
    permSummary: "已选 {permCount} 个权限 · 显式 scope {scopeCount} 条",
    noSearchMatch: "没有匹配的 resource",
    noConfigured: "暂无已配置的 resource — 点击右上角\"显示全部\"或在兜底数据范围里选一个起步",
    // ScopePicker 状态文案
    scopeInheritedFallback: "继承兜底：{name} ({scopeType})",
    fallbackUnconfigured: "未配置（运行时退化为 SELF）",
    scopeUnboundDegrade: "未绑定（运行时退化为 SELF）",
    noMatchingUsers: "未找到匹配的用户",
    noAvailableUsers: "没有可添加的用户",
    loadingRoles: "加载角色列表中...",
    loadingUsers: "加载用户列表中...",
    fixedUsersLabel: "指定用户",

    // Rule types
    orgRelation: "组织关系",
    sysRoleMapping: "系统角色映射",
    fixedUsers: "固定用户",
    dynamicScript: "动态脚本",
    orgRelationDesc:
      "根据组织架构关系动态确定审批人，如申请人的直属上级、部门负责人等",
    sysRoleMappingDesc: "映射到某个系统角色，该系统角色的所有用户都是审批人",
    fixedUsersDesc: "指定固定的审批人列表",
    dynamicScriptDesc: "通过自定义脚本动态计算审批人（高级功能）",
    directManager: "直属上级",
    deptHead: "部门负责人",
    skipLevelManager: "隔级上级",

    // Workflow role toast messages
    loadWorkflowRolesFailed: "加载流程角色失败",
    workflowRoleDeleted: "流程角色已删除",
    deleteWorkflowRoleFailed: "删除流程角色失败",

    // Permissions page
    searchPermissionsPlaceholder: "搜索权限资源、操作或描述...",
    expandAll: "全部展开",
    collapseAll: "全部折叠",
    moduleLabel: "模块",
    permissionsUnit: "个权限",
    action: "操作",
    permissionCode: "权限码",
    noMatchingPermissions: "未找到匹配的权限",
    totalResourceGroups: "共 {count} 个资源组",
    totalPermissions: "共 {count} 个权限",
    filteredFromResourceGroups: "从 {count} 个资源组中筛选",
    noPermissions: "没有权限数据",
    resourceGroupsUnit: "个资源分组",
    permissionsCountUnit: "个权限点",

    // Permissions toast messages
    loadPermissionsFailed: "加载权限失败",
  },

  // 表格列
  columns: {
    id: "ID",
    username: "用户名",
    realName: "真实姓名",
    email: "邮箱",
    department: "部门",
    position: "岗位",
    role: "角色",
    status: "状态",
    actions: "操作",
  },

  // 操作
  view: "查看",
  edit: "编辑",
  delete: "删除",
  enable: "启用",
  disable: "禁用",
  suspend: "停用",
  activate: "激活",
  resetPassword: "重置密码",
  assignRole: "分配角色",
  removeMember: "移除成员",
  more: "更多",

  // 对话框
  confirmDelete: "确认删除",
  confirmDeleteMessage: "确定要删除 {name} 吗？此操作不可撤销。",
  confirmRemove: "确认移除",
  confirmRemoveMessage: "确定要从此部门移除 {name} 吗？",

  // 消息（遗留键 - 某些地方可能仍在使用）
  addSuccess: "添加成功",
  addFailed: "添加失败",
  updateSuccess: "更新成功",
  updateFailed: "更新失败",
  deleteSuccess: "删除成功",
  deleteFailed: "删除失败",
  deleteConfirmMessage: '确定要删除"{name}"吗？',
  cannotDeleteWithMembers: "该部门下还有成员，无法删除",
  cannotDeleteWithSubDepts: "该部门下还有子部门，无法删除",
  ldapSynced: "Entra ID 同步",
  manualCreated: "手动创建",
  noDepartments: "暂无部门",
  source: "来源",
  topLevel: "顶级",
  departmentManager: "部门负责人", // 注：这个是指部门的负责人角色，不是用户的直属上级
  selectManager: "选择负责人",
  searchManager: "搜索用户...",
  departmentNamePlaceholder: "请输入部门名称",
  descriptionPlaceholder: "请输入部门描述（可选）",

  // DepartmentDialog 专用
  dialog: {
    editOrg: "编辑组织",
    addOrg: "添加组织",
    orgName: "组织名称",
    orgCode: "组织编码",
    orgManager: "组织负责人",
    orgNamePlaceholder: "请输入组织名称",
    deptNamePlaceholder: "请输入部门名称",
    orgDescriptionPlaceholder: "请输入组织描述（可选）",
    deptDescriptionPlaceholder: "请输入部门描述（可选）",
    relatedRegions: "关联区域",
    primaryRegion: "主要区域",
    selectPrimaryRegion: "请选择主要区域",
    primaryRegionHint: "权威归属，用于统计、路由、数据隔离",
    operatingRegions: "运营区域",
    operatingRegionsHint:
      "运营覆盖，用于筛选、展示、权限扩展（自动包含主要区域）",
    primaryBadge: "[主要]",
    loadDataFailed: "加载数据失败",
    orgNameRequired: "请填写组织名称",
    deptNameRequired: "请填写部门名称",
    selectPrimaryRegionRequired: "请选择主要区域",
    orgIdMissing: "组织ID缺失，无法创建部门",
    codeAlreadyExists: "部门编码已存在",
    cannotRemovePrimaryRegion: "不能移除主要区域",
    noMatchingResults: "无匹配结果",
    selectOrgFirst: "请先选择组织",
  },

  // 用户状态管理
  userStatusManagement: {
    confirmSuspend: '确定要停用用户 "{name}" 吗？',
    confirmActivate: '确定要激活用户 "{name}" 吗？',
    suspendSuccess: "用户已停用",
    suspendFailed: "停用失败",
    activateSuccess: "用户已激活",
    activateFailed: "激活失败",
  },

  // 筛选
  filter: "筛选",
  filterByDepartment: "按部门筛选",
  filterByRole: "按角色筛选",
  filterByStatus: "按状态筛选",
  resetFilter: "重置筛选",

  // 搜索
  search: "搜索",
  searchPlaceholder: "搜索成员...",
  searchByName: "按姓名搜索",
  searchByEmail: "按邮箱搜索",

  // 其他
  items: "项",
  noData: "暂无数据",
  loading: "加载中...",

  // 部门管理页面（钉钉风格）
  deptMgmt: {
    adminStructure: "行政架构",
    noOrganization: "暂无组织",
    deptId: "部门ID",
    employeeId: "工号",
    name: "姓名",
    hiredAt: "入职日期",
    loadFailed: "加载部门列表失败",
    selectToView: "请在左侧选择部门或组织查看成员",
    settings: "设置",
    selectOrg: "选择组织",
    addPerspective: "添加组织",
    addSubDept: "添加子部门",
    availableUsers: "可添加用户",
    selectedUsers: "已选择",
    clickToAdd: "点击左侧用户添加",
    noAvailableUsers: "没有可添加的用户",
    setOwner: "设置负责人",
    searchOwner: "搜索负责人",
    setOwnerSuccess: "负责人设置成功",
    setOwnerFailed: "设置失败",
    noManagerSet: "未设置主管",
    departmentMembers: "部门人数",
    includeSubDepartments: "包含子部门员工",
    fixed: "固定",
    // Add members dialog
    addMembers: "添加成员",
    searchUserPlaceholder: "搜索用户...",
    noUsersFound: "未找到匹配用户",
    loadUsersFailed: "加载用户列表失败",
    willAddMembers: "将添加 {count} 名成员到 {name}",
    addButton: "添加",
    membersAdded: "已添加 {count} 名成员",
    addFailed: "添加失败",
    // Feishu style additions
    memberAndDepartment: "成员和部门",
    // Department sidebar
    basicInfo: "基本信息",
    departmentHead: "部门主管",
    employeeCount: "在职人数",
    allMembers: "全部成员",
    noMembers: "暂无成员",
    resumeWarning: "恢复后，该用户将可以重新登录系统并访问原有权限。",
    memberRemoved: "成员已移除",

    // 补充缺失的键
    membersTab: "成员",
    departmentsTab: "部门",
    deletedMembersTab: "已删除成员",
    searchPlaceholder: "输入姓名、邮箱、手机号或用户ID",
    usersLabel: "成员",
    add: "添加",
    columnSettings: "列设置",
    status: "状态",
    department: "部门",
    phone: "电话",
    manager: "直属上级",
    region: "地区",
    source: "来源",
    dragToReorder: "拖动调整顺序",
    personInCharge: "负责人",
    searchDepartment: "搜索部门",
    noMatchingDepartments: "未找到匹配的部门",
    noMatchingMembers: "未找到匹配的成员",
    departmentName: "部门名称",
    size: "规模",
    action: "操作",
    noDepartments: "暂无部门",
    addFirstDepartment: "添加第一个部门",
    deletedMembersWarning: "已删除的成员可以永久恢复，所有数据将完整保留。",
    noDeletedMembers: "暂无已删除成员",
    deletedMembersHint: "删除的成员将显示在这里",
    memberName: "成员姓名",
    email: "邮箱",
    deletedAt: "删除时间",
    restore: "恢复",
    restoreSuccess: "用户恢复成功",
    restoreFailed: "恢复用户失败",
    restoreConfirmTitle: "确认恢复用户",
    restoreConfirmMessage: '确认要恢复用户 "{name}" 吗？',
    restoreConfirmHint: "恢复后，该用户将可以重新登录系统并访问原有权限。",
    confirmRestore: "确认恢复",
    restoring: "恢复中...",
    confirmRemoveMember: "确定要从部门移除该成员吗？",
    removing: "移除中...",
    removeSuccess: "成员移除成功",
    notFound: "部门不存在",
    remove: "移除",
    confirmDelete: '确定要删除"{name}"吗？',
    userHasNoDept: "⚠️ 该用户已无部门归属",

    // 批量操作
    batchMove: {
      title: "批量修改父部门",
      buttonTitle: "修改父部门",
      selectedCount: "已选择 {count} 个部门",
      warningTitle: "已选择 {count} 个部门",
      warningDesc: "这些部门的父部门将统一修改为您选择的目标部门",
      selectTarget: "选择新的父部门",
      selectTargetPlaceholder: "请选择父部门",
      selectTargetHint: "被选中的部门不能作为目标父部门",
      cancel: "取消",
      confirm: "确认修改",
      moving: "修改中...",
      success: "成功修改 {count} 个部门的父部门",
      failed: "批量修改失败",
      selectTargetRequired: "请选择目标父部门",
    },

    // 批量导入
    batchImport: {
      title: "批量导入",
      dialogTitle: "批量导入部门",
      steps: {
        title: "导入步骤",
        step1: "下载部门导入模板",
        step2: "按照模板格式填写部门信息",
        step3: "上传填写好的文件",
        step4: "确认无误后提交导入",
      },
      template: {
        title: "下载导入模板",
        downloadBtn: "下载模板",
        downloading: "下载中...",
        downloaded: "模板已下载",
        includes: "模板包含：部门名称*、上级部门名称、描述",
        instructionsTitle: "填写说明：",
        fieldName: "部门名称",
        fieldNameDesc: "必填，部门的显示名称",
        fieldParentName: "上级部门名称",
        fieldParentNameDesc:
          "可选，如果是顶级部门则留空，如果是子部门则填写上级部门的完整名称",
        fieldDescription: "描述",
        fieldDescriptionDesc: "可选，部门的职责描述",
        autoCodeTip:
          "💡 提示：系统会自动根据部门名称生成部门编码，无需手动填写",
        fileParseInDevelopment: "文件解析功能开发中...",
        downloadFilename: "部门导入模板.csv",
      },
      upload: {
        title: "上传文件",
        required: "上传文件 *",
        placeholder: "点击选择文件或拖拽文件到此处",
        reselect: "点击重新选择文件",
        formatHint: "支持 .xlsx、.xls、.csv 格式",
        parsing: "解析中...",
        parseSuccess: "文件解析成功，共 {count} 条有效数据",
        parseWarning: "文件解析完成，发现 {count} 条无效数据",
        parseFailed: "文件解析失败，请检查文件格式",
      },
      preview: {
        title: "数据预览 ({count} 条)",
        deptName: "部门名称",
        parentName: "上级部门名称",
        description: "描述",
        empty: "-",
      },
      actions: {
        cancel: "取消",
        confirm: "开始导入",
        importing: "导入中...",
      },
      messages: {
        selectFile: "请选择导入文件",
        selectOrg: "请先选择组织",
        importSuccess: "批量导入成功！共创建 {count} 个部门",
        importFailed: "批量导入失败",
        developing: "批量导入功能开发中...",
      },
    },
  },

  // ✅ 人员详情抽屉
  userDetail: {
    title: "成员详情",
    previous: "上一个",
    next: "下一个",
    active: "在职",
    inactive: "离职",
    suspended: "停用",
    terminated: "终止",
    loadFailed: "加载失败",
    notFound: "用户不存在",
    backToList: "返回列表",
    editBasicInfo: "编辑基本信息",

    // Tabs
    tabs: {
      basicInfo: "基本信息",
      departments: "部门归属",
      rolesPermissions: "角色与权限",
      logs: "操作日志",
    },

    // Actions
    actions: {
      edit: "编辑信息",
    },

    // Password Management
    password: {
      resetPassword: "重置密码",
      confirmResetPassword: "请为用户设置新密码",
      newPassword: "新密码",
      confirmPassword: "确认新密码",
      pleaseEnterPassword: "请输入密码",
      passwordMismatch: "两次密码输入不一致",
      passwordTooWeak: "密码强度不足",
      passwordStrength: "密码强度",
      passwordStrengthWeak: "弱",
      passwordStrengthMedium: "中",
      passwordStrengthStrong: "强",
      passwordRules: "密码规则",
      passwordRule1: "至少8个字符",
      passwordRule2: "至少一个大写字母",
      passwordRule3: "至少一个小写字母",
      passwordRule4: "至少一个数字",
      resetSuccess: "密码重置成功",
      resetFailed: "重置密码失败",
      resetting: "重置中...",
      confirmReset: "确认重置",
      cancel: "取消",
    },

    basicInfo: {
      title: "基本信息",
      employeeId: "员工编号",
      phone: "手机号",
      workCity: "工作地",
      hiredAt: "入职日期",
      createdAt: "创建时间",
      lastSyncedAt: "最后同步时间",
    },

    // Departments (已重组)
    departments: {
      title: "部门归属",
      addDepartment: "添加部门",
      noDepartments: "暂无部门归属",
      primaryBadge: "主部门",
      position: "职位",
      jobTitle: "职位头衔",
      jobTitlePlaceholder: "例如：高级工程师",
      manager: "直属上级",
      directManager: "直属上级",
      setPrimary: "设为主部门",
      setAsPrimary: "设为主部门",
      thisDepartment: "该部门",
      confirmRemove: '确定要移除用户从部门 "{name}" 吗？',
      selectDepartment: "请选择部门",
      loadFailed: "加载部门归属失败",
      edit: "编辑",
      addSuccess: "添加部门归属成功",
      addFailed: "添加部门归属失败",
      updateSuccess: "更新部门归属成功",
      updateFailed: "更新部门归属失败",
      setPrimarySuccess: "设置主部门成功",
      setPrimaryFailed: "设置主部门失败",
      removeSuccess: "移除部门归属成功",
      removeFailed: "移除部门归属失败",
      confirmSetPrimary: "确定要设置为主部门吗？",

      // Add Dialog
      addDialog: {
        title: "添加部门归属",
        description: "为用户添加新的部门归属",
        department: "部门",
        departmentRequired: "请选择部门",
        departmentPlaceholder: "请选择部门",
        position: "职位",
        positionPlaceholder: "请选择职位（可选）",
        titleLabel: "部门内头衔",
        titlePlaceholder: "例如：技术负责人",
        manager: "直属上级",
        managerPlaceholder: "请选择直属上级（可选）",
        selectDeptFirst: "请先选择部门",
        noManager: "该部门暂无其他可选上级",
        cancel: "取消",
        confirm: "确定",
      },

      // Edit Dialog
      editDialog: {
        title: "编辑部门归属",
        description: "修改用户在该部门的岗位、上级等信息",
        position: "职位",
        positionPlaceholder: "请选择职位（可选）",
        titleLabel: "部门内头衔",
        titlePlaceholder: "例如：技术负责人",
        manager: "直属上级",
        managerPlaceholder: "请选择上级（可选）",
        noManagersAvailable: "该部门暂无其他成员可选为上级",
        cancel: "取消",
        confirm: "保存",
      },
    },

    // Roles & Permissions
    rolesPermissions: {
      rolesSection: "已分配角色",
      noRoles: "暂无角色",
      permissionsSection: "权限列表",
      noPermissions: "暂无权限",
      loadFailed: "加载权限失败",
      noSearchResults: "未找到匹配的权限",
      searchPlaceholder: "搜索权限、来源...",
      permissionGroups: {
        user: "用户管理",
        department: "部门管理",
        role: "角色管理",
        permission: "权限管理",
        organization: "组织管理",
      },
    },

    // Logs
    logs: {
      loadFailed: "加载操作日志失败",
      noLogs: "暂无操作日志",
      unknownAction: "未知操作",
    },

    // 错误信息
    errors: {
      loadFailed: "加载用户信息失败",
    },

    // Edit Dialog
    editDialog: {
      title: "编辑用户",
      externalWarning: "该用户来源于 {source}，部分信息可能在下次同步时被覆盖",
      editBasicInfo: "修改用户基本信息",
      username: "用户名",
      usernameReadonly: "用户名不可修改",
      displayName: "显示名",
      displayNameRequired: "请输入显示名",
      displayNamePlaceholder: "请输入显示名",
      email: "邮箱",
      emailRequired: "请输入邮箱",
      emailInvalid: "邮箱格式不正确",
      emailPlaceholder: "请输入邮箱",
      phone: "手机号",
      phonePlaceholder: "请输入手机号",
      employeeId: "员工编号",
      employeeIdPlaceholder: "请输入员工编号",
      workCity: "工作地",
      workCityPlaceholder: "请输入或选择工作地城市",
      cancel: "取消",
      save: "保存",
      updateSuccess: "用户信息更新成功",
      updateFailed: "更新用户信息失败",
    },

    // Old fields (for backwards compatibility)
    jobDetails: "工作信息",
    customInfo: "自定义信息",

    // Basic Info Fields
    name: "姓名",
    username: "用户名",
    userId: "用户 ID",
    phone: "手机号",
    email: "工作邮箱",
    department: "部门",
    employeeId: "员工编号",
    status: "状态",

    // Job Details Fields
    hiredAt: "入职日期",
    region: "国家或地区",
    manager: "直属上级",
    position: "职位",
    source: "来源",
    allDepartments: "所有部门",
    primary: "主部门",

    // Custom Info
    noCustomInfo: "暂无自定义信息",
    // 注意：membersTab, departmentsTab, deletedMembersTab 已在上面定义（第938-940行），此处移除重复
    add: "添加",
    usersLabel: "成员",
    departmentsTabPlaceholder: "部门视图即将推出",
    deletedMembersTabPlaceholder: "已删除成员视图即将推出",
    searchPlaceholder: "输入姓名、邮箱、手机号或用户ID",
    searchDepartment: "搜索部门",
    departmentName: "部门名称",
    memberCount: "成员数",
    parentDepartment: "上级部门",
    action: "操作",
    viewMembers: "查看成员",
    noDepartments: "暂无部门",
    addFirstDepartment: "添加第一个部门",
    deletedMembersWarning: "已删除的成员可以永久恢复，所有数据将完整保留。",
    noDeletedMembers: "暂无已删除成员",
    deletedMembersHint: "删除的成员将显示在这里",
    restore: "恢复",
    restoreConfirmTitle: "确认恢复用户",
    restoreConfirmMessage: '确认要恢复用户 "{name}" 吗？',
    restoreConfirmHint: "恢复后，该用户将可以重新登录系统并访问原有权限。",
    confirmRestore: "确认恢复",
    restoring: "恢复中...",
    restoreSuccess: "用户恢复成功",
    restoreFailed: "恢复用户失败",
    deletedAt: "删除时间",
    terminatedAt: "离职时间",
    includeSubDepartments: "包含子部门员工",
    columnSettings: "列设置",
    dragToReorder: "拖动调整顺序",
    fixed: "固定",
    personInCharge: "负责人",
    statusAll: "全部",
    allMembers: "全部成员",

    // 批量操作
    // 批量操作
    batchMove: {
      title: "批量修改父部门",
      buttonTitle: "修改父部门",
      selectedCount: "已选择 {count} 个部门",
      warningTitle: "已选择 {count} 个部门",
      warningDesc: "这些部门的父部门将统一修改为您选择的目标部门",
      selectTarget: "选择新的父部门",
      selectTargetPlaceholder: "请选择父部门",
      selectTargetHint: "被选中的部门不能作为目标父部门",
      cancel: "取消",
      confirm: "确认修改",
      moving: "修改中...",
      success: "成功修改 {count} 个部门的父部门",
      failed: "批量修改失败",
      selectTargetRequired: "请选择目标父部门",
    },

    // 批量导入
    batchImport: {
      title: "批量导入",
      dialogTitle: "批量导入部门",
      steps: {
        title: "导入步骤",
        step1: "下载部门导入模板",
        step2: "按照模板格式填写部门信息",
        step3: "上传填写好的文件",
        step4: "确认无误后提交导入",
      },
      template: {
        title: "下载导入模板",
        downloadBtn: "下载模板",
        downloading: "下载中...",
        downloaded: "模板已下载",
        includes: "模板包含：部门名称*、上级部门名称、描述",
        instructionsTitle: "填写说明：",
        fieldName: "部门名称",
        fieldNameDesc: "必填，部门的显示名称",
        fieldParentName: "上级部门名称",
        fieldParentNameDesc:
          "可选，如果是顶级部门则留空，如果是子部门则填写上级部门的完整名称",
        fieldDescription: "描述",
        fieldDescriptionDesc: "可选，部门的职责描述",
        autoCodeTip:
          "💡 提示：系统会自动根据部门名称生成部门编码，无需手动填写",
        fileParseInDevelopment: "文件解析功能开发中...",
        downloadFilename: "部门导入模板.csv",
      },
      upload: {
        title: "上传文件",
        required: "上传文件 *",
        placeholder: "点击选择文件或拖拽文件到此处",
        reselect: "点击重新选择文件",
        formatHint: "支持 .xlsx、.xls、.csv 格式",
        parsing: "解析中...",
        parseSuccess: "文件解析成功，共 {count} 条有效数据",
        parseWarning: "文件解析完成，发现 {count} 条无效数据",
        parseFailed: "文件解析失败，请检查文件格式",
      },
      preview: {
        title: "数据预览 ({count} 条)",
        deptName: "部门名称",
        parentName: "上级部门名称",
        description: "描述",
        empty: "-",
      },
      actions: {
        cancel: "取消",
        confirm: "开始导入",
        importing: "导入中...",
      },
      messages: {
        selectFile: "请选择导入文件",
        selectOrg: "请先选择组织",
        importSuccess: "批量导入成功！共创建 {count} 个部门",
        importFailed: "批量导入失败",
        developing: "批量导入功能开发中...",
      },
    },
  },

  // 多组织管理
  multiOrg: "组织",

  // 通用字段补充
  size: "规模",
  confirmRemoveMember: "确定要从部门移除该成员吗？",
  confirmRemoveMemberMessage: "确定要将 {userName} 从 {deptName} 移除吗？",
  removing: "移除中...",

  // AI 工具授权管理（v2.2 权限 MVP）
  aiTools: {
    title: "AI 工具授权",
    subtitle: "管理角色和用户的额外 AI 工具开放权限。授权只能在 OpenClaw 基线工具之上做加法，无法收紧基线。",
    subtitleV23: "为角色和用户管理 AI 工具访问权限。核心对话工具（4 项）系统默认保留不可取消，其余工具可按角色/用户独立授权。",
    viewAuditLog: "查看授权变更审计",
    tabs: {
      ruleManagement: "规则管理",
      effectivePreview: "生效预览",
      roleGrants: "角色授权",
      userGrants: "用户授权",
    },
    subviews: {
      byRole: "按角色",
      byUser: "按用户",
      byTool: "按工具",
    },
    search: {
      rolePlaceholder: "搜索角色名/code...",
      userPlaceholder: "搜索用户名/邮箱/显示名...",
    },
    filters: {
      org: "组织",
      dept: "部门",
      role: "角色",
      hasExtra: "只看有额外授权",
      hasRevoked: "只看有工具被收回",
      reset: "重置过滤",
      allOrg: "全部组织",
      allDept: "全部部门",
      allRoles: "全部角色",
      selectTool: "选择工具",
      selectToolPlaceholder: "— 请选择 —",
    },
    categories: {
      core: "核心对话工具",
      fs: "文件",
      runtime: "运行时",
      sessions: "会话管理",
      memory: "记忆",
      web: "网页",
      media: "媒体",
      automation: "自动化",
      browser: "浏览器",
      productivity: "M365",
    },
    columns: {
      role: "角色",
      user: "用户",
      toolName: "工具",
      reason: "原因",
      source: "来源",
      createdAt: "创建时间",
      updatedAt: "最后更新",
      actions: "操作",
      authorizedTools: "已授权工具",
      toolCount: "工具数",
      roles: "角色",
      inheritedTools: "继承工具",
      extraDiff: "额外 +/-",
      effectiveTotal: "最终",
      noRole: "无角色",
      items: "项",
    },
    actions: {
      addRoleGrant: "添加角色授权",
      addUserGrant: "添加用户授权",
      delete: "删除",
      edit: "编辑",
      filter: "筛选",
      clearFilter: "清空筛选",
    },
    modal: {
      addRoleGrantTitle: "添加角色授权",
      addUserGrantTitle: "添加用户授权",
      selectRole: "选择角色",
      selectRolePlaceholder: "请选择角色",
      selectUser: "选择用户",
      selectUserPlaceholder: "搜索用户名 / 邮箱 / 显示名",
      selectTools: "选择工具（可多选）",
      selectTool: "选择工具",
      reason: "授权原因",
      reasonPlaceholder: "为什么给这个用户开小灶？例如：项目 X 临时需要",
      reasonHint: "便于事后审计，必填，最多 500 字符",
      save: "保存",
      cancel: "取消",
      saving: "保存中...",
    },
    empty: {
      noRoleGrants: "暂无角色级授权规则",
      noUserGrants: "暂无用户级授权规则",
      selectUserPrompt: "请先选择一个用户查看其生效工具",
      selectToolPrompt: "请先选择一个工具查看授权用户",
      noEffectiveTools: "该用户当前没有任何额外授权，只能使用 OpenClaw 基线工具",
      noToolSubjects: "暂无用户被授权使用该工具",
    },
    source: {
      fromRole: "角色",
      fromUser: "直接授权",
      locked: "系统锁定",
    },
    drawer: {
      editRoleTitle: "编辑角色授权",
      editUserTitle: "编辑用户授权",
      searchTools: "搜索工具...",
      selectAll: "全选",
      clearAll: "清空",
      changeSummary: "变更摘要",
      noChanges: "无变更",
      unsavedConfirm: "有未保存的变更，确定关闭？",
      reasonRequired: "请填写变更原因",
      reasonLabel: "变更原因（必填）",
      reasonPlaceholder: "例：项目 X 需要浏览器工具；暂停该用户的邮件访问",
      roleChain: "角色链",
      legendActive: "☑ 生效",
      legendRevoked: "◐ 已取消",
      legendOff: "☐ 未授权",
      legendHint: "点击切换状态",
      tagAdded: "+新增",
      collapse: "收起",
      expand: "展开",
    },
    effective: {
      selectUserHint: "从左侧选择一个用户查看生效工具",
      effectiveTools: "生效工具",
      locked: "锁定",
      inherited: "继承",
      userAdded: "用户加",
      userRemoved: "用户减",
      revokedTitle: "被显式取消",
      selectToolHint: "选择一个工具查看哪些用户拥有它",
      noToolSubjects: "暂无用户被授权使用该工具",
      noFilterResults: "没有找到符合条件的用户",
      filterResult: "筛选结果 {filtered} / 共 {total} 个用户",
      totalUsers: "共 {total} 个用户",
    },
    pagination: {
      total: "共 {total} 条，第 {page}/{totalPages} 页",
    },
    toast: {
      roleUpdated: "{role} 授权已更新：+{added} / -{removed}",
      userUpdated: "{user} 授权已更新：+{added} / -{removed}",
    },
    delete: {
      confirmTitle: "删除授权",
      confirmRoleGrant: "确认删除「{role}」对工具「{tool}」的授权吗？",
      confirmUserGrant: "确认删除「{user}」对工具「{tool}」的直接授权吗？",
      success: "删除成功",
    },
    create: {
      successRole: "已为「{role}」授权 {count} 个工具（跳过 {skipped} 个已存在）",
      successUser: "已为「{user}」授权工具「{tool}」",
    },
    errors: {
      duplicateGrant: "该规则已存在",
      unknownTool: "工具不在可用清单中",
      reasonRequired: "原因不能为空",
      loadFailed: "加载数据失败",
      saveFailed: "保存失败",
      deleteFailed: "删除失败",
      mustSelectRole: "请先选择角色",
      mustSelectUser: "请先选择用户",
      mustSelectAtLeastOneTool: "请至少选择一个工具",
    },
  },

  workCityImport: {
    title: "批量导入工作地",
    description: "上传两列 Excel（邮箱、工作地），系统将对比已有城市后交由管理员确认再落库。",
    templateHint: "模板格式：第 1 列 Email、第 2 列 工作地。首行可为表头，系统自动识别。",
    downloadTemplate: "下载模板",
    selectFile: "选择文件",
    reselectFile: "重新选择",
    parseFailed: "解析 Excel 失败，请检查文件格式",
    emptyFile: "Excel 为空或缺少必要列",
    rowsParsed: "已解析 {count} 行",
    preview: "预览",
    previewing: "预览中...",
    committing: "提交中...",
    commit: "确定导入",
    cancel: "取消",
    summary: "共 {total} 行，涉及 {cities} 个城市",
    categoryExactTitle: "已有城市（精确命中）",
    categoryExactHint: "将直接使用，无需额外处理",
    categorySimilarTitle: "相似警告",
    categorySimilarHint: "文件中的城市拼写与已有城市相似，请逐条确认",
    categoryNewTitle: "全新城市",
    categoryNewHint: "系统中尚无此城市，请确认是否新增",
    actionUse: "保留本次填写",
    actionReplace: "用已有 {city}",
    actionSkip: "跳过此城市",
    actionAddNew: "新增",
    actionSkipNew: "跳过",
    unmatchedTitle: "未匹配到系统用户的邮箱（将被跳过）",
    unmatchedEmpty: "所有邮箱均已匹配",
    rowsCount: "{count} 行",
    distanceHint: "编辑距离 {distance}",
    similarTo: "系统已有：{city}",
    commitSuccess: "导入完成：新增 {created}、更新 {updated}、跳过 {skipped}",
    commitFailed: "导入失败",
    previewFailed: "预览失败",
  },
};

export type OrganizationTranslations = typeof organizationZh;
