Files
learn-languages/src/modules/translator/translator-service.ts
goddonebianu c01c94abd0 refactor: 替换服务端 console.log/error 为 winston logger
- folder-action.ts: 18处 console.log -> log.error
- auth-action.ts: 4处 console.error -> log.error
- dictionary-action/service.ts: 3处 -> log.error
- translator-action/service.ts: 3处 -> log.error
- bigmodel/translator/orchestrator.ts: console -> log.debug/info/error
- bigmodel/tts.ts: console -> log.error/warn
- bigmodel/dictionary/*.ts: console -> log.error/debug/info

客户端代码(browser、page.tsx)保留 console.error
2026-03-08 14:58:43 +08:00

73 lines
2.7 KiB
TypeScript

import { executeTranslation } from "@/lib/bigmodel/translator/orchestrator";
import { repoCreateTranslationHistory, repoSelectLatestTranslation } from "./translator-repository";
import { ServiceInputTranslateText, ServiceOutputTranslateText } from "./translator-service-dto";
import { createLogger } from "@/lib/logger";
const log = createLogger("translator-service");
export const serviceTranslateText = async (
dto: ServiceInputTranslateText
): Promise<ServiceOutputTranslateText> => {
const { sourceText, targetLanguage, forceRetranslate, needIpa, userId } = dto;
// Check for existing translation
const lastTranslation = await repoSelectLatestTranslation({
sourceText,
targetLanguage,
});
if (forceRetranslate || !lastTranslation) {
// Call AI for translation
const response = await executeTranslation(
sourceText,
targetLanguage,
needIpa
);
// Save translation history asynchronously (don't block response)
repoCreateTranslationHistory({
userId,
sourceText,
sourceLanguage: response.sourceLanguage,
targetLanguage: response.targetLanguage,
translatedText: response.translatedText,
sourceIpa: needIpa ? response.sourceIpa : undefined,
targetIpa: needIpa ? response.targetIpa : undefined,
}).catch((error) => {
log.error("Failed to save translation data", { error });
});
return {
sourceText: response.sourceText,
translatedText: response.translatedText,
sourceLanguage: response.sourceLanguage,
targetLanguage: response.targetLanguage,
sourceIpa: response.sourceIpa || "",
targetIpa: response.targetIpa || "",
};
} else {
// Return cached translation
// Still save a history record for analytics
repoCreateTranslationHistory({
userId,
sourceText,
sourceLanguage: lastTranslation.sourceLanguage,
targetLanguage: lastTranslation.targetLanguage,
translatedText: lastTranslation.translatedText,
sourceIpa: lastTranslation.sourceIpa || undefined,
targetIpa: lastTranslation.targetIpa || undefined,
}).catch((error) => {
log.error("Failed to save translation data", { error });
});
return {
sourceText,
translatedText: lastTranslation.translatedText,
sourceLanguage: lastTranslation.sourceLanguage,
targetLanguage: lastTranslation.targetLanguage,
sourceIpa: lastTranslation.sourceIpa || "",
targetIpa: lastTranslation.targetIpa || "",
};
}
};