From 6f4e8c0933f3d6c2f4ba170fc11710ff6e48562b Mon Sep 17 00:00:00 2001 From: WeiCHEN Date: Fri, 11 Sep 2026 13:00:34 +0800 Subject: [PATCH] feat(web): align project templates with official reference skeletons Replace ad-hoc markdown stubs with reference-system template baselines, free-text device type input, and add template quality regression tests. Co-authored-by: Cursor --- .../components/project/CreateProjectModal.tsx | 79 +-- web/src/engine/templateFactory.ts | 573 +++++++++++++----- .../tests/project-template-quality.test.ts | 137 +++++ 3 files changed, 554 insertions(+), 235 deletions(-) create mode 100644 web/src/tests/project-template-quality.test.ts diff --git a/web/src/components/project/CreateProjectModal.tsx b/web/src/components/project/CreateProjectModal.tsx index 0e38f422..b5311f9f 100644 --- a/web/src/components/project/CreateProjectModal.tsx +++ b/web/src/components/project/CreateProjectModal.tsx @@ -22,20 +22,7 @@ interface CreateProjectModalProps { availableUsers: UserProfile[]; } -const DEVICE_TYPE_OPTIONS = [ - '数字化高频超声手术吸引系统', - '微创骨科手术机器人与导航定位系统', - '膝骨关节炎综合治疗仪', - '远程超声移动巡诊系统', - '一次性使用高频切凝手术电极', - '牙髓根管预备与热牙胶充填系统', - '自研增强现实 (AR) 手术导航系统', - '一次性使用双极低温等离子手术电极', - '医用高频低温等离子手术系统', - '气压弹道式体外冲击波治疗仪', - '肌骨关节超声影像智能辅助处理软件', - '其他创新医疗器械', -]; + export const CreateProjectModal: React.FC = ({ isOpen, @@ -45,8 +32,6 @@ export const CreateProjectModal: React.FC = ({ availableUsers, }) => { const [title, setTitle] = useState(''); - const [deviceType, setDeviceType] = useState(DEVICE_TYPE_OPTIONS[0]); - const [customDeviceType, setCustomDeviceType] = useState(''); const [description, setDescription] = useState(''); // 初始成员勾选列表(默认包含当前创建者) @@ -103,8 +88,7 @@ export const CreateProjectModal: React.FC = ({ return; } - const finalDeviceType = - deviceType === '其他创新医疗器械' ? customDeviceType.trim() || '通用医疗器械' : deviceType; + const finalDeviceType = '通用医疗器械'; const initialMembers: Array<{ userId: number; @@ -287,64 +271,7 @@ export const CreateProjectModal: React.FC = ({ /> - {/* 2. 器械类型 */} -
- - - {deviceType === '其他创新医疗器械' && ( - setCustomDeviceType(e.target.value)} - style={{ - width: '100%', - height: '38px', - padding: '0 12px', - borderRadius: '8px', - border: '1px solid var(--border, #cbd5e1)', - background: 'var(--bg-subtle, #f8fafc)', - fontSize: '13px', - outline: 'none', - boxSizing: 'border-box', - }} - /> - )} -
- - {/* 3. 临床概述 */} + {/* 2. 临床概述 */}