新增后台Dashboard并修正画板规范图选择

新增后台 Dashboard 默认入口、日周月筛选和运营汇总页签

补充后台 Dashboard 数据契约、接口统计和文档

修正画板角色与图标规范图选择、缓存和提示状态

修复创作页桌面导航类型收窄错误

更新 Codex 环境初始化脚本和相关回归测试记录
This commit is contained in:
2026-06-23 22:41:33 +08:00
parent d693279d8a
commit fbecb3c7cb
33 changed files with 2400 additions and 89 deletions
+20
View File
@@ -2,6 +2,8 @@ import type {
AdminUpsertCreationEntryEventBannersRequest,
AdminUpsertCreationEntryTypeConfigRequest,
AdminCreationEntryConfigResponse,
AdminDashboardQuery,
AdminDashboardResponse,
AdminDebugHttpRequest,
AdminDebugHttpResponse,
AdminDisableProfileRedeemCodeRequest,
@@ -143,6 +145,16 @@ export function getAdminOverview(token: string) {
return request<AdminOverviewResponse>('/admin/api/overview', { token });
}
export function getAdminDashboard(
token: string,
query: AdminDashboardQuery = {},
) {
return request<AdminDashboardResponse>(
`/admin/api/dashboard${buildDashboardQuery(query)}`,
{ token },
);
}
export function getAdminDatabaseTables(token: string) {
return request<AdminDatabaseTableListResponse>('/admin/api/database/tables', {
token,
@@ -402,6 +414,14 @@ function buildQueryString(query: AdminTrackingEventListQuery) {
return queryString ? `?${queryString}` : '';
}
function buildDashboardQuery(query: AdminDashboardQuery) {
const params = new URLSearchParams();
appendQueryParam(params, 'granularity', query.granularity);
appendQueryParam(params, 'anchor', query.anchor);
const queryString = params.toString();
return queryString ? `?${queryString}` : '';
}
function buildDatabaseTableRowsQuery(query: AdminDatabaseTableRowsQuery) {
const params = new URLSearchParams();
appendQueryParam(params, 'search', query.search);
+68
View File
@@ -54,6 +54,74 @@ export interface AdminOverviewResponse {
database: AdminDatabaseOverviewPayload;
}
export type AdminDashboardGranularity = 'day' | 'week' | 'month';
export interface AdminDashboardQuery {
granularity?: AdminDashboardGranularity;
anchor?: string;
}
export interface AdminDashboardResponse {
range: AdminDashboardRangePayload;
metrics: AdminDashboardMetricsPayload;
charts: AdminDashboardChartPayload[];
operations: AdminDashboardOperationsPayload;
warnings: string[];
generatedAt: string;
}
export interface AdminDashboardRangePayload {
granularity: AdminDashboardGranularity;
anchorDate: string;
periodStartDate: string;
periodEndDate: string;
periodLabel: string;
}
export interface AdminDashboardMetricsPayload {
generatedAssets: number;
consumedMudPoints: number;
totalRegisteredUsers: number;
visitUsers: number;
totalVisitUsers: number;
visitCount: number;
totalVisitCount: number;
currentUsers: number;
}
export interface AdminDashboardChartPayload {
id: string;
title: string;
unit: string;
total: number;
buckets: AdminDashboardChartBucketPayload[];
}
export interface AdminDashboardChartBucketPayload {
key: string;
label: string;
value: number;
}
export interface AdminDashboardOperationsPayload {
cards: AdminDashboardOperationMetricPayload[];
assetKindBreakdown: AdminDashboardBreakdownRowPayload[];
moduleVisitBreakdown: AdminDashboardBreakdownRowPayload[];
}
export interface AdminDashboardOperationMetricPayload {
id: string;
label: string;
value: number;
unit: string;
}
export interface AdminDashboardBreakdownRowPayload {
key: string;
label: string;
value: number;
}
export interface AdminServiceOverviewPayload {
bindHost: string;
bindPort: number;