Files
xh-medical-sign-web/clinical-web/src/utils/mock-flags.ts
T

60 lines
3.0 KiB
TypeScript

/**
* 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),
}