/** * 状态枚举常量(规范 §7-10, §22, §44-50, §66, §107) * * 全平台状态字符串统一在此定义,禁止页面散落魔法字符串。 * 状态决定权限,权限决定路由,路由承载任务。 */ // ============ 资料完成状态(规范 §7) ============ exports.PROFILE_COMPLETION = { NOT_STARTED: 'not_started', IN_PROGRESS: 'in_progress', COMPLETED: 'completed', }; // ============ 资料审核状态(规范 §8) ============ exports.PROFILE_REVIEW = { NOT_SUBMITTED: 'not_submitted', PENDING: 'pending', APPROVED: 'approved', NEED_EDIT: 'need_edit', REJECTED: 'rejected', }; // ============ 账号状态(规范 §9) ============ exports.ACCOUNT_STATUS = { NORMAL: 'normal', REVIEWING_RISK: 'reviewing_risk', LIMITED: 'limited', SUSPENDED: 'suspended', BANNED: 'banned', CLOSED: 'closed', }; // ============ 婚恋服务状态(规范 §10) ============ exports.RELATIONSHIP_STATUS = { SEARCHING: 'searching', // 正在寻找 GETTING_TO_KNOW: 'getting_to_know', // 正在了解 PAUSED: 'paused', // 暂停寻找 MATCHED_SUCCESSFULLY: 'matched_successfully', // 成功牵手 SERVICE_EXITED: 'service_exited', // 退出婚恋服务 }; // ============ 推荐卡关系状态(规范 §22) ============ exports.RELATION_STATUS = { NEUTRAL: 'neutral', LIKED: 'liked', PASSED: 'passed', MUTUAL_MATCH: 'mutual_match', BLOCKED: 'blocked', UNMATCHED: 'unmatched', }; // ============ 推荐列表加载状态(规范 §21) ============ exports.RECOMMENDATION_STATE = { IDLE: 'idle', LOADING: 'loading', LOADED: 'loaded', EMPTY: 'empty', FINISHED: 'finished', ERROR: 'error', }; // ============ 活动状态(规范 §44) ============ exports.ACTIVITY_STATUS = { DRAFT: 'draft', REGISTRATION_OPEN: 'registration_open', REGISTRATION_CLOSED: 'registration_closed', ONGOING: 'ongoing', ENDED: 'ended', CANCELLED: 'cancelled', }; // ============ 活动报名状态(规范 §45) ============ exports.REGISTRATION_STATUS = { NOT_APPLIED: 'not_applied', PENDING: 'pending', APPROVED: 'approved', REJECTED: 'rejected', CANCELLED: 'cancelled', }; // ============ 活动签到状态(规范 §47) ============ exports.CHECKIN_STATUS = { NOT_CHECKED_IN: 'not_checked_in', CHECKED_IN: 'checked_in', }; // ============ 红娘服务状态(规范 §49) ============ exports.MATCHMAKER_SERVICE_STATUS = { SUBMITTED: 'submitted', ASSIGNED: 'assigned', IN_SERVICE: 'in_service', WAITING_USER: 'waiting_user', COMPLETED: 'completed', CANCELLED: 'cancelled', }; // ============ 红娘推荐状态(规范 §50) ============ exports.MATCHMAKER_RECOMMENDATION_STATUS = { PENDING_VIEW: 'pending_view', VIEWED: 'viewed', LIKED: 'liked', PASSED: 'passed', MUTUAL_MATCH: 'mutual_match', EXPIRED: 'expired', }; // ============ 聊天连接状态(规范 §104) ============ exports.CHAT_CONNECTION = { DISCONNECTED: 'disconnected', CONNECTING: 'connecting', CONNECTED: 'connected', RECONNECTING: 'reconnecting', }; // ============ 消息发送状态(规范 §107) ============ exports.MESSAGE_SEND_STATUS = { SENDING: 'sending', SENT: 'sent', FAILED: 'failed', }; // ============ 图片状态(规范 §115) ============ exports.PHOTO_STATUS = { LOCAL: 'local', UPLOADING: 'uploading', UPLOADED: 'uploaded', FAILED: 'failed', REVIEW_PENDING: 'review_pending', }; // ============ 聊天气泡类型(规范 §62) ============ exports.CHAT_BUBBLE_TYPE = { SELF: 'self', OTHER: 'other', SYSTEM: 'system', }; // ============ 请求错误分类(规范 §79) ============ exports.REQUEST_ERROR = { NETWORK_ERROR: 'network_error', UNAUTHORIZED: 'unauthorized', FORBIDDEN: 'forbidden', BUSINESS_ERROR: 'business_error', SERVER_ERROR: 'server_error', MAINTENANCE: 'maintenance', RATE_LIMITED: 'rate_limited', }; // ============ 业务错误码 → 用户可理解文案(规范 §80-84) ============ exports.BUSINESS_ERROR_CODE = { AUTH_EXPIRED: 'AUTH_EXPIRED', PROFILE_NOT_APPROVED: 'PROFILE_NOT_APPROVED', ACCOUNT_LIMITED: 'ACCOUNT_LIMITED', TARGET_UNAVAILABLE: 'TARGET_UNAVAILABLE', MATCH_REQUIRED: 'MATCH_REQUIRED', ACTIVITY_FULL: 'ACTIVITY_FULL', ACTIVITY_CLOSED: 'ACTIVITY_CLOSED', ALREADY_APPLIED: 'ALREADY_APPLIED', DUPLICATE_ACTION: 'DUPLICATE_ACTION', }; // ============ 用户可理解文案映射 ============ exports.ERROR_USER_MESSAGE = { [exports.REQUEST_ERROR.NETWORK_ERROR]: '网络好像有点问题,请检查网络后重试', [exports.REQUEST_ERROR.UNAUTHORIZED]: '登录状态已过期,请重新登录', [exports.REQUEST_ERROR.FORBIDDEN]: '无权限访问该功能', [exports.REQUEST_ERROR.BUSINESS_ERROR]: '操作失败,请稍后重试', [exports.REQUEST_ERROR.SERVER_ERROR]: '服务暂时不可用,请稍后再试', [exports.REQUEST_ERROR.MAINTENANCE]: '平台正在维护,请稍后再试', [exports.REQUEST_ERROR.RATE_LIMITED]: '请求过于频繁,请稍后重试', [exports.BUSINESS_ERROR_CODE.AUTH_EXPIRED]: '登录状态已过期,请重新登录', [exports.BUSINESS_ERROR_CODE.PROFILE_NOT_APPROVED]: '当前资料尚未通过审核', [exports.BUSINESS_ERROR_CODE.ACCOUNT_LIMITED]: '账号已被限制,详情请查看账号状态', [exports.BUSINESS_ERROR_CODE.TARGET_UNAVAILABLE]: '该用户当前不可查看或联系', [exports.BUSINESS_ERROR_CODE.MATCH_REQUIRED]: '当前平台未提供用户间即时聊天功能', [exports.BUSINESS_ERROR_CODE.ACTIVITY_FULL]: '本次活动报名人数已满', [exports.BUSINESS_ERROR_CODE.ACTIVITY_CLOSED]: '本次活动报名已结束', [exports.BUSINESS_ERROR_CODE.ALREADY_APPLIED]: '你已经提交过申请', [exports.BUSINESS_ERROR_CODE.DUPLICATE_ACTION]: '操作已提交,请勿重复', }; /** * 将后端错误码/请求错误分类映射为用户可理解文案 * @param {string} code 错误码 * @param {string} [fallback] 后端原始 message(作为兜底) * @returns {string} 用户可理解文案 */ exports.mapErrorMessage = (code, fallback) => { return exports.ERROR_USER_MESSAGE[code] || fallback || '操作失败,请稍后重试'; }; // ============ 状态徽章文案映射(StatusBadge 组件复用) ============ exports.STATUS_BADGE = { VERIFIED: { label: '已实名', kind: 'success' }, REVIEWED: { label: '已审核', kind: 'success' }, REVIEWING: { label: '审核中', kind: 'warning' }, NEED_EDIT: { label: '需修改', kind: 'warning' }, SUCCESS: { label: '已完成', kind: 'success' }, PENDING: { label: '待处理', kind: 'warning' }, DANGER: { label: '高风险', kind: 'danger' }, DISABLED: { label: '已停用', kind: 'disabled' }, SERVICE: { label: '服务中', kind: 'info' }, }; // ============ 危险操作类型(Dialog/ConfirmDangerDialog 复用) ============ exports.DANGER_ACTION = { BLOCK: 'block', UNBLOCK: 'unblock', UNMATCH: 'unmatch', PAUSE: 'pause', SUCCESS_MATCH: 'success_match', LOGOUT: 'logout', CLOSE_ACCOUNT: 'close_account', };