feat: 添加 Analytics 分析功能(行为追踪、错误码、协议更新)
This commit is contained in:
@@ -204,6 +204,8 @@
|
||||
const dailyTable = document.getElementById("dailyTable");
|
||||
|
||||
const AUTH_KEY = "analytics_logged_in";
|
||||
const DATA_BASE_URL_KEY = "analytics_data_base_url";
|
||||
const AUTH_TOKEN_KEY = "analytics_auth_token";
|
||||
|
||||
function formatDate(date) {
|
||||
const y = date.getUTCFullYear();
|
||||
@@ -240,8 +242,11 @@
|
||||
}
|
||||
|
||||
async function fetchDayEvents(date) {
|
||||
const res = await fetch(`/analytics-data/${date}.jsonl`, {
|
||||
const dataBaseUrl = sessionStorage.getItem(DATA_BASE_URL_KEY) || "/api/v1/analytics/data";
|
||||
const token = sessionStorage.getItem(AUTH_TOKEN_KEY);
|
||||
const res = await fetch(`${dataBaseUrl}/${date}`, {
|
||||
method: "GET",
|
||||
headers: token ? { Authorization: `Bearer ${token}` } : {},
|
||||
});
|
||||
if (res.status === 404) {
|
||||
return [];
|
||||
@@ -397,7 +402,17 @@
|
||||
if (!res.ok) {
|
||||
throw new Error("密码错误");
|
||||
}
|
||||
const payload = await res.json();
|
||||
const dataBaseUrl = typeof payload.data_base_url === "string" && payload.data_base_url
|
||||
? payload.data_base_url
|
||||
: "/api/v1/analytics/data";
|
||||
const token = typeof payload.token === "string" ? payload.token : "";
|
||||
if (!token) {
|
||||
throw new Error("登录响应缺少 token");
|
||||
}
|
||||
sessionStorage.setItem(AUTH_KEY, "1");
|
||||
sessionStorage.setItem(DATA_BASE_URL_KEY, dataBaseUrl);
|
||||
sessionStorage.setItem(AUTH_TOKEN_KEY, token);
|
||||
}
|
||||
|
||||
function enterDashboard() {
|
||||
@@ -407,6 +422,8 @@
|
||||
|
||||
function exitDashboard() {
|
||||
sessionStorage.removeItem(AUTH_KEY);
|
||||
sessionStorage.removeItem(DATA_BASE_URL_KEY);
|
||||
sessionStorage.removeItem(AUTH_TOKEN_KEY);
|
||||
dashboard.classList.add("hidden");
|
||||
loginCard.classList.remove("hidden");
|
||||
}
|
||||
@@ -436,6 +453,10 @@
|
||||
startDateInput.value = formatDate(start);
|
||||
endDateInput.value = formatDate(today);
|
||||
if (sessionStorage.getItem(AUTH_KEY) === "1") {
|
||||
if (!sessionStorage.getItem(AUTH_TOKEN_KEY)) {
|
||||
exitDashboard();
|
||||
return;
|
||||
}
|
||||
enterDashboard();
|
||||
loadData();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user