/**
 * 全局消息常量：统一维护接口中文提示，避免在业务代码中散落硬编码字符串。
 */
export const MESSAGES = {
  SUCCESS: '成功',
  DEFAULT_BAD_REQUEST: '请求参数不合法',
  DEFAULT_UNAUTHORIZED: '未登录或登录已过期',
  DEFAULT_FORBIDDEN: '无权限执行当前操作',
  DEFAULT_NOT_FOUND: '请求资源不存在',
  DEFAULT_CONFLICT: '请求冲突，请检查后重试',
  DEFAULT_INTERNAL_ERROR: '服务器内部错误，请稍后重试',

  DB: {
    TABLE_MISSING: '数据库表不存在，请先执行数据库迁移',
    COLUMN_MISSING: '数据库字段不存在，请先同步数据库结构',
    CONNECTION_FAILED: '数据库连接失败，请检查 DATABASE_URL 与数据库服务状态',
  },

  AUTH: {
    MISSING_BEARER: '缺少 Bearer Token',
    TOKEN_SECRET_MISSING: '服务端未配置认证密钥',
    TOKEN_INVALID: 'Token 无效或已过期',
    TOKEN_PAYLOAD_INVALID: 'Token 载荷不合法',
    TOKEN_USER_NOT_FOUND: 'Token 对应用户不存在，请重新登录',
    TOKEN_REVOKED: 'Token 已失效，请重新登录',
    TOKEN_ROLE_INVALID: 'Token 中角色信息不合法',
    TOKEN_FIELD_INVALID: 'Token 中字段不合法',
    INVALID_CREDENTIALS: '手机号、密码或角色不匹配',
    PASSWORD_NOT_ENABLED: '该账号未启用密码登录',
    PASSWORD_LOGIN_TICKET_INVALID: '账号选择票据无效或已过期',
    PASSWORD_ACCOUNT_SELECTION_INVALID: '请选择有效的候选账号',
    REGISTER_DISABLED: '注册接口已关闭，请联系管理员创建账号',
    WECHAT_MINIAPP_CONFIG_MISSING: '服务端未配置微信小程序认证参数',
    WECHAT_MINIAPP_LOGIN_FAILED: '微信登录授权失败，请重新获取登录凭证',
    WECHAT_MINIAPP_PHONE_FAILED: '微信手机号授权失败，请重新获取手机号凭证',
    MINIAPP_NO_MATCHED_USER: '手机号未匹配到院内账号',
    MINIAPP_LOGIN_TICKET_INVALID: '账号选择票据无效或已过期',
    MINIAPP_ACCOUNT_SELECTION_INVALID: '请选择有效的候选账号',
    MINIAPP_OPEN_ID_BOUND_OTHER_USER: '当前院内账号已绑定其他微信账号',
    MINIAPP_OPEN_ID_BOUND_OTHER_FAMILY: '当前微信账号已绑定其他 C 端账号',
    FAMILY_PHONE_NOT_LINKED_PATIENT: '当前手机号未关联患者档案',
    FAMILY_PHONE_LINKED_MULTI_PATIENTS:
      '当前手机号关联了多份患者档案，请联系管理员处理',
    FAMILY_ACCOUNT_NOT_FOUND: 'C端登录账号不存在，请重新登录',
    THROTTLED: '操作过于频繁，请稍后再试',
  },

  USER: {
    NOT_FOUND: '用户不存在',
    DUPLICATE_PHONE_ROLE_SCOPE: '同医院下该角色手机号已存在',
    INVALID_ROLE: '角色不合法',
    INVALID_PHONE: '手机号格式不合法',
    INVALID_PASSWORD: '密码长度至少 8 位',
    INVALID_OPEN_ID: 'openId 格式不合法',
    HOSPITAL_REQUIRED: 'hospitalId 必填',
    HOSPITAL_NOT_FOUND: 'hospitalId 对应医院不存在',
    HOSPITAL_ID_INVALID: 'hospitalId 必须为整数',
    TARGET_NOT_ENGINEER: '目标用户不是工程师',
    ENGINEER_BIND_FORBIDDEN: '仅系统管理员可绑定工程师医院',
    SYSTEM_ADMIN_REG_DISABLED: '系统管理员注册已关闭',
    SYSTEM_ADMIN_BOOTSTRAP_KEY_INVALID: '系统管理员引导密钥错误',
    SYSTEM_ADMIN_SCOPE_INVALID: '系统管理员不可绑定医院/科室/小组',
    DEPARTMENT_REQUIRED: '当前角色必须绑定科室',
    GROUP_REQUIRED: '当前角色必须绑定小组',
    ENGINEER_SCOPE_INVALID: '工程师不可绑定科室/小组',
    DEPARTMENT_HOSPITAL_MISMATCH: '科室不属于指定医院',
    GROUP_DEPARTMENT_REQUIRED: '绑定小组时必须同时传入科室',
    GROUP_DEPARTMENT_MISMATCH: '小组不属于指定科室',
    DOCTOR_ONLY_SCOPE_CHANGE: '仅医生/主任/组长允许调整科室/小组归属',
    DELETE_CONFLICT: '用户存在关联患者或任务，无法删除',
    CREATE_FORBIDDEN: '当前角色无权限创建该用户',
    HOSPITAL_ADMIN_SCOPE_FORBIDDEN: '医院管理员仅可操作本院非管理员账号',
    DIRECTOR_SCOPE_FORBIDDEN: '科室主任仅可操作本科室医生或组长账号',
  },

  TASK: {
    ITEMS_REQUIRED: '任务明细 items 不能为空',
    DEVICE_NOT_FOUND: '存在设备不在当前医院或设备不存在',
    DEVICE_MULTI_HOSPITAL: '同一批调压任务中的设备必须属于同一家医院',
    DUPLICATE_DEVICE_OPEN_TASK: '该设备已有待处理调压任务，请勿重复发布',
    ENGINEER_REQUIRED: '接收工程师必选',
    ENGINEER_INVALID: '工程师必须为当前医院有效工程师',
    TASK_NOT_FOUND: '任务不存在或不属于当前医院',
    ACCEPT_ONLY_PENDING: '仅待接收任务可执行接收',
    COMPLETE_ONLY_ACCEPTED: '仅已接收任务可执行完成',
    COMPLETE_MATERIALS_REQUIRED: '完成任务至少上传一张图片或一个视频',
    COMPLETE_MATERIAL_TYPE_INVALID: '完成任务仅支持图片或视频凭证',
    CANCEL_ONLY_PENDING_ACCEPTED: '仅待接收/已接收任务可取消',
    ENGINEER_ALREADY_ASSIGNED: '任务已被其他工程师接收',
    ENGINEER_ONLY_ASSIGNEE: '仅任务接收人可完成任务',
    CANCEL_ONLY_ASSIGNEE: '仅任务接收人可取消接收',
    CANCEL_ONLY_CREATOR: '仅任务创建者可取消任务',
    ACTOR_ROLE_FORBIDDEN: '当前角色无权限执行该任务操作',
    ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息',
  },

  PATIENT: {
    NOT_FOUND: '患者不存在或无权限访问',
    ROLE_FORBIDDEN: '当前角色无权限查询患者列表',
    GROUP_REQUIRED: '组长查询需携带 groupId',
    DEPARTMENT_REQUIRED: '主任查询需携带 departmentId',
    DOCTOR_NOT_FOUND: '归属人员不存在',
    DOCTOR_ROLE_REQUIRED: '归属用户必须为医生/主任/组长角色',
    DOCTOR_SCOPE_FORBIDDEN: '仅可选择当前权限范围内医生/主任/组长',
    DELETE_CONFLICT: '患者存在关联设备，无法删除',
    LIFE_CYCLE_NOT_FOUND: '未找到匹配的患者档案，请先确认手机号与身份证号',
    SYSTEM_ADMIN_HOSPITAL_REQUIRED: '系统管理员查询必须显式传入 hospitalId',
    ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息',
    SURGERY_ITEMS_REQUIRED: '手术下至少需要录入一个植入设备',
    SURGERY_NOT_FOUND: '手术记录不存在或无权限访问',
    IMPLANT_CATALOG_NOT_FOUND: '植入物型号不存在或不在当前医院可见范围内',
    SURGERY_UPDATE_NOT_SUPPORTED:
      '患者更新接口不支持直接修改手术，请使用新增手术接口',
    SURGERY_DEVICE_SET_UPDATE_NOT_SUPPORTED:
      '编辑手术暂不支持新增或删除植入设备，请逐项修改现有设备信息',
    SURGERY_ABANDON_UPDATE_NOT_SUPPORTED:
      '编辑手术暂不支持修改弃用旧设备，请通过追加手术处理',
    SURGERY_DEVICE_TASK_CONFLICT: '存在调压任务记录的植入设备不支持修改型号',
    ABANDON_DEVICE_SCOPE_FORBIDDEN: '仅可弃用当前患者名下设备',
  },

  DEVICE: {
    NOT_FOUND: '设备不存在或无权限访问',
    CURRENT_PRESSURE_INVALID: 'currentPressure 必须是合法挡位标签',
    STATUS_INVALID: '设备状态不合法',
    PATIENT_REQUIRED: 'patientId 必填且必须为整数',
    PATIENT_NOT_FOUND: '归属患者不存在',
    PATIENT_SCOPE_FORBIDDEN: '仅可绑定当前权限范围内患者',
    DELETE_CONFLICT: '设备存在关联任务记录，无法删除',
    ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息',
    CATALOG_NOT_FOUND: '植入物型号不存在',
    CATALOG_MODEL_DUPLICATE: '植入物型号编码已存在',
    CATALOG_SCOPE_FORBIDDEN: '当前角色无权限维护该植入物型号',
    CATALOG_DELETE_CONFLICT: '植入物型号已被患者手术引用，无法删除',
    VALVE_PRESSURE_REQUIRED: '阀门类型至少需要配置一个压力挡位',
    PRESSURE_LEVEL_INVALID: '压力值不在该植入物配置的挡位范围内',
    DEVICE_NOT_ADJUSTABLE: '仅可调压设备允许创建调压任务',
  },

  DICTIONARY: {
    NOT_FOUND: '字典项不存在',
    LABEL_REQUIRED: '字典项名称不能为空',
    DUPLICATE: '同类型下字典项名称已存在',
    SYSTEM_ADMIN_ONLY_MAINTAIN: '仅系统管理员可维护字典',
  },

  UPLOAD: {
    FILE_REQUIRED: '请先选择要上传的文件',
    UNSUPPORTED_FILE_TYPE: '仅支持图片、视频、PDF/Office 文档上传',
    ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息，无法上传文件',
    SYSTEM_ADMIN_HOSPITAL_REQUIRED:
      '系统管理员上传文件时必须显式指定 hospitalId',
    INVALID_IMAGE_FILE: '上传的图片无法解析或压缩失败',
    INVALID_VIDEO_FILE: '上传的视频无法解析或压缩失败',
    INVALID_FILE_SIGNATURE: '上传文件内容与声明类型不匹配',
    FFMPEG_NOT_AVAILABLE: '服务端缺少视频压缩能力',
  },

  ORG: {
    HOSPITAL_NOT_FOUND: '医院不存在',
    DEPARTMENT_NOT_FOUND: '科室不存在',
    GROUP_NOT_FOUND: '小组不存在',
    HOSPITAL_ADMIN_SCOPE_INVALID: '院管仅可操作本院组织数据',
    ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息',
    ACTOR_DEPARTMENT_REQUIRED: '当前登录上下文缺少科室信息',
    ACTOR_GROUP_REQUIRED: '当前登录上下文缺少小组信息',
    SYSTEM_ADMIN_ONLY_CREATE_HOSPITAL: '仅系统管理员可创建医院',
    SYSTEM_ADMIN_ONLY_DELETE_HOSPITAL: '仅系统管理员可删除医院',
    HOSPITAL_NAME_REQUIRED: '医院名称不能为空',
    DEPARTMENT_NAME_REQUIRED: '科室名称不能为空',
    GROUP_NAME_REQUIRED: '小组名称不能为空',
    HOSPITAL_ID_REQUIRED: 'hospitalId 必填且必须为整数',
    DEPARTMENT_ID_REQUIRED: 'departmentId 必填且必须为整数',
    GROUP_ID_REQUIRED: 'groupId 必填且必须为整数',
    DEPARTMENT_HOSPITAL_MISMATCH: '科室不属于指定医院',
    GROUP_DEPARTMENT_MISMATCH: '小组不属于指定科室',
    DEPARTMENT_REPARENT_FORBIDDEN: '科室不允许更换所属医院',
    GROUP_REPARENT_FORBIDDEN: '小组不允许更换所属科室',
    GROUP_DELETE_HAS_USERS: '小组下仍有成员，无法删除，请先调整用户归属',
    DELETE_CONFLICT:
      '存在关联数据，无法删除，请先清理用户、患者、任务或下级组织后重试',
  },
} as const;
