收口导航与报销审批入口(05-30-nav-reimbursement-approval-surface)

这个提交包含在:
2026-05-30 14:39:13 +08:00
父节点 caf62657f3
当前提交 a0db9c3dbe
共修改 15 个文件,包含 345 行新增和 434 行删除
-1
查看文件
@@ -124,7 +124,6 @@ const FEATURE_FLAG_SNAPSHOT_SCHEMA = {
};
const BACKUP_NAVIGATION_KEYS = new Set([
"purchaseRequests",
"travelRequests",
"budgets",
"paymentBatches",
+2 -1
查看文件
@@ -310,7 +310,8 @@ async function ensureWorkspaceSetting(prisma) {
systemSettings: "admin",
featureFlags: "admin",
auditLogs: "admin",
purchaseRequests: "admin",
contractsRegistry: "main",
purchaseRequests: "main",
travelRequests: "admin",
budgets: "admin",
paymentBatches: "admin",
+4 -2
查看文件
@@ -157,7 +157,8 @@ async function ensureWorkspaceSetting(prisma) {
systemSettings: "admin",
featureFlags: "admin",
auditLogs: "admin",
purchaseRequests: "admin",
contractsRegistry: "main",
purchaseRequests: "main",
travelRequests: "admin",
budgets: "admin",
paymentBatches: "admin",
@@ -191,7 +192,8 @@ async function ensureWorkspaceSetting(prisma) {
systemSettings: "admin",
featureFlags: "admin",
auditLogs: "admin",
purchaseRequests: "admin",
contractsRegistry: "main",
purchaseRequests: "main",
travelRequests: "admin",
budgets: "admin",
paymentBatches: "admin",
+13 -11
查看文件
@@ -17,6 +17,7 @@ const FINANCE_ROLE_CODES = new Set(["finance", "finance_mgr"]);
const TEAM_NAVIGATION_ROLE_CODES = new Set(["manager", "ceo", "finance_mgr", "hr", "admin"]);
const FINANCE_PERMISSION_CODES = Object.freeze(["payment.batch.manage", "risk.review.manage", "expense.finance.pay"]);
const FINANCE_NAVIGATION_MODULES = new Set(["paymentBatches", "apOperations", "invoicePool"]);
const DAY_TO_DAY_BUSINESS_MODULES = new Set(["assets", "contractsRegistry", "purchaseRequests", "projects"]);
const MANAGEMENT_CHILD_MODULES = new Set([
"workspace",
"people",
@@ -33,11 +34,8 @@ const MANAGEMENT_CHILD_MODULES = new Set([
"erpIntegrations",
]);
const BACKUP_NAVIGATION_MODULES = new Set([
"assets",
"weeklyReports",
"announcements",
"contractsRegistry",
"purchaseRequests",
"travelRequests",
"budgets",
"inventoryChecks",
@@ -48,20 +46,20 @@ const NAVIGATION_SECTION_ORDER = Object.freeze({
"portal",
"workflowTasks",
"reimbursements",
"purchaseRequests",
"contractsRegistry",
"projects",
"assets",
"paymentBatches",
"apOperations",
"invoicePool",
"projects",
"team",
"leaveRequests",
],
admin: ["systemSettings"],
backup: [
"assets",
"weeklyReports",
"announcements",
"purchaseRequests",
"contractsRegistry",
"budgets",
"attendance",
"travelRequests",
@@ -80,7 +78,7 @@ const NAVIGATION_REGISTRY = Object.freeze({
weeklyReports: { key: "weeklyReports", label: "周报", icon: "article", href: "/weekly-reports", anyOf: [], featureFlagKey: FEATURE_FLAG_KEYS.weeklyReport },
todos: { key: "todos", label: "待办", icon: "check_circle", href: "/todos", anyOf: [], featureFlagKey: FEATURE_FLAG_KEYS.todoBoard },
announcements: { key: "announcements", label: "公告", icon: "campaign", href: "/announcements", anyOf: [], featureFlagKey: FEATURE_FLAG_KEYS.announcements },
projects: { key: "projects", label: "项目", icon: "workspaces", href: "/projects", anyOf: ["project.view_all", "project.manage"], featureFlagKey: FEATURE_FLAG_KEYS.projectDomain },
projects: { key: "projects", label: "项目", icon: "workspaces", href: "/projects", anyOf: ["project.view_own", "project.view_all", "project.manage"], featureFlagKey: FEATURE_FLAG_KEYS.projectDomain },
workspace: { key: "workspace", label: "工作区设置", icon: "tune", href: "/system/workspace", anyOf: ["system.settings"] },
people: { key: "people", label: "人员管理", icon: "group", href: "/people", anyOf: ["system.users", "report.dashboard.view"], featureFlagKey: FEATURE_FLAG_KEYS.employeeLifecycle },
@@ -116,7 +114,7 @@ const DEFAULT_MODULE_VISIBILITY = Object.freeze({
leaveRequests: "main",
attendance: "hidden",
reimbursements: "main",
assets: "admin",
assets: "main",
weeklyReports: "admin",
todos: "hidden",
announcements: "admin",
@@ -125,7 +123,7 @@ const DEFAULT_MODULE_VISIBILITY = Object.freeze({
workspace: "admin",
people: "admin",
organization: "admin",
contractsRegistry: "admin",
contractsRegistry: "main",
workflowDefinitions: "admin",
systemSettings: "admin",
featureFlags: "admin",
@@ -138,7 +136,7 @@ const DEFAULT_MODULE_VISIBILITY = Object.freeze({
notificationChannels: "admin",
workflowTasks: "admin",
dashboard: "hidden",
purchaseRequests: "admin",
purchaseRequests: "main",
travelRequests: "admin",
budgets: "admin",
paymentBatches: "admin",
@@ -282,6 +280,10 @@ function resolveNavigationSection({ moduleKey, placement, financeNavigation }) {
return financeNavigation ? "main" : null;
}
if (DAY_TO_DAY_BUSINESS_MODULES.has(moduleKey)) {
return "main";
}
if (BACKUP_NAVIGATION_MODULES.has(moduleKey)) {
return "backup";
}