/** * Mock 开关:按业务模块(对齐侧边栏菜单)独立控制。 * * 背景:早期只有一个全局 VITE_USE_MOCK,一开全开、一关全关,而且各 API 文件的 * 默认值约定还不一致(有的 `!== 'false'` 默认开,有的 `=== 'true'` 默认关)。 * 文档库与签署工作台还依赖演示数据,其余模块已经接了真实接口,混在一起就只能整体 * 切换,联调时很容易把真实接口的页面也带进 Mock 分支。 * * 现在的约定: * - 每个模块读自己的环境变量,缺省值就是「这个模块默认要不要用演示数据」; * - 环境变量没配、或值不是 true / false 时一律用缺省值,联调环境不会被本地 .env 残留影响; * - 开关粒度对齐菜单,不按 API 文件拆。同一个菜单下的多个 API 模块共用一个开关, * 例如签署工作台同时覆盖签署任务与签署产物。 */ /** 环境变量未配置(或值不是 true / false)时按缺省值处理 */ function resolveMockFlag(raw: string | undefined, fallback: boolean): boolean { if (raw === 'true') { return true } if (raw === 'false') { return false } return fallback } export const mockFlags = { /** 首页:工作台概览、待办与趋势 */ workbenchHome: resolveMockFlag(import.meta.env.VITE_MOCK_WORKBENCH_HOME, false), /** 签署工作台:签署任务和签署产物 */ signing: resolveMockFlag(import.meta.env.VITE_MOCK_SIGNING, true), /** * 签署记录查询:历史签署记录检索。 * 缺省开着:后端还没有「按条件检索历史签署记录」的接口(签署记录查询是独立菜单, * 不与签署工作台共用一个开关,否则关掉工作台演示数据会把记录页一起带进空态)。 */ signRecords: resolveMockFlag(import.meta.env.VITE_MOCK_SIGN_RECORDS, true), /** 文档库管理:文书库与文书模板接口 */ documents: resolveMockFlag(import.meta.env.VITE_MOCK_DOCUMENTS, false), /** 文档权限:模板权限配置与权限矩阵 */ documentPermissions: resolveMockFlag(import.meta.env.VITE_MOCK_DOCUMENT_PERMISSIONS, false), /** 审计日志:已有只读后端查询接口,直接读取数据库记录 */ audit: resolveMockFlag(import.meta.env.VITE_MOCK_AUDIT, false), /** 用户与权限:用户、角色、接口权限目录 */ users: resolveMockFlag(import.meta.env.VITE_MOCK_USERS, false), /** * 组织基础数据:院区与科室。 * 不单独对应某个菜单,而是被首页、签署工作台、用户与权限和应用级院区选择器共用, * 所以独立成一个开关;开着会把演示院区的 UUID 一并发给真实接口。 */ organization: resolveMockFlag(import.meta.env.VITE_MOCK_ORGANIZATION, false), /** * 系统设置。注意:系统设置页面目前直接用页面内的演示数据渲染,还没有消费 * api/management/settings.ts,所以这个开关暂时只作用于该 API 模块。 */ settings: resolveMockFlag(import.meta.env.VITE_MOCK_SETTINGS, false), }