docs: 更新rules
This commit is contained in:
parent
1575154bfb
commit
9f112c2ebc
File diff suppressed because it is too large
Load Diff
@ -1,188 +0,0 @@
|
|||||||
/**
|
|
||||||
* @file 统一错误码定义
|
|
||||||
* @author AI助手
|
|
||||||
* @date 2025-06-29
|
|
||||||
* @lastEditor AI Assistant
|
|
||||||
* @lastEditTime 2025-01-07
|
|
||||||
* @description 定义整个应用的统一错误码,提供类型安全的错误处理
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 应用错误码枚举
|
|
||||||
* @description 统一管理所有错误码,确保错误处理的一致性
|
|
||||||
*/
|
|
||||||
export const ERROR_CODES = {
|
|
||||||
// 成功
|
|
||||||
SUCCESS: 'SUCCESS',
|
|
||||||
|
|
||||||
// 客户端错误 4xx
|
|
||||||
VALIDATION_ERROR: 'VALIDATION_ERROR', // 参数验证失败
|
|
||||||
UNAUTHORIZED: 'UNAUTHORIZED', // 未授权
|
|
||||||
FORBIDDEN: 'FORBIDDEN', // 禁止访问
|
|
||||||
NOT_FOUND: 'NOT_FOUND', // 资源不存在
|
|
||||||
METHOD_NOT_ALLOWED: 'METHOD_NOT_ALLOWED', // 方法不允许
|
|
||||||
CONFLICT: 'CONFLICT', // 资源冲突
|
|
||||||
RATE_LIMIT_EXCEEDED: 'RATE_LIMIT_EXCEEDED', // 请求频率超限
|
|
||||||
|
|
||||||
// 业务错误 4xx
|
|
||||||
BUSINESS_ERROR: 'BUSINESS_ERROR', // 通用业务错误
|
|
||||||
USER_NOT_FOUND: 'USER_NOT_FOUND', // 用户不存在
|
|
||||||
USER_ALREADY_EXISTS: 'USER_ALREADY_EXISTS', // 用户已存在
|
|
||||||
INVALID_CREDENTIALS: 'INVALID_CREDENTIALS', // 凭据无效
|
|
||||||
TOKEN_EXPIRED: 'TOKEN_EXPIRED', // Token过期
|
|
||||||
TOKEN_INVALID: 'TOKEN_INVALID', // Token无效
|
|
||||||
INSUFFICIENT_PERMISSIONS: 'INSUFFICIENT_PERMISSIONS', // 权限不足
|
|
||||||
|
|
||||||
// 用户注册相关错误
|
|
||||||
USERNAME_EXISTS: 'USERNAME_EXISTS', // 用户名已存在
|
|
||||||
EMAIL_EXISTS: 'EMAIL_EXISTS', // 邮箱已存在
|
|
||||||
PASSWORD_MISMATCH: 'PASSWORD_MISMATCH', // 密码不匹配
|
|
||||||
CAPTCHA_ERROR: 'CAPTCHA_ERROR', // 验证码错误
|
|
||||||
EMAIL_SEND_FAILED: 'EMAIL_SEND_FAILED', // 邮件发送失败
|
|
||||||
|
|
||||||
// 用户激活相关错误
|
|
||||||
INVALID_ACTIVATION_TOKEN: 'INVALID_ACTIVATION_TOKEN', // 激活令牌无效
|
|
||||||
ALREADY_ACTIVATED: 'ALREADY_ACTIVATED', // 已经激活
|
|
||||||
|
|
||||||
// 用户登录相关错误
|
|
||||||
INVALID_PASSWORD: 'INVALID_PASSWORD', // 密码错误
|
|
||||||
ACCOUNT_NOT_ACTIVATED: 'ACCOUNT_NOT_ACTIVATED', // 账号未激活
|
|
||||||
ACCOUNT_LOCKED: 'ACCOUNT_LOCKED', // 账号被锁定
|
|
||||||
TOO_MANY_FAILED_ATTEMPTS: 'TOO_MANY_FAILED_ATTEMPTS', // 失败次数过多
|
|
||||||
TOO_MANY_ATTEMPTS: 'TOO_MANY_ATTEMPTS', // 登录次数过多
|
|
||||||
CAPTCHA_REQUIRED: 'CAPTCHA_REQUIRED', // 需要验证码
|
|
||||||
|
|
||||||
// 密码重置相关错误
|
|
||||||
INVALID_RESET_TOKEN: 'INVALID_RESET_TOKEN', // 重置令牌无效
|
|
||||||
|
|
||||||
// 系统状态
|
|
||||||
NOT_IMPLEMENTED: 'NOT_IMPLEMENTED', // 功能未实现
|
|
||||||
|
|
||||||
// 服务器错误 5xx
|
|
||||||
INTERNAL_ERROR: 'INTERNAL_ERROR', // 内部服务器错误
|
|
||||||
DATABASE_ERROR: 'DATABASE_ERROR', // 数据库错误
|
|
||||||
REDIS_ERROR: 'REDIS_ERROR', // Redis错误
|
|
||||||
EXTERNAL_API_ERROR: 'EXTERNAL_API_ERROR', // 外部API错误
|
|
||||||
SERVICE_UNAVAILABLE: 'SERVICE_UNAVAILABLE', // 服务不可用
|
|
||||||
} as const;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 错误码类型
|
|
||||||
*/
|
|
||||||
export type ErrorCode = typeof ERROR_CODES[keyof typeof ERROR_CODES];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 错误码到HTTP状态码的映射
|
|
||||||
*/
|
|
||||||
export const ERROR_CODE_TO_HTTP_STATUS: Record<ErrorCode, number> = {
|
|
||||||
// 成功
|
|
||||||
[ERROR_CODES.SUCCESS]: 200,
|
|
||||||
|
|
||||||
// 客户端错误 4xx
|
|
||||||
[ERROR_CODES.VALIDATION_ERROR]: 400,
|
|
||||||
[ERROR_CODES.UNAUTHORIZED]: 401,
|
|
||||||
[ERROR_CODES.FORBIDDEN]: 403,
|
|
||||||
[ERROR_CODES.NOT_FOUND]: 404,
|
|
||||||
[ERROR_CODES.METHOD_NOT_ALLOWED]: 405,
|
|
||||||
[ERROR_CODES.CONFLICT]: 409,
|
|
||||||
[ERROR_CODES.RATE_LIMIT_EXCEEDED]: 429,
|
|
||||||
|
|
||||||
// 业务错误 4xx
|
|
||||||
[ERROR_CODES.BUSINESS_ERROR]: 400,
|
|
||||||
[ERROR_CODES.USER_NOT_FOUND]: 404,
|
|
||||||
[ERROR_CODES.USER_ALREADY_EXISTS]: 409,
|
|
||||||
[ERROR_CODES.INVALID_CREDENTIALS]: 401,
|
|
||||||
[ERROR_CODES.TOKEN_EXPIRED]: 401,
|
|
||||||
[ERROR_CODES.TOKEN_INVALID]: 401,
|
|
||||||
[ERROR_CODES.INSUFFICIENT_PERMISSIONS]: 403,
|
|
||||||
|
|
||||||
// 用户注册相关错误
|
|
||||||
[ERROR_CODES.USERNAME_EXISTS]: 409,
|
|
||||||
[ERROR_CODES.EMAIL_EXISTS]: 409,
|
|
||||||
[ERROR_CODES.PASSWORD_MISMATCH]: 400,
|
|
||||||
[ERROR_CODES.CAPTCHA_ERROR]: 400,
|
|
||||||
[ERROR_CODES.EMAIL_SEND_FAILED]: 500,
|
|
||||||
|
|
||||||
// 用户激活相关错误
|
|
||||||
[ERROR_CODES.INVALID_ACTIVATION_TOKEN]: 400,
|
|
||||||
[ERROR_CODES.ALREADY_ACTIVATED]: 409,
|
|
||||||
|
|
||||||
// 用户登录相关错误
|
|
||||||
[ERROR_CODES.INVALID_PASSWORD]: 401,
|
|
||||||
[ERROR_CODES.ACCOUNT_NOT_ACTIVATED]: 403,
|
|
||||||
[ERROR_CODES.ACCOUNT_LOCKED]: 403,
|
|
||||||
[ERROR_CODES.TOO_MANY_FAILED_ATTEMPTS]: 429,
|
|
||||||
[ERROR_CODES.TOO_MANY_ATTEMPTS]: 429,
|
|
||||||
[ERROR_CODES.CAPTCHA_REQUIRED]: 400,
|
|
||||||
|
|
||||||
// 密码重置相关错误
|
|
||||||
[ERROR_CODES.INVALID_RESET_TOKEN]: 400,
|
|
||||||
|
|
||||||
// 系统状态
|
|
||||||
[ERROR_CODES.NOT_IMPLEMENTED]: 501,
|
|
||||||
|
|
||||||
// 服务器错误 5xx
|
|
||||||
[ERROR_CODES.INTERNAL_ERROR]: 500,
|
|
||||||
[ERROR_CODES.DATABASE_ERROR]: 500,
|
|
||||||
[ERROR_CODES.REDIS_ERROR]: 500,
|
|
||||||
[ERROR_CODES.EXTERNAL_API_ERROR]: 502,
|
|
||||||
[ERROR_CODES.SERVICE_UNAVAILABLE]: 503,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 错误码描述映射
|
|
||||||
*/
|
|
||||||
export const ERROR_CODE_MESSAGES: Record<ErrorCode, string> = {
|
|
||||||
// 成功
|
|
||||||
[ERROR_CODES.SUCCESS]: '操作成功',
|
|
||||||
|
|
||||||
// 客户端错误
|
|
||||||
[ERROR_CODES.VALIDATION_ERROR]: '请求参数验证失败',
|
|
||||||
[ERROR_CODES.UNAUTHORIZED]: '未授权访问',
|
|
||||||
[ERROR_CODES.FORBIDDEN]: '禁止访问',
|
|
||||||
[ERROR_CODES.NOT_FOUND]: '请求的资源不存在',
|
|
||||||
[ERROR_CODES.METHOD_NOT_ALLOWED]: '请求方法不被允许',
|
|
||||||
[ERROR_CODES.CONFLICT]: '请求与当前资源状态冲突',
|
|
||||||
[ERROR_CODES.RATE_LIMIT_EXCEEDED]: '请求频率超过限制',
|
|
||||||
|
|
||||||
// 业务错误
|
|
||||||
[ERROR_CODES.BUSINESS_ERROR]: '业务处理失败',
|
|
||||||
[ERROR_CODES.USER_NOT_FOUND]: '用户不存在',
|
|
||||||
[ERROR_CODES.USER_ALREADY_EXISTS]: '用户已存在',
|
|
||||||
[ERROR_CODES.INVALID_CREDENTIALS]: '用户名或密码错误',
|
|
||||||
[ERROR_CODES.TOKEN_EXPIRED]: '访问令牌已过期',
|
|
||||||
[ERROR_CODES.TOKEN_INVALID]: '访问令牌无效',
|
|
||||||
[ERROR_CODES.INSUFFICIENT_PERMISSIONS]: '权限不足',
|
|
||||||
|
|
||||||
// 用户注册相关错误
|
|
||||||
[ERROR_CODES.USERNAME_EXISTS]: '用户名已存在',
|
|
||||||
[ERROR_CODES.EMAIL_EXISTS]: '邮箱已被注册',
|
|
||||||
[ERROR_CODES.PASSWORD_MISMATCH]: '两次输入的密码不一致',
|
|
||||||
[ERROR_CODES.CAPTCHA_ERROR]: '验证码错误或已过期',
|
|
||||||
[ERROR_CODES.EMAIL_SEND_FAILED]: '邮件发送失败',
|
|
||||||
|
|
||||||
// 用户激活相关错误
|
|
||||||
[ERROR_CODES.INVALID_ACTIVATION_TOKEN]: '激活令牌无效或已过期',
|
|
||||||
[ERROR_CODES.ALREADY_ACTIVATED]: '账号已经激活',
|
|
||||||
|
|
||||||
// 用户登录相关错误
|
|
||||||
[ERROR_CODES.INVALID_PASSWORD]: '密码错误',
|
|
||||||
[ERROR_CODES.ACCOUNT_NOT_ACTIVATED]: '账号未激活',
|
|
||||||
[ERROR_CODES.ACCOUNT_LOCKED]: '账号已被锁定',
|
|
||||||
[ERROR_CODES.TOO_MANY_FAILED_ATTEMPTS]: '登录失败次数过多',
|
|
||||||
[ERROR_CODES.TOO_MANY_ATTEMPTS]: '登录次数过多,请稍后再试',
|
|
||||||
[ERROR_CODES.CAPTCHA_REQUIRED]: '请输入验证码',
|
|
||||||
|
|
||||||
// 密码重置相关错误
|
|
||||||
[ERROR_CODES.INVALID_RESET_TOKEN]: '重置令牌无效或已过期',
|
|
||||||
|
|
||||||
// 系统状态
|
|
||||||
[ERROR_CODES.NOT_IMPLEMENTED]: '功能未实现',
|
|
||||||
|
|
||||||
// 服务器错误
|
|
||||||
[ERROR_CODES.INTERNAL_ERROR]: '服务器内部错误',
|
|
||||||
[ERROR_CODES.DATABASE_ERROR]: '数据库操作失败',
|
|
||||||
[ERROR_CODES.REDIS_ERROR]: 'Redis操作失败',
|
|
||||||
[ERROR_CODES.EXTERNAL_API_ERROR]: '外部服务调用失败',
|
|
||||||
[ERROR_CODES.SERVICE_UNAVAILABLE]: '服务暂时不可用',
|
|
||||||
};
|
|
@ -77,12 +77,12 @@
|
|||||||
- [x] 2.4 扩展auth.controller.ts - 实现激活路由
|
- [x] 2.4 扩展auth.controller.ts - 实现激活路由
|
||||||
- [x] 2.5 扩展auth.test.ts - 编写激活测试用例
|
- [x] 2.5 扩展auth.test.ts - 编写激活测试用例
|
||||||
|
|
||||||
- [ ] 3.0 POST /auth/login - 用户登录接口
|
- [x] 3.0 POST /auth/login - 用户登录接口
|
||||||
- [x] 3.1 扩展auth.schema.ts - 定义登录Schema
|
- [x] 3.1 扩展auth.schema.ts - 定义登录Schema
|
||||||
- [x] 3.2 扩展auth.response.ts - 定义登录响应格式
|
- [x] 3.2 扩展auth.response.ts - 定义登录响应格式
|
||||||
- [x] 3.3 扩展auth.service.ts - 实现登录业务逻辑
|
- [x] 3.3 扩展auth.service.ts - 实现登录业务逻辑
|
||||||
- [x] 3.4 扩展auth.controller.ts - 实现登录路由
|
- [x] 3.4 扩展auth.controller.ts - 实现登录路由
|
||||||
- [ ] 3.5 扩展auth.test.ts - 编写登录测试用例
|
- [x] 3.5 扩展auth.test.ts - 编写登录测试用例
|
||||||
|
|
||||||
- [ ] 4.0 POST /auth/refresh - Token刷新接口
|
- [ ] 4.0 POST /auth/refresh - Token刷新接口
|
||||||
- [ ] 4.1 扩展auth.schema.ts - 定义刷新Schema
|
- [ ] 4.1 扩展auth.schema.ts - 定义刷新Schema
|
||||||
|
Loading…
Reference in New Issue
Block a user