import { NETWORK_ERROR_CODE } from './client'; // 错误码 → i18n 文案键映射表:401/404 等观众可认知的码给出确定性文案, // 未登记码统一走 errors.unknown(原始 message 仅用于日志/排查)。 // // T15 全端语言验收(P4b Task 6):本表按契约枚举全集登记(机器守护见 // __tests__/error-coverage.spec.ts,遍历 @photo/contracts ErrorCodes 断言 // 无缺漏)。viewer 可达码给专属文案;管理/上传/内部域码(登录凭据、成员 // 冲突、上传校验、服务间鉴权——viewer 无对应界面)按移动端先例防御性 // 注册到通用文案,杜绝未来路由扩展时静默漏译。 export const errorCodeI18nKeys: Readonly> = { // 客户端合成码 [NETWORK_ERROR_CODE]: 'errors.network', // 401 域 AUTH_TOKEN_EXPIRED: 'errors.authExpired', // 登录凭据错误:viewer 无登录面(App/admin 域),防御性注册。 AUTH_INVALID_CREDENTIALS: 'errors.unknown', AUTH_RATE_LIMITED: 'errors.rateLimited', // P2 公开互动(likes/visits)匿名限速 429——viewer 直面。 RATE_LIMITED: 'errors.rateLimited', AUTH_FORBIDDEN: 'errors.forbidden', // 404 域 NOT_FOUND: 'errors.notFound', ALBUM_NOT_FOUND: 'errors.albumNotFound', ALBUM_NOT_PUBLIC: 'errors.albumNotAvailable', PHOTO_NOT_FOUND: 'errors.photoNotFound', PHOTO_NOT_PUBLIC: 'errors.photoNotFound', // P4a 下载两级开关(A18):相册可见但禁止下载——下载入口与文案直达。 DOWNLOAD_DISABLED: 'errors.downloadDisabled', // 上传/成员域(admin 与 App 上传链路):viewer 不可达,防御性注册。 ALBUM_UPLOAD_DISABLED: 'errors.unknown', MEMBER_CONFLICT: 'errors.unknown', UPLOAD_SESSION_CONFLICT: 'errors.unknown', UPLOAD_VERIFY_FAILED: 'errors.unknown', // 服务间内部同步鉴权(/internal/**):外部客户端不可达,防御性注册。 SYNC_AUTH_FAILED: 'errors.unknown', // 其余 VALIDATION_FAILED: 'errors.validationFailed', INTERNAL_ERROR: 'errors.internal', }; export function errorMessageKey(code: string): string { return errorCodeI18nKeys[code] ?? 'errors.unknown'; }