feat(P25-2/P25-3/P26-2/P28-1/P24-2/P29-3): 落地内部OA够用版前端入口与运营页面

关联 Issue: P25-2, P25-3, P25-4, P26-2, P26-4, P28-1, P28-2, P28-3, P28-4, P24-2, P29-3
这个提交包含在:
2026-03-21 18:03:48 +08:00
父节点 e39e41287e
当前提交 9905c1c79d
共修改 44 个文件,包含 2029 行新增和 169 行删除
+34
查看文件
@@ -0,0 +1,34 @@
export type RiskFlag = {
id: string;
entityType: string;
entityId: string;
riskCode: string;
level: "low" | "medium" | "high";
title: string;
detail: string | null;
source: string;
status: "open" | "resolved" | "dismissed";
payloadJson: Record<string, unknown> | null;
createdAt: string | null;
createdBy: string | null;
resolvedAt: string | null;
resolvedBy: string | null;
};
export type PrecheckDecision = "pass" | "warn" | "manual_review" | "block";
export type PrecheckResponse = {
entityType: "reimbursement" | "purchase_request" | "travel_request";
entityId: string;
decision: PrecheckDecision;
matchedBudgetControlRule: {
id: string;
name: string;
controlMode: "warn" | "block" | "manual_review";
} | null;
budgetHint: Record<string, unknown> | null;
warnings: Array<{ code: string; title: string; detail: string }>;
blockingReasons: Array<{ code: string; title: string; detail: string }>;
riskFlags: Array<{ code: string; level: "low" | "medium" | "high"; title: string; detail: string; willOpenOnSubmit: boolean }>;
nextActions: string[];
};