feat(web): 前端逻辑骨架——http/router/stores/queries 与薄壳路由
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
/**
|
||||
* vue-query key 工厂——失效与缓存的唯一命名源。
|
||||
* 约定:`[面, 端点, …参数]`,参数保持可 JSON 序列化。
|
||||
*/
|
||||
export type KeyFilters = {
|
||||
member_id?: number | "unassigned";
|
||||
status?: "active" | "disabled";
|
||||
recent_failed?: boolean;
|
||||
};
|
||||
|
||||
export type PageQuery = {
|
||||
page: number;
|
||||
page_size: number;
|
||||
};
|
||||
|
||||
export type TimeRange = {
|
||||
from: string;
|
||||
to: string;
|
||||
};
|
||||
|
||||
export const qk = {
|
||||
admin: {
|
||||
setupState: () => ["admin", "setup-state"] as const,
|
||||
session: () => ["admin", "session"] as const,
|
||||
engine: () => ["admin", "engine"] as const,
|
||||
overview: (range: TimeRange) =>
|
||||
["admin", "overview", range.from, range.to] as const,
|
||||
keys: (filters: KeyFilters) => ["admin", "keys", filters] as const,
|
||||
logs: (range: TimeRange & PageQuery) =>
|
||||
["admin", "logs", range.from, range.to, range.page, range.page_size] as const,
|
||||
payments: () => ["admin", "payments"] as const,
|
||||
qpuLatest: () => ["admin", "qpu-latest"] as const,
|
||||
members: () => ["admin", "members"] as const,
|
||||
auditLogs: (q: PageQuery & { domain?: string }) =>
|
||||
["admin", "audit-logs", q.page, q.page_size, q.domain ?? ""] as const,
|
||||
},
|
||||
member: {
|
||||
me: () => ["member", "me"] as const,
|
||||
overview: (range: TimeRange) =>
|
||||
["member", "overview", range.from, range.to] as const,
|
||||
logs: (range: TimeRange & PageQuery) =>
|
||||
["member", "logs", range.from, range.to, range.page, range.page_size] as const,
|
||||
},
|
||||
};
|
||||
Reference in New Issue
Block a user