diff --git a/src/shared/lib/action-utils.ts b/src/shared/lib/action-utils.ts index 6658c87..bd6b0ec 100644 --- a/src/shared/lib/action-utils.ts +++ b/src/shared/lib/action-utils.ts @@ -9,6 +9,9 @@ import type { ActionState } from "@/shared/types/action-state" import { PermissionDeniedError } from "@/shared/lib/errors" +import { createModuleLogger } from "@/shared/lib/logger" + +const log = createModuleLogger("action") /** * 已知的业务错误类型,消息可以安全返回给客户端。 @@ -69,11 +72,11 @@ export function handleActionError(e: unknown): ActionState { // 未知错误:不暴露内部细节,仅记录服务端日志 if (e instanceof Error) { - console.error("[ActionError]", e.name, e.message, e.stack) + log.error({ err: e }, "Action failed") return { success: false, message: "操作失败,请稍后重试", errorCode: "unexpected" } } - console.error("[ActionError] Unknown error:", e) + log.error({ err: e }, "Unknown action error") return { success: false, message: "操作失败,请稍后重试", errorCode: "unexpected" } } @@ -90,11 +93,11 @@ export function handleActionError(e: unknown): ActionState { * const result = await safeActionCall( * () => createGradeRecordAction(null, formData), * { - * onError: () => toast.error("保存失败"), + * onError: () => notify.error("保存失败"), * onFinally: () => setIsSubmitting(false), * } * ) - * if (result?.success) { toast.success("保存成功") } + * if (result?.success) { notify.success("保存成功") } * ``` */ export async function safeActionCall( @@ -109,7 +112,7 @@ export async function safeActionCall( } catch (e) { // Action 抛出异常(非返回 failure),如网络错误、序列化错误等 options?.onError?.(e) - console.error("[SafeActionCall]", e) + log.error({ err: e }, "Safe action call threw") return null } finally { options?.onFinally?.()