feat(config): 按业务模块拆分 Mock 开关
用 VITE_MOCK_* 系列环境变量替换全局 VITE_USE_MOCK,各模块独立控制演示数据 启用,并新增 src/utils/mock-flags.ts 统一解析缺省值。文档库关闭演示库时 如实提示接口待接入,避免静默沿用本地数据或覆盖已保存内容。
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
/**
|
||||
* 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),
|
||||
/** 文档库管理:文书库与文书模板接口 */
|
||||
documents: resolveMockFlag(import.meta.env.VITE_MOCK_DOCUMENTS, true),
|
||||
/** 文档权限:模板权限配置与权限矩阵 */
|
||||
documentPermissions: resolveMockFlag(import.meta.env.VITE_MOCK_DOCUMENT_PERMISSIONS, false),
|
||||
/** 报表分析 */
|
||||
reports: resolveMockFlag(import.meta.env.VITE_MOCK_REPORTS, 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),
|
||||
}
|
||||
Reference in New Issue
Block a user