216 lines
7.0 KiB
JavaScript
216 lines
7.0 KiB
JavaScript
/**
|
||
* 状态枚举常量(规范 §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',
|
||
};
|