/** * 全局消息常量:统一维护接口中文提示,避免在业务代码中散落硬编码字符串。 */ 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_ROLE_INVALID: 'Token 中角色信息不合法', TOKEN_FIELD_INVALID: 'Token 中字段不合法', INVALID_CREDENTIALS: '手机号、角色或密码错误', PASSWORD_NOT_ENABLED: '该账号未启用密码登录', }, USER: { NOT_FOUND: '用户不存在', DUPLICATE_OPEN_ID: 'openId 已被注册', 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: '用户存在关联患者或任务,无法删除', MULTI_ACCOUNT_REQUIRE_HOSPITAL: '检测到多个同手机号账号,请传 hospitalId 指定登录医院', }, TASK: { ITEMS_REQUIRED: '任务明细 items 不能为空', DEVICE_NOT_FOUND: '存在设备不在当前医院或设备不存在', ENGINEER_INVALID: '工程师必须为当前医院有效工程师', TASK_NOT_FOUND: '任务不存在或不属于当前医院', ACCEPT_ONLY_PENDING: '仅待接收任务可执行接收', COMPLETE_ONLY_ACCEPTED: '仅已接收任务可执行完成', CANCEL_ONLY_PENDING_ACCEPTED: '仅待接收/已接收任务可取消', ENGINEER_ALREADY_ASSIGNED: '任务已被其他工程师接收', ENGINEER_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: '患者存在关联设备,无法删除', PHONE_IDCARD_REQUIRED: 'phone 与 idCardHash 均为必填', LIFE_CYCLE_NOT_FOUND: '未找到匹配的患者档案,请先确认手机号与身份证哈希', SYSTEM_ADMIN_HOSPITAL_REQUIRED: '系统管理员查询必须显式传入 hospitalId', ACTOR_HOSPITAL_REQUIRED: '当前登录上下文缺少医院信息', }, 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: '小组不允许更换所属科室', DELETE_CONFLICT: '存在关联数据,无法删除,请先清理用户、患者、任务或下级组织后重试', }, } as const;