Files
danyang-match/miniapp/constants/statusEnums.js
T

216 lines
7.0 KiB
JavaScript
Raw Normal View History

2026-09-09 22:05:00 +08:00
/**
* 状态枚举常量(规范 §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',
};