export const BizCode = { Success: 0, ServerError: 10000, DbError: 10001, CacheError: 10002, SerializationError: 10003, ExternalServiceError: 10004, ConfigError: 10005, Unauthorized: 20000, AccessTokenExpired: 20001, RefreshTokenExpired: 20002, PermissionDenied: 20003, AccountDisabled: 20004, InvalidCredentials: 20005, MissingHeader: 20006, BadRequest: 30000, ValidationError: 30001, ResourceNotFound: 30002, ResourceAlreadyExists: 30003, MethodNotAllowed: 30004, RateLimitExceeded: 40000, PreconditionFailed: 40001, } as const; export type BizCode = (typeof BizCode)[keyof typeof BizCode]; export type SuccessResponse = { code: typeof BizCode.Success; message: string; data?: T; trace_id?: string; }; export type ErrorResponse = { code: Exclude | number; message: string; details?: unknown; trace_id?: string; }; export type ApiResponse = SuccessResponse | ErrorResponse; export function isSuccessResponse(res: ApiResponse): res is SuccessResponse { return res.code === BizCode.Success; } export function isErrorResponse(res: ApiResponse): res is ErrorResponse { return res.code !== BizCode.Success; }