feat(P25-1/P25-5/P26-1/P26-3/P24-1/P29-4): 落地内部OA够用版后端与试运行能力

关联 Issue: P25-1, P25-2, P25-3, P25-4, P25-5, P26-1, P26-3, P24-1, P24-2, P29-1, P29-2, P29-3, P29-4
这个提交包含在:
2026-03-21 18:03:20 +08:00
父节点 9b7cd818f7
当前提交 e39e41287e
共修改 45 个文件,包含 4571 行新增和 328 行删除
+35
查看文件
@@ -3,6 +3,13 @@ const FEATURE_FLAG_KEYS = {
erpSync: "erp_sync",
invoiceVerification: "invoice_verification",
leaveHolidayCalendar: "leave_holiday_calendar",
budgetPrecheck: "budget_precheck_v1",
paymentBatch: "payment_batch_v1",
portalHome: "portal_home_v1",
globalSearch: "global_search_v1",
announcements: "announcements_v1",
workflowDefinitionAdmin: "workflow_definition_admin_v1",
cutoverConsole: "cutover_console_v1",
};
const FEATURE_FLAG_KEY_LIST = Object.freeze(Object.values(FEATURE_FLAG_KEYS));
@@ -72,6 +79,34 @@ function resolveEnvGate(config, flagKey) {
return Boolean(config.leaveHolidayCalendarEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.budgetPrecheck) {
return Boolean(config.budgetPrecheckEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.paymentBatch) {
return Boolean(config.paymentBatchEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.portalHome) {
return Boolean(config.portalHomeEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.globalSearch) {
return Boolean(config.globalSearchEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.announcements) {
return Boolean(config.announcementsEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.workflowDefinitionAdmin) {
return Boolean(config.workflowDefinitionAdminEnabled);
}
if (flagKey === FEATURE_FLAG_KEYS.cutoverConsole) {
return Boolean(config.cutoverConsoleEnabled);
}
return false;
}