chore: 增加主页积分操作与事件同步诊断日志

This commit is contained in:
JSR
2026-03-20 17:16:19 +08:00
parent 4f9b58e93b
commit d7460ec53f
2 changed files with 72 additions and 0 deletions
+26
View File
@@ -5,6 +5,7 @@ use sea_orm::{
TransactionTrait,
};
use serde::{Deserialize, Serialize};
use serde_json::json;
use std::sync::Arc;
use tauri::State;
use uuid::Uuid;
@@ -173,7 +174,32 @@ pub async fn event_create(
active.update(&txn).await.map_err(|e| e.to_string())?;
txn.commit().await.map_err(|e| e.to_string())?;
{
let state_guard = state.read();
let logger = state_guard.logger.read();
logger.info_with_meta(
"event_create:committed",
json!({
"student_name": student_name,
"delta": data.delta,
"val_prev": val_prev,
"val_curr": val_curr,
}),
);
}
realtime_dual_write_sync(state.inner()).await?;
{
let state_guard = state.read();
let logger = state_guard.logger.read();
logger.info_with_meta(
"event_create:sync_done",
json!({
"student_name": student_name,
"delta": data.delta,
"val_curr": val_curr,
}),
);
}
Ok(IpcResponse::success(inserted.id))
}
Ok(None) => Ok(IpcResponse::error("Student not found")),
+46
View File
@@ -105,6 +105,18 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
window.dispatchEvent(new CustomEvent("ss:data-updated", { detail: { category } }))
}
const logHome = (message: string, meta?: Record<string, unknown>) => {
try {
if (meta) {
console.info(`[Home] ${message}`, meta)
} else {
console.info(`[Home] ${message}`)
}
} catch {
void 0
}
}
const getSurname = (name: string) => {
if (!name) return ""
return name.charAt(0)
@@ -121,6 +133,7 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
const fetchData = useCallback(async (silent = false) => {
if (!(window as any).api) return
const requestId = ++fetchRequestIdRef.current
logHome("fetchData:start", { requestId, silent })
if (!silent) setLoading(true)
const [stuRes, reaRes] = await Promise.all([
(window as any).api.queryStudents({}),
@@ -128,6 +141,15 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
])
if (requestId !== fetchRequestIdRef.current) return
logHome("fetchData:response", {
requestId,
silent,
studentsSuccess: Boolean(stuRes?.success),
studentsCount: Array.isArray(stuRes?.data) ? stuRes.data.length : 0,
reasonsSuccess: Boolean(reaRes?.success),
reasonsCount: Array.isArray(reaRes?.data) ? reaRes.data.length : 0,
})
if (stuRes.success) {
const enrichedStudents = (stuRes.data as student[]).map((s) => ({
...s,
@@ -148,6 +170,12 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
if (res.success) {
const latest = Array.isArray(res.data) && res.data.length > 0 ? (res.data[0] as scoreEvent) : null
setLatestEvent(latest)
logHome("fetchLatestEvent:response", {
hasLatest: Boolean(latest),
latestStudent: latest?.student_name,
latestDelta: latest?.delta,
latestUuid: latest?.uuid,
})
}
}, [])
@@ -156,6 +184,7 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
fetchLatestEvent()
const onDataUpdated = (e: any) => {
const category = e?.detail?.category
logHome("event:ss:data-updated", { detail: e?.detail })
if (
category === "events" ||
category === "students" ||
@@ -448,12 +477,25 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
}
setSubmitLoading(true)
logHome("performSubmit:start", {
student: student.name,
delta,
content,
localScoreBefore: student.score,
})
const res = await (window as any).api.createEvent({
student_name: student.name,
reason_content: content,
delta: delta,
})
logHome("performSubmit:createEvent:response", {
student: student.name,
delta,
success: Boolean(res?.success),
message: (res as any)?.message,
})
if (res.success) {
messageApi.success(
delta > 0
@@ -464,6 +506,10 @@ export const Home: React.FC<HomeProps> = ({ canEdit, isPortraitMode = false }) =
fetchData(true)
fetchLatestEvent()
emitDataUpdated("events")
logHome("performSubmit:afterSuccessRefreshDispatched", {
student: student.name,
delta,
})
} else {
messageApi.error(res.message || t("home.submitFailed"))
}