feat(admin-portal): 完成参考项目差距闭环 - 4 批次补齐 + Vitest 测试

差距分析闭环(workline §7-§8):
- P0:审计子模块 3 页 + 学校组织 7 页
- P1:系统设置 4 Card + 公告管理 + 邀请码管理
- P2:文件管理 + AI 配置
- P6:5 测试文件 / 69 用例全过

共享基础设施:
- permissions +11 权限点 +14 路由
- view-models +20 接口
- i18n +100 key
- graphql-client +25 operation
- fixtures/handlers +15 mock +20 handler

质量:typecheck + lint 零错误,vitest 69/69 通过,arch.db 已更新
This commit is contained in:
SpecialX
2026-07-13 13:05:29 +08:00
parent fad6e43b47
commit 7cf9aec20e
40 changed files with 6707 additions and 7 deletions

View File

@@ -0,0 +1,39 @@
/**
* 审计总览 Hooks
*
* contract §2.4auditOverviewStats / auditTrend
*/
import { useGraphQuery } from "./use-graphql";
import {
AUDIT_OVERVIEW_STATS_QUERY,
AUDIT_TREND_QUERY,
} from "@/lib/graphql-client";
import type { AuditOverviewStats, AuditTrendPoint } from "@/types/view-models";
interface AuditOverviewStatsResponse {
auditOverviewStats: AuditOverviewStats;
}
interface AuditTrendResponse {
auditTrend: AuditTrendPoint[];
}
export function useAuditOverviewStats() {
const result = useGraphQuery<AuditOverviewStatsResponse>(
AUDIT_OVERVIEW_STATS_QUERY,
);
return {
...result,
data: result.data?.auditOverviewStats ?? null,
};
}
export function useAuditTrend(days?: number) {
const result = useGraphQuery<AuditTrendResponse>(AUDIT_TREND_QUERY, {
days,
});
return {
...result,
data: result.data?.auditTrend ?? null,
};
}