import request from '@/utils/request' export interface PrescriptionAiVisibilityConfig { role_ids: number[] admin_ids: number[] } export interface PrescriptionAiVisibilityOptions { roles: { id: number; name: string }[] admins: { id: number; name: string; account: string }[] } export interface PrescriptionAiCapabilities { agreement_visible: boolean can_manage_visibility: boolean } // A failed or malformed read must never become an empty policy that can be saved. function readVisibilityConfig(value: unknown): PrescriptionAiVisibilityConfig { const config = value as Partial | null const validIds = (ids: unknown): ids is number[] => Array.isArray(ids) && ids.every((id) => Number.isSafeInteger(id) && id > 0) if (!config || !validIds(config.role_ids) || !validIds(config.admin_ids)) { throw new Error('可见范围配置响应格式不正确') } return { role_ids: [...config.role_ids], admin_ids: [...config.admin_ids] } } export async function getPrescriptionAiVisibilityConfig() { const data = await request.get({ url: '/tcm.prescriptionAi/getVisibilityConfig' }) return readVisibilityConfig(data) } export async function setPrescriptionAiVisibilityConfig(params: PrescriptionAiVisibilityConfig) { const data = await request.post({ url: '/tcm.prescriptionAi/setVisibilityConfig', params }) return readVisibilityConfig(data) } export function getPrescriptionAiVisibilityOptions() { return request.get({ url: '/tcm.prescriptionAi/visibilityOptions' }) as Promise } export function getPrescriptionAiCapabilities() { return request.get({ url: '/tcm.prescriptionAi/capabilities' }) as Promise }