/** * DC模块 - 模板服务 * * 功能: * - 管理预设提取模板(疾病类型 + 报告类型) * - 提供模板列表查询 * - Seed初始数据(3个预设模板) * * 平台能力复用: * - ✅ prisma: 数据库操作 * - ✅ logger: 日志记录 */ import { prisma } from '../../../../config/database.js'; import { logger } from '../../../../common/logging/index.js'; export interface TemplateField { name: string; desc: string; width?: string; // TailwindCSS class } export interface Template { id: string; diseaseType: string; reportType: string; displayName: string; fields: TemplateField[]; promptTemplate: string; } export class TemplateService { /** * 获取所有模板 */ async getAllTemplates(): Promise { try { logger.info('[Template] Fetching all templates'); const templates = await prisma.dCTemplate.findMany({ orderBy: [{ diseaseType: 'asc' }, { reportType: 'asc' }] }); logger.info('[Template] Templates fetched', { count: templates.length }); return templates.map(t => ({ id: t.id, diseaseType: t.diseaseType, reportType: t.reportType, displayName: t.displayName, fields: t.fields as TemplateField[], promptTemplate: t.promptTemplate })); } catch (error) { logger.error('[Template] Failed to fetch templates', { error }); throw error; } } /** * 根据疾病和报告类型获取模板 */ async getTemplate(diseaseType: string, reportType: string): Promise