feat(housekeeping): personalize command deck
CI / check (pull_request) Successful in 36s
CI / release (pull_request) Skipped
CI / deploy (pull_request) Skipped

This commit is contained in:
Simo committed 2026-08-30 16:55:10 +02:00
1 parent 300ac0ef95
commit 5574e601bb
12 files changed
+1549 -1

No files matched your search

+45
View File
@@ -0,0 +1,45 @@
import "server-only";
import { desc, eq } from "drizzle-orm";
import type {
HousekeepingCapabilityContext,
HousekeepingResult,
} from "@/features/housekeeping/foundation/contracts";
import type { HousekeepingRecentItem } from "@/features/housekeeping/foundation/recent/recent-work";
import { createHousekeepingRecentWorkService } from "@/features/housekeeping/foundation/recent/recent-work";
import { createHousekeepingRegistry } from "@/features/housekeeping/foundation/registry";
import { HOUSEKEEPING_MANIFESTS } from "@/features/housekeeping/manifests";
import { AdminAuditLog, db } from "@/lib/db";
import { logAudit } from "@/lib/services/audit";
const recentWorkService = createHousekeepingRecentWorkService({
registry: createHousekeepingRegistry(HOUSEKEEPING_MANIFESTS),
async loadRows(userId, limit) {
return db
.select({
action: AdminAuditLog.action,
target: AdminAuditLog.target,
domain: AdminAuditLog.domain,
outcome: AdminAuditLog.outcome,
createdAt: AdminAuditLog.createdAt,
})
.from(AdminAuditLog)
.where(eq(AdminAuditLog.userId, userId))
.orderBy(desc(AdminAuditLog.id))
.limit(limit);
},
writeAudit: logAudit,
});
export async function loadHousekeepingRecentWork(
context: HousekeepingCapabilityContext,
): Promise<HousekeepingResult<readonly HousekeepingRecentItem[]>> {
return recentWorkService.load(context);
}
export async function recordHousekeepingRouteVisit(
routeId: string,
context: HousekeepingCapabilityContext,
): Promise<HousekeepingResult<HousekeepingRecentItem>> {
return recentWorkService.recordVisit(routeId, context);
}