feat: internationalize API error responses by locale

Add shared error codes with zh/en/ms messages, coded app exceptions,
and locale-aware global filter. Frontends send X-Locale so error text
matches the active UI language.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-10 13:36:38 +08:00
parent 03f54ca689
commit 641c92a5f5
23 changed files with 1059 additions and 234 deletions

View File

@@ -1,4 +1,5 @@
import { ForbiddenException, Injectable } from '@nestjs/common';
import { Injectable } from '@nestjs/common';
import { appForbidden } from '../../shared/common/app-error';
import { PrismaService } from '../../shared/prisma/prisma.service';
import { DEMO_ACCOUNTS, runSeed } from './run-seed';
@@ -13,7 +14,7 @@ export class DatabaseResetService {
async resetDatabase(): Promise<{ demoAccounts: readonly string[] }> {
if (!this.isAllowed()) {
throw new ForbiddenException('生产环境禁止重置数据库(需设置 ALLOW_DB_RESET=true');
throw appForbidden('DB_RESET_FORBIDDEN');
}
await this.truncateApplicationTables();