@neobiotechlabs/neobiotech-dev-agent 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/.claude-plugin/marketplace.json +22 -0
  2. package/.claude-plugin/plugin.json +58 -0
  3. package/.mcp.json +14 -0
  4. package/README.md +442 -0
  5. package/dist/__tests__/adf.test.d.ts +1 -0
  6. package/dist/__tests__/adf.test.js +68 -0
  7. package/dist/__tests__/adf.test.js.map +1 -0
  8. package/dist/__tests__/annex-ii-template.test.d.ts +1 -0
  9. package/dist/__tests__/annex-ii-template.test.js +39 -0
  10. package/dist/__tests__/annex-ii-template.test.js.map +1 -0
  11. package/dist/__tests__/doc-render.test.d.ts +1 -0
  12. package/dist/__tests__/doc-render.test.js +93 -0
  13. package/dist/__tests__/doc-render.test.js.map +1 -0
  14. package/dist/__tests__/help.test.d.ts +1 -0
  15. package/dist/__tests__/help.test.js +31 -0
  16. package/dist/__tests__/help.test.js.map +1 -0
  17. package/dist/__tests__/jira-fields.test.d.ts +1 -0
  18. package/dist/__tests__/jira-fields.test.js +81 -0
  19. package/dist/__tests__/jira-fields.test.js.map +1 -0
  20. package/dist/__tests__/plugin-manifest.test.d.ts +1 -0
  21. package/dist/__tests__/plugin-manifest.test.js +91 -0
  22. package/dist/__tests__/plugin-manifest.test.js.map +1 -0
  23. package/dist/__tests__/setup.test.d.ts +1 -0
  24. package/dist/__tests__/setup.test.js +7 -0
  25. package/dist/__tests__/setup.test.js.map +1 -0
  26. package/dist/__tests__/sync-version.test.d.ts +1 -0
  27. package/dist/__tests__/sync-version.test.js +37 -0
  28. package/dist/__tests__/sync-version.test.js.map +1 -0
  29. package/dist/clients/risk-client.d.ts +17 -0
  30. package/dist/clients/risk-client.js +54 -0
  31. package/dist/clients/risk-client.js.map +1 -0
  32. package/dist/clients/xray-client.d.ts +34 -0
  33. package/dist/clients/xray-client.js +127 -0
  34. package/dist/clients/xray-client.js.map +1 -0
  35. package/dist/config/project-config.d.ts +14 -0
  36. package/dist/config/project-config.js +45 -0
  37. package/dist/config/project-config.js.map +1 -0
  38. package/dist/confluence-client.d.ts +16 -0
  39. package/dist/confluence-client.js +97 -0
  40. package/dist/confluence-client.js.map +1 -0
  41. package/dist/index.d.ts +2 -0
  42. package/dist/index.js +60 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/jira-client.d.ts +35 -0
  45. package/dist/jira-client.js +119 -0
  46. package/dist/jira-client.js.map +1 -0
  47. package/dist/tools/annex-ii-template.d.ts +30 -0
  48. package/dist/tools/annex-ii-template.js +129 -0
  49. package/dist/tools/annex-ii-template.js.map +1 -0
  50. package/dist/tools/confluence.d.ts +2 -0
  51. package/dist/tools/confluence.js +54 -0
  52. package/dist/tools/confluence.js.map +1 -0
  53. package/dist/tools/cvss.d.ts +2 -0
  54. package/dist/tools/cvss.js +59 -0
  55. package/dist/tools/cvss.js.map +1 -0
  56. package/dist/tools/doc-render.d.ts +2 -0
  57. package/dist/tools/doc-render.js +96 -0
  58. package/dist/tools/doc-render.js.map +1 -0
  59. package/dist/tools/doc-validation.d.ts +2 -0
  60. package/dist/tools/doc-validation.js +221 -0
  61. package/dist/tools/doc-validation.js.map +1 -0
  62. package/dist/tools/help-data.d.ts +7 -0
  63. package/dist/tools/help-data.js +144 -0
  64. package/dist/tools/help-data.js.map +1 -0
  65. package/dist/tools/help.d.ts +2 -0
  66. package/dist/tools/help.js +39 -0
  67. package/dist/tools/help.js.map +1 -0
  68. package/dist/tools/iec.d.ts +2 -0
  69. package/dist/tools/iec.js +203 -0
  70. package/dist/tools/iec.js.map +1 -0
  71. package/dist/tools/init.d.ts +2 -0
  72. package/dist/tools/init.js +38 -0
  73. package/dist/tools/init.js.map +1 -0
  74. package/dist/tools/jira-crud.d.ts +2 -0
  75. package/dist/tools/jira-crud.js +142 -0
  76. package/dist/tools/jira-crud.js.map +1 -0
  77. package/dist/tools/risk.d.ts +2 -0
  78. package/dist/tools/risk.js +172 -0
  79. package/dist/tools/risk.js.map +1 -0
  80. package/dist/tools/traceability.d.ts +2 -0
  81. package/dist/tools/traceability.js +85 -0
  82. package/dist/tools/traceability.js.map +1 -0
  83. package/dist/tools/types.d.ts +13 -0
  84. package/dist/tools/types.js +2 -0
  85. package/dist/tools/types.js.map +1 -0
  86. package/dist/tools/usability.d.ts +2 -0
  87. package/dist/tools/usability.js +149 -0
  88. package/dist/tools/usability.js.map +1 -0
  89. package/dist/tools/xray.d.ts +2 -0
  90. package/dist/tools/xray.js +35 -0
  91. package/dist/tools/xray.js.map +1 -0
  92. package/dist/utils/adf.d.ts +27 -0
  93. package/dist/utils/adf.js +104 -0
  94. package/dist/utils/adf.js.map +1 -0
  95. package/dist/utils/cvss.d.ts +15 -0
  96. package/dist/utils/cvss.js +86 -0
  97. package/dist/utils/cvss.js.map +1 -0
  98. package/dist/utils/doc-render.d.ts +28 -0
  99. package/dist/utils/doc-render.js +50 -0
  100. package/dist/utils/doc-render.js.map +1 -0
  101. package/dist/utils/jira-fields.d.ts +38 -0
  102. package/dist/utils/jira-fields.js +53 -0
  103. package/dist/utils/jira-fields.js.map +1 -0
  104. package/dist/utils/sync-version.d.ts +2 -0
  105. package/dist/utils/sync-version.js +20 -0
  106. package/dist/utils/sync-version.js.map +1 -0
  107. package/package.json +49 -0
  108. package/skills/doc-render/SKILL.md +79 -0
  109. package/vendor/dev-docs-templates/templates/dev_docs/plan_template.md +104 -0
  110. package/vendor/dev-docs-templates/templates/dev_docs/prd_template.md +110 -0
  111. package/vendor/dev-docs-templates/templates/dev_docs/spec_template.md +81 -0
  112. package/vendor/dev-docs-templates/templates/dev_docs/tasks_template.md +122 -0
  113. package/vendor/dev-docs-templates/templates/mdr_docs/CA/checklist-clinical-evaluation.md +81 -0
  114. package/vendor/dev-docs-templates/templates/mdr_docs/CA/checklist-gspr-mdr.md +403 -0
  115. package/vendor/dev-docs-templates/templates/mdr_docs/CA/clinical-evaluation-report.md +492 -0
  116. package/vendor/dev-docs-templates/templates/mdr_docs/CA/instructions-for-use.md +132 -0
  117. package/vendor/dev-docs-templates/templates/mdr_docs/CA/literature-evaluation-table.md +15 -0
  118. package/vendor/dev-docs-templates/templates/mdr_docs/CA/mdr-declaration-of-conformity.md +75 -0
  119. package/vendor/dev-docs-templates/templates/mdr_docs/CA/post-market-clinical-follow-up-plan.md +162 -0
  120. package/vendor/dev-docs-templates/templates/mdr_docs/CA/post-market-surveillance-plan.md +175 -0
  121. package/vendor/dev-docs-templates/templates/mdr_docs/CA/risk-management-cybersecurity-checklist.md +67 -0
  122. package/vendor/dev-docs-templates/templates/mdr_docs/CA/risk-management-report.md +111 -0
  123. package/vendor/dev-docs-templates/templates/mdr_docs/CA/usability-evaluation-report.md +70 -0
  124. package/vendor/dev-docs-templates/templates/mdr_docs/EA/clinical-evaluation-plan.md +154 -0
  125. package/vendor/dev-docs-templates/templates/mdr_docs/EA/list-of-hazard-related-use-scenarios.md +34 -0
  126. package/vendor/dev-docs-templates/templates/mdr_docs/EA/risk-table-fmea.md +155 -0
  127. package/vendor/dev-docs-templates/templates/mdr_docs/EA/software-architecture-description.md +307 -0
  128. package/vendor/dev-docs-templates/templates/mdr_docs/EA/software-requirements-list.md +156 -0
  129. package/vendor/dev-docs-templates/templates/mdr_docs/EA/soup-list.md +82 -0
  130. package/vendor/dev-docs-templates/templates/mdr_docs/EA/usability-evaluation-plan.md +103 -0
  131. package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/bug-fixes-documentation-list.md +35 -0
  132. package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/change-evaluation-list.md +100 -0
  133. package/vendor/dev-docs-templates/templates/mdr_docs/ER/global/list-of-known-anomalies.md +29 -0
  134. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/algorithm-validation-report.md +170 -0
  135. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/checklist-software-release.md +52 -0
  136. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/checklist-software-requirements-review.md +50 -0
  137. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-architecture-checklist.md +41 -0
  138. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-detailed-design.md +321 -0
  139. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/software-system-test-plan.md +155 -0
  140. package/vendor/dev-docs-templates/templates/mdr_docs/ER/sprint/usability-evaluation-protocol.md +63 -0
  141. package/vendor/dev-docs-templates/templates/mdr_docs/PA/intended-use.md +116 -0
  142. package/vendor/dev-docs-templates/templates/mdr_docs/PA/mdr-classification-document.md +114 -0
  143. package/vendor/dev-docs-templates/templates/mdr_docs/PA/risk-management-plan.md +198 -0
  144. package/vendor/dev-docs-templates/templates/mdr_docs/PA/software-development-maintenance-plan.md +225 -0
  145. package/vendor/dev-docs-templates/templates/mdr_docs/PA/system-requirements-spec.md +182 -0
  146. package/vendor/dev-docs-templates/templates/mdr_docs/global/information_security/information-security-controls.md +966 -0
  147. package/vendor/dev-docs-templates/templates/mdr_docs/global/information_security/information-security-policy-and-scope.md +99 -0
  148. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/quality-manual-policy-objectives.md +187 -0
  149. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-capa.md +112 -0
  150. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-change-management.md +128 -0
  151. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-clinical-evaluation.md +102 -0
  152. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-feedback-management.md +140 -0
  153. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-integrated-software-development.md +361 -0
  154. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-post-market-surveillance.md +159 -0
  155. package/vendor/dev-docs-templates/templates/mdr_docs/global/qms/sop-software-problem-resolution.md +99 -0
@@ -0,0 +1,321 @@
1
+ # Software Detailed Design (SDD): {PRODUCT_NAME}
2
+
3
+ <!-- AI AGENT 작성 지침
4
+ 이 문서는 IEC 62304 Cl.5.4 기반 SW 상세 설계서 (Class B/C 필수)입니다.
5
+ 작성 전 반드시 다음 문서를 참조하세요:
6
+ - SAD(software-architecture-description.md): 아키텍처 및 아이템 구조 확인
7
+ - SW 요구사항 명세서(software-requirements-list.md): 각 요구사항 ID 확인
8
+ - FMEA(risk-table-fmea.md): 위험 통제 관련 설계 반영 여부 확인
9
+
10
+ 작성 지침:
11
+ 1. 유닛(Unit)별로 섹션 3.x를 반복 작성하세요
12
+ 2. Class C의 경우 알고리즘, 분기 조건, 오류 처리를 상세히 기술해야 합니다
13
+ 3. Class B의 경우 인터페이스 수준까지 기술합니다
14
+ 4. 모든 유닛은 SRS 요구사항 ID와 추적 연결을 명시해야 합니다 (Cl.5.4.2)
15
+ 5. SOUP 연동 유닛의 경우 격리 전략과 오류 처리를 반드시 기술하세요
16
+
17
+ PlantUML 다이어그램 작성 지침:
18
+ - 클래스 다이어그램: 유닛 간 의존성 표현 -> 섹션 2.2에 작성
19
+ - 활동 다이어그램: 유닛 처리 흐름 표현 -> 각 유닛 섹션(3.x)에 작성
20
+ - 시퀀스 다이어그램: 유닛 간 상호작용 표현 -> 섹션 4.1에 작성
21
+ - 상태 다이어그램: 상태 전이가 있는 유닛에 사용
22
+
23
+ PlantUML 블록 형식: ```plantuml ... ```
24
+ -->
25
+
26
+ **문서 번호**: {DOC_ID}
27
+ **버전**: {VERSION} | **상태**: Draft
28
+ **작성일**: {DATE} | **작성자**: {AUTHOR}
29
+ **검토자**: {REVIEWER} | **승인자**: {APPROVER}
30
+
31
+ ---
32
+
33
+ ## 표준 요건 매핑 (Standard Requirements Mapping)
34
+
35
+ | IEC 62304 조항 | 제목 | 해당 섹션 | Class |
36
+ | -------------- | ------------------------- | ------------------ | ----- |
37
+ | Cl. 5.4.1 | SW 유닛 구현 및 검증 계획 | 1. 설계 개요 | B, C |
38
+ | Cl. 5.4.2 | SW 유닛 검증 | 5. 유닛 검증 계획 | B, C |
39
+ | Cl. 5.4.3 | SW 유닛 추가 상세 설계 | 3. 유닛 상세 설계 | C |
40
+ | Cl. 5.3.2 | 아키텍처 인터페이스 | 4. 인터페이스 설계 | B, C |
41
+ | Cl. 5.5.2 | 유닛 구현 검증 | 5. 유닛 검증 계획 | B, C |
42
+ | ISO 14971 Cl.6 | 위험 통제 조치 | 6. 위험 관련 설계 | - |
43
+
44
+ ---
45
+
46
+ ## 1. 설계 개요 (Design Overview)
47
+
48
+ ### 1.1 목적 및 범위
49
+
50
+ 이 문서는 {PRODUCT_NAME}의 {SW_ITEM_NAME} 아이템을 구성하는 SW 유닛의 상세 설계를 기술한다.
51
+
52
+ - **대상 SW 아이템**: {SW_ITEM_NAME} ({ITEM_ID})
53
+ - **IEC 62304 SW 안전 등급**: Class {IEC62304_CLASS}
54
+ - **참조 SAD 문서**: {SAD_DOC_ID}
55
+
56
+ ### 1.2 포함 유닛 목록
57
+
58
+ <!-- AI AGENT: SAD에서 정의된 아이템 내 유닛 목록을 가져와 작성하세요 -->
59
+
60
+ | 유닛 ID | 유닛 명 | 안전 등급 | 주요 기능 |
61
+ | -------- | ------------- | ------------- | ----------------- |
62
+ | UNIT-001 | {UNIT_1_NAME} | Class {CLASS} | {UNIT_1_FUNCTION} |
63
+ | UNIT-002 | {UNIT_2_NAME} | Class {CLASS} | {UNIT_2_FUNCTION} |
64
+
65
+ ---
66
+
67
+ ## 2. 유닛 구조 (Unit Structure)
68
+
69
+ ### 2.1 유닛 분해 구조
70
+
71
+ ```
72
+ {SW_ITEM_NAME} ({ITEM_ID})
73
+ |-- {MODULE_1_NAME}
74
+ | |-- UNIT-001: {UNIT_1_NAME}
75
+ | |-- UNIT-002: {UNIT_2_NAME}
76
+ |-- {MODULE_2_NAME}
77
+ |-- UNIT-003: {UNIT_3_NAME}
78
+ ```
79
+
80
+ ### 2.2 유닛 의존성 다이어그램
81
+
82
+ <!-- AI AGENT: 유닛 간 의존 관계를 클래스 다이어그램 형태로 표현하세요
83
+ 유닛이 다른 유닛의 함수를 호출하거나 인터페이스를 사용하는 경우 화살표로 표현합니다
84
+
85
+ 지침:
86
+ - 각 유닛을 class로 표현
87
+ - 의존 방향을 --> 또는 ..> 으로 표현
88
+ - SOUP 의존성은 <<external>> 스테레오타입 사용
89
+
90
+ 예시: -->
91
+
92
+ ```plantuml
93
+ @startuml SDD_Unit_Dependencies
94
+ skinparam classStyle rectangle
95
+
96
+ class "UNIT-001\nDataInputHandler" as U1 {
97
+ + validate(input: InputData): bool
98
+ + preprocess(data: InputData): ProcessedData
99
+ }
100
+
101
+ class "UNIT-002\nInferenceEngine" as U2 {
102
+ + predict(data: ProcessedData): Result
103
+ - loadModel(): void
104
+ }
105
+
106
+ class "UNIT-003\nResultFormatter" as U3 {
107
+ + format(result: Result): OutputDTO
108
+ + applyThreshold(result: Result): RiskLevel
109
+ }
110
+
111
+ class "PyTorch v2.0\n(SOUP-002)" as SOUP <<external>>
112
+
113
+ U1 --> U2 : passes ProcessedData
114
+ U2 --> U3 : passes Result
115
+ U2 ..> SOUP : uses (isolated via wrapper)
116
+
117
+ note bottom of U2
118
+ Class C: 오분류 시 환자 위해 가능성
119
+ SOUP 격리: InferenceWrapper 래퍼 클래스 사용
120
+ end note
121
+ @enduml
122
+ ```
123
+
124
+ ---
125
+
126
+ ## 3. 유닛 상세 설계 (Unit Detailed Design)
127
+
128
+ > IEC 62304 Cl.5.4.3 (Class C 필수): 알고리즘, 데이터 구조, 처리 조건 상세 기술
129
+
130
+ ---
131
+
132
+ ### 3.1 {UNIT_1_NAME} (UNIT-001)
133
+
134
+ #### 3.1.1 목적 (Purpose)
135
+
136
+ <!-- AI AGENT: 이 유닛이 수행하는 단일 책임(Single Responsibility)을 한 문장으로 기술하세요 -->
137
+
138
+ {UNIT_1_PURPOSE}
139
+
140
+ #### 3.1.2 알고리즘 / 처리 흐름 (Algorithm / Processing Flow)
141
+
142
+ <!-- AI AGENT: 처리 로직을 활동 다이어그램으로 표현하고, 아래에 설명을 추가하세요
143
+ Class C: 분기 조건(if/else, try/except)을 모두 명시해야 합니다
144
+
145
+ 예시: -->
146
+
147
+ ```plantuml
148
+ @startuml UNIT001_Activity
149
+ start
150
+ :입력 데이터 수신;
151
+ if (입력 유효성 검사?) then (통과)
152
+ :데이터 전처리\n(정규화, 포맷 변환);
153
+ :처리 결과 반환;
154
+ else (실패)
155
+ :유효성 오류 로깅;
156
+ :ValidationError 발생;
157
+ stop
158
+ endif
159
+ :정상 반환;
160
+ stop
161
+ @enduml
162
+ ```
163
+
164
+ **처리 단계 설명:**
165
+
166
+ 1. **입력 검증**: {INPUT_VALIDATION_DESCRIPTION}
167
+ 2. **전처리**: {PREPROCESSING_DESCRIPTION}
168
+ 3. **핵심 처리**: {CORE_PROCESSING_DESCRIPTION}
169
+ 4. **출력**: {OUTPUT_DESCRIPTION}
170
+
171
+ #### 3.1.3 데이터 구조 (Data Structures)
172
+
173
+ <!-- AI AGENT: 유닛이 처리하는 주요 입출력 데이터 구조를 정의하세요
174
+ 범위 제한이 있는 필드는 반드시 허용 범위를 명시하세요 (안전 관련 값의 경우 필수) -->
175
+
176
+ **입력 (Input)**
177
+
178
+ | 필드명 | 타입 | 허용 범위 / 값 | 필수 여부 | 설명 |
179
+ | --------- | ------ | -------------- | --------- | ------ |
180
+ | {FIELD_1} | {TYPE} | {RANGE} | 필수 | {DESC} |
181
+ | {FIELD_2} | {TYPE} | {RANGE} | 선택 | {DESC} |
182
+
183
+ **출력 (Output)**
184
+
185
+ | 필드명 | 타입 | 범위 | 설명 |
186
+ | ---------------- | ------ | ------- | ------ |
187
+ | {OUTPUT_FIELD_1} | {TYPE} | {RANGE} | {DESC} |
188
+
189
+ #### 3.1.4 오류 처리 (Error Handling)
190
+
191
+ <!-- AI AGENT: 가능한 모든 오류 조건과 처리 방법을 기술하세요
192
+ IEC 62304 Cl.5.4.3: 안전 관련 오류는 반드시 Fail-Safe 동작을 정의해야 합니다 -->
193
+
194
+ | 오류 조건 | 오류 코드 | 처리 동작 | Fail-Safe 여부 | 로그 레벨 |
195
+ | ----------------- | --------- | ------------------------ | -------------- | ------------ |
196
+ | {ERROR_1} | ERR-{N} | {ACTION} | Yes / No | ERROR / WARN |
197
+ | 입력 값 범위 초과 | ERR-001 | 처리 중단 후 기본값 반환 | Yes | ERROR |
198
+
199
+ #### 3.1.5 요구사항 추적 (Requirements Traceability)
200
+
201
+ | SRS 요구사항 ID | 요구사항 설명 | 구현 방법 |
202
+ | --------------- | ------------- | ------------- |
203
+ | {SRS_ID_1} | {REQ_DESC} | {IMPL_METHOD} |
204
+
205
+ ---
206
+
207
+ ### 3.2 {UNIT_2_NAME} (UNIT-002)
208
+
209
+ <!-- AI AGENT: 3.1 양식을 반복하여 각 유닛을 기술하세요 -->
210
+
211
+ ---
212
+
213
+ ## 4. 인터페이스 설계 (Interface Design)
214
+
215
+ > IEC 62304 Cl.5.3.2 아키텍처 인터페이스, Cl.5.4.3 상세 인터페이스
216
+
217
+ ### 4.1 유닛 간 인터페이스 시퀀스
218
+
219
+ <!-- AI AGENT: 유닛 간 주요 상호작용을 시퀀스 다이어그램으로 표현하세요
220
+ 요청-응답 사이의 데이터 타입과 오류 분기를 포함하세요
221
+
222
+ 예시: -->
223
+
224
+ ```plantuml
225
+ @startuml SDD_Unit_Sequence
226
+ participant "Caller\n(ITEM-001)" as CALLER
227
+ participant "UNIT-001\nDataInputHandler" as U1
228
+ participant "UNIT-002\nInferenceEngine" as U2
229
+ participant "UNIT-003\nResultFormatter" as U3
230
+
231
+ CALLER -> U1 : process(rawInput: RawInput)
232
+ activate U1
233
+ U1 -> U1 : validate(rawInput)
234
+ alt 유효하지 않은 입력
235
+ U1 --> CALLER : raise ValidationError(ERR-001)
236
+ else 유효한 입력
237
+ U1 -> U1 : preprocess(rawInput)
238
+ U1 -> U2 : predict(processedData: ProcessedData)
239
+ activate U2
240
+ U2 -> U2 : loadModel()
241
+ U2 -> U2 : inference(processedData)
242
+ U2 --> U1 : Result
243
+ deactivate U2
244
+ U1 -> U3 : format(result: Result)
245
+ activate U3
246
+ U3 -> U3 : applyThreshold(result)
247
+ U3 --> U1 : OutputDTO
248
+ deactivate U3
249
+ U1 --> CALLER : OutputDTO
250
+ end
251
+ deactivate U1
252
+ @enduml
253
+ ```
254
+
255
+ ### 4.2 SOUP 연동 인터페이스
256
+
257
+ > IEC 62304 Cl.5.3.5 (SOUP 격리)
258
+
259
+ | SOUP ID | SOUP 명 | 연동 방식 | 래퍼 클래스 | 고장 시 동작 |
260
+ | -------- | ----------- | ---------------- | --------------- | ------------------ |
261
+ | SOUP-001 | {SOUP_NAME} | {INTERFACE_TYPE} | {WRAPPER_CLASS} | {FAILURE_BEHAVIOR} |
262
+
263
+ ---
264
+
265
+ ## 5. 유닛 검증 계획 (Unit Verification Plan)
266
+
267
+ > IEC 62304 Cl.5.4.2, Cl.5.5.2 (유닛 검증 방법 및 합격 기준)
268
+
269
+ ### 5.1 검증 방법
270
+
271
+ | 방법 | 설명 | 적용 유닛 | 담당자 |
272
+ | -------------- | ----------------------------- | ------------------ | ---------- |
273
+ | 코드 리뷰 | 정적 분석 및 피어 리뷰 | 전체 | {REVIEWER} |
274
+ | 유닛 테스트 | pytest / unittest 기반 자동화 | UNIT-001, UNIT-002 | {DEV} |
275
+ | 정적 분석 도구 | {STATIC_ANALYSIS_TOOL} | 전체 | CI/CD |
276
+
277
+ ### 5.2 합격 기준 (Acceptance Criteria)
278
+
279
+ <!-- AI AGENT: SW 안전 등급에 따른 커버리지 기준을 적용하세요
280
+ Class A: 요구사항 기반 테스트 / Class B: Statement 커버리지 / Class C: Branch 커버리지 -->
281
+
282
+ | 유닛 ID | 커버리지 기준 | 최소 기준값 | 허용 정적 분석 경고 |
283
+ | ------------------ | ------------------ | ----------- | -------------------- |
284
+ | UNIT-001 (Class B) | Statement Coverage | >= 80% | 0건 (정당화 시 허용) |
285
+ | UNIT-002 (Class C) | Branch Coverage | 100% | 0건 |
286
+
287
+ ---
288
+
289
+ ## 6. 위험 관련 설계 고려사항 (Risk-Related Design Considerations)
290
+
291
+ > ISO 14971 Cl.6 (위험 통제 조치), IEC 62304 Cl.7.1
292
+
293
+ <!-- AI AGENT: FMEA(risk-table-fmea.md)의 Risk Control Measures를
294
+ 이 섹션에서 어떻게 구현하는지 연결하세요 -->
295
+
296
+ | 위험 ID | 위험 설명 | 설계 통제 방법 | 구현 유닛 | 검증 방법 |
297
+ | ----------- | ----------- | ---------------- | --------- | -------------- |
298
+ | {RISK_ID_1} | {RISK_DESC} | {DESIGN_CONTROL} | UNIT-{N} | {VERIFICATION} |
299
+
300
+ ---
301
+
302
+ ## 7. 추적성 매트릭스 요약 (Traceability Summary)
303
+
304
+ > IEC 62304 Cl.5.1.1(c), Cl.5.7.4
305
+
306
+ | SRS 요구사항 ID | 유닛 ID | 유닛 테스트 ID | 위험 ID |
307
+ | --------------- | -------- | -------------- | --------- |
308
+ | {SRS_ID_1} | UNIT-001 | TEST-{N} | {RISK_ID} |
309
+ | {SRS_ID_2} | UNIT-002 | TEST-{N} | - |
310
+
311
+ ---
312
+
313
+ ## 8. 변경 이력 (Revision History)
314
+
315
+ | 버전 | 날짜 | 작성자 | 변경 내용 |
316
+ | ---- | ------ | -------- | --------- |
317
+ | 0.1 | {DATE} | {AUTHOR} | 초안 작성 |
318
+
319
+ ---
320
+
321
+ > Template based on IEC 62304:2006/AMD1:2015 Cl.5.4, ISO 14971:2019
@@ -0,0 +1,155 @@
1
+ # Software System Test Plan & Protocol: {PRODUCT_NAME} v{VERSION}
2
+
3
+ <!-- AI AGENT 작성 지침
4
+ 이 문서는 IEC 62304 Cl.5.7 기반 시스템 테스트 계획서입니다.
5
+ Sprint마다 테스트 케이스를 추가/업데이트하세요.
6
+
7
+ 작성 전 반드시 다음 문서를 참조하세요:
8
+ - SW 요구사항 명세서(software-requirements-list.md): 모든 SRS ID를 테스트 케이스로 커버해야 함
9
+ - FMEA(risk-table-fmea.md): 위험 통제 조치가 구현되었는지 검증하는 테스트 포함
10
+ - 사이버보안 체크리스트(risk-management-cybersecurity-checklist.md): 보안 테스트 항목 반영
11
+
12
+ 작성 지침:
13
+ 1. 모든 SRS 요구사항(SRS-F-xxx, SRS-P-xxx 등)에 최소 1개의 테스트 케이스가 있어야 합니다
14
+ 2. 테스트 ID 체계: TST-SYS-{N:3d} (예: TST-SYS-001)
15
+ 3. 테스트 결과 컬럼은 실제 테스트 실행 후 채워주세요 (계획서는 Expected까지만)
16
+ 4. 위험 통제 조치에 대한 테스트는 "위험 통제 검증?" 열을 Yes로 표시하세요
17
+ 5. Pass/Fail 외에 Blocked(사전 조건 미충족), N/A(해당 없음)도 사용 가능합니다
18
+
19
+ 테스트 카테고리:
20
+ - Functional: SRS-F-xxx 기능 요구사항 검증
21
+ - Performance: SRS-P-xxx 성능 요구사항 검증
22
+ - Security: SRS-S-xxx 보안 요구사항 검증
23
+ - Regression: 이전 버전에서 동작하던 기능이 유지되는지 확인
24
+ - Boundary: 경계값 조건 검증 (허용 범위 초과/미만 입력)
25
+
26
+ 테스트 환경 (필수 기재):
27
+ - 테스트 환경은 실제 사용 환경과 유사해야 합니다 (IEC 62304 Cl.5.7.2)
28
+ - 사용된 SOUP 버전을 명시하세요 (SOUP 리스트와 일치 확인)
29
+ -->
30
+
31
+ **문서 번호**: {DOC_ID}
32
+ **버전**: {VERSION} | **상태**: Draft (계획) / Final (프로토콜)
33
+ **Sprint**: {SPRINT_NUMBER} | **작성일**: {DATE}
34
+ **테스터**: {TESTER} | **검토자**: {REVIEWER}
35
+
36
+ ---
37
+
38
+ ## 표준 요건 매핑
39
+
40
+ | 표준 조항 | 제목 | 해당 섹션 |
41
+ | ------------------ | ----------------------------- | ------------------ |
42
+ | IEC 62304 Cl.5.7.1 | 통합 시스템 테스트 절차 수립 | 전체 |
43
+ | IEC 62304 Cl.5.7.2 | 소프트웨어 시스템 테스트 수행 | 3. 테스트 케이스 |
44
+ | IEC 62304 Cl.5.7.4 | 테스트 결과와 요구사항 추적성 | 4. 추적성 매트릭스 |
45
+ | MDR Annex II 6.1 | 제품 검증 | 전체 |
46
+
47
+ ---
48
+
49
+ ## 1. 테스트 환경 (Test Environment)
50
+
51
+ <!-- AI AGENT: 실제 테스트를 수행한 환경을 정확하게 기재하세요 -->
52
+
53
+ | 항목 | 사양 |
54
+ | ------------------ | ---------------------------------- |
55
+ | OS / 환경 | {OS_VERSION} |
56
+ | 주요 SOUP 버전 | {SOUP_NAME} v{VERSION} (SOUP-{ID}) |
57
+ | 브라우저 / 런타임 | {BROWSER_OR_RUNTIME} |
58
+ | 테스트 데이터 출처 | {TEST_DATA_SOURCE} |
59
+ | 테스트 실행 일시 | {TEST_DATE} |
60
+
61
+ ---
62
+
63
+ ## 2. 테스트 범위 (Test Scope)
64
+
65
+ | 포함 | 제외 |
66
+ | ---------------------------- | ------------------------------------ |
67
+ | {IN_SCOPE_TEST} | {OUT_OF_SCOPE_TEST} |
68
+ | SRS-F-xxx 전체 기능 요구사항 | 유닛 레벨 테스트 (별도 SDD에서 관리) |
69
+
70
+ ---
71
+
72
+ ## 3. 테스트 케이스 (Test Cases)
73
+
74
+ ### 3.1 기능 테스트 (Functional Tests)
75
+
76
+ <!-- AI AGENT: 각 SRS-F-xxx 요구사항에 대한 테스트 케이스를 작성하세요
77
+ 테스트 단계(Steps)는 재현 가능하도록 구체적으로 작성해야 합니다
78
+ 예시:
79
+ Steps: 1. {URL}에 접속한다 2. 사용자 ID {ID}와 비밀번호 {PW}를 입력한다 3. 로그인 버튼을 클릭한다
80
+ Expected: 대시보드 페이지로 이동하고 사용자 이름이 표시된다 -->
81
+
82
+ | 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 사전 조건 | 테스트 단계 | 예상 결과 | 위험 통제 검증? | 실제 결과 | Pass? |
83
+ | ----------- | --------- | --------------- | ------------- | ----------- | -------------------------- | ------------ | --------------- | --------- | ----- |
84
+ | TST-SYS-001 | SRS-F-001 | Functional | {TEST_DESC_1} | {PRECOND_1} | 1. {STEP_1}<br>2. {STEP_2} | {EXPECTED_1} | Yes / No | | |
85
+ | TST-SYS-002 | SRS-F-002 | Functional | {TEST_DESC_2} | {PRECOND_2} | 1. {STEP_1}<br>2. {STEP_2} | {EXPECTED_2} | No | | |
86
+
87
+ ### 3.2 성능 테스트 (Performance Tests)
88
+
89
+ | 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 허용 기준 | 측정 방법 | 실제 결과 | Pass? |
90
+ | ------------- | --------- | --------------- | -------------- | --------- | -------------------- | --------- | ----- |
91
+ | TST-SYS-P-001 | SRS-P-001 | Performance | 응답 시간 측정 | <= {N}초 | {MEASUREMENT_METHOD} | {ACTUAL} | |
92
+
93
+ ### 3.3 보안 테스트 (Security Tests)
94
+
95
+ <!-- AI AGENT: SRS-S-xxx 보안 요구사항에 대한 테스트를 작성하세요
96
+ 다음 항목을 포함하는 것을 권장합니다:
97
+ - 인증 실패 케이스 (잘못된 자격증명, 세션 만료)
98
+ - 권한 없는 접근 시도
99
+ - SQL Injection / XSS 방어 확인
100
+ - TLS 통신 암호화 확인 -->
101
+
102
+ | 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 설명 | 예상 결과 | 위험 통제 검증? | 실제 결과 | Pass? |
103
+ | ------------- | --------- | --------------- | -------------------- | -------------------------------------- | --------------- | --------- | ----- |
104
+ | TST-SYS-S-001 | SRS-S-001 | Security | {SECURITY_TEST_1} | {EXPECTED} | Yes | | |
105
+ | TST-SYS-S-002 | SRS-S-002 | Security | TLS 통신 암호화 확인 | Wireshark 캡처 시 암호화된 패킷만 관측 | Yes | | |
106
+
107
+ ### 3.4 경계값 테스트 (Boundary Tests)
108
+
109
+ | 테스트 ID | SRS ID | 테스트 카테고리 | 테스트 조건 | 입력값 | 예상 결과 | 실제 결과 | Pass? |
110
+ | ------------- | --------- | --------------- | -------------- | ------------ | ----------------- | --------- | ----- |
111
+ | TST-SYS-B-001 | SRS-F-{N} | Boundary | 최대값 입력 | {MAX_VALUE} | {EXPECTED} | | |
112
+ | TST-SYS-B-002 | SRS-F-{N} | Boundary | 최소값 입력 | {MIN_VALUE} | {EXPECTED} | | |
113
+ | TST-SYS-B-003 | SRS-F-{N} | Boundary | 범위 초과 입력 | {OVER_VALUE} | 오류 처리 및 거부 | | |
114
+
115
+ ---
116
+
117
+ ## 4. 추적성 매트릭스 (Traceability Matrix)
118
+
119
+ <!-- AI AGENT: 모든 SRS 요구사항이 테스트에 의해 커버되는지 확인하세요 -->
120
+
121
+ | SRS ID | 요구사항 설명 | 테스트 ID | 위험 ID | 커버 여부 |
122
+ | --------- | -------------- | ------------- | --------- | --------- |
123
+ | SRS-F-001 | {REQ_DESC} | TST-SYS-001 | - | Yes |
124
+ | SRS-S-001 | {SEC_REQ_DESC} | TST-SYS-S-001 | {RISK_ID} | Yes |
125
+
126
+ ---
127
+
128
+ ## 5. 테스트 결과 요약 (Test Results Summary)
129
+
130
+ <!-- AI AGENT: 테스트 완료 후 아래 표를 채워주세요 -->
131
+
132
+ | 카테고리 | 전체 | Pass | Fail | Blocked | N/A |
133
+ | ----------- | ---- | ---- | ---- | ------- | --- |
134
+ | Functional | {N} | | | | |
135
+ | Performance | {N} | | | | |
136
+ | Security | {N} | | | | |
137
+ | Boundary | {N} | | | | |
138
+ | **합계** | | | | | |
139
+
140
+ **결론**: Pass / Fail / Conditional Pass
141
+
142
+ **미해결 결함 목록**: (없음 또는 bug-fixes-documentation-list.md 참조)
143
+
144
+ ---
145
+
146
+ ## 6. 변경 이력
147
+
148
+ | 버전 | 날짜 | 작성자 | 변경 내용 |
149
+ | ---- | ------ | -------- | --------------------- |
150
+ | 0.1 | {DATE} | {AUTHOR} | 계획서 초안 |
151
+ | 1.0 | {DATE} | {TESTER} | 테스트 결과 입력 완료 |
152
+
153
+ ---
154
+
155
+ > Template based on IEC 62304:2006/AMD1:2015 Clause 5.7, MDR 2017/745 Annex II 6.1
@@ -0,0 +1,63 @@
1
+ # Usability Evaluation Protocol
2
+
3
+ ## Mapping of Standard Requirements to Document Sections
4
+
5
+ | IEC 62366-1:2015 Section | Title | Document Section |
6
+ |--------------------------|-----------------------------------------------|------------------|
7
+ | 4.2 | Usability Engineering File | (all) |
8
+ | 4.3 | Tailoring of the Usability Engineering effort | (all) |
9
+
10
+ ## 1. User Group and Environment
11
+
12
+ > Describe the user group here, e.g., physicians with experience in a certain field.
13
+
14
+ > Also, describe the environment in which the user test is being conducted. Obviously, both the user group and
15
+ > environment should match whatever you described in your Intended Use. So, if your app is intended to be used
16
+ > by emergency physicians in a brightly-lit hospital environment, you should also have these people do the
17
+ > usability test in a similar environment.
18
+
19
+ ## 2. Preparation
20
+
21
+ > Describe whether you prepare users in any way. Again, this should be based on the use context in which your
22
+ > users will be using your device in real life. So, if people typically carefully read the user manual before
23
+ > (not sure in which parallel universe that happens), you can give them the manual and some time to study
24
+ > it. More realistically, you'll probably test how users handle your device when they haven't read the manual.
25
+
26
+ > If there are official training which are required before users can use your device, you should do this
27
+ > training first, of course.
28
+
29
+ ## 3. List of Tasks
30
+
31
+ > This table lists the tasks you want your users to perform. It's kind of the master table which will be
32
+ > copy-pasted for each user below - you'll be filling out the observations and hazards encountered by each
33
+ > user.
34
+
35
+ > As always, using a spreadsheet (e.g., Google Sheets) instead of a document is a very good idea here.
36
+
37
+ | ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
38
+ |----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
39
+ | | | | | | | |
40
+
41
+ ## 4. Protocols
42
+
43
+ > Copy-paste the table above for each user and fill it out during the test. Note down the names and ages (or
44
+ > any other important characteristics) per user.
45
+
46
+ ### User 1 (Name, Age)
47
+
48
+ | ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
49
+ |----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
50
+ | | | | | | | |
51
+
52
+ ### User 2 (Name, Age)
53
+
54
+ | ID | Description | App State / Environment | Instructions | Acceptance Criteria | Observations | Hazards encountered |
55
+ |----|-------------|-------------------------|--------------|---------------------|--------------|---------------------|
56
+ | | | | | | | |
57
+
58
+ ---
59
+
60
+ Template Copyright [openregulatory.com](https://openregulatory.com). See [template
61
+ license](https://openregulatory.com/template-license).
62
+
63
+ Please don't remove this notice even if you've modified contents of this template.
@@ -0,0 +1,116 @@
1
+ # Intended Use
2
+
3
+ <!-- AI AGENT 작성 지침
4
+ 이 문서는 MDR Annex II 1.1, ISO 14971 Cl.5.2, IEC 62366-1 Cl.5.1 기반 사용 목적 정의서입니다.
5
+ PA 단계의 첫 번째 핵심 문서로, 모든 이후 문서의 근거가 됩니다.
6
+
7
+ 작성 지침:
8
+ 1. "Intended Use": 의료 기기의 核心 기능을 명확하고 간결하게 기술하세요
9
+ - 무엇을 하는가? (진단/치료/모니터링)
10
+ - 어떤 방식으로? (AI 분석, 데이터 수집 등)
11
+ - 어떤 결과를 제공하는가? (점수, 권고사항, 시각화 등)
12
+ 예시: "This software is intended to assist clinicians in detecting {CONDITION} by analyzing {INPUT_DATA} and providing a risk score."
13
+
14
+ 2. "Intended Medical Indication": 대상 질환/상태를 구체적으로 기술하고
15
+ "제외 기준(Exclusion Criteria)"을 반드시 포함하세요
16
+
17
+ 3. "Patient Population": 나이, 체중, 동반 질환 등 구체적 특성을 기술하세요
18
+
19
+ 4. "User Profile": 의료 종사자인지 일반 사용자인지 명확히 구분하세요
20
+ - 필요한 교육/자격 요건
21
+ - 기술 숙련도 수준
22
+
23
+ 5. "Use Environment": 병원 환경인지 재택 환경인지 구분하고
24
+ 소음, 조명, 시간 압박 등 환경적 특성을 기술하세요
25
+
26
+ 6. "Operating Principle": 입력 -> 처리 -> 출력 흐름을 명확히 기술하세요
27
+ AI/ML 모델을 사용하는 경우 반드시 "보조 진단 도구"임을 명시하세요
28
+
29
+ 완성 체크리스트:
30
+ [ ] 제품명 및 버전 기재
31
+ [ ] Medical Indication에 제외 기준(Contraindications) 포함
32
+ [ ] 의도된 사용자와 환자 집단 구분 명확
33
+ [ ] MDR 등급 결정을 위한 충분한 정보 제공
34
+ [ ] IFU(instructions-for-use.md)와 내용 일치 확인
35
+ -->
36
+
37
+
38
+ ## Mapping of Requirements to Document Sections
39
+
40
+ | MDR Class | MDR Section | Document Section |
41
+ | --------- | ----------------------------- | ---------------- |
42
+ | (All) | Annex II, 1.1 a) - d), h), i) | (All) |
43
+
44
+ | ISO 14971:2019 Section | Document Section |
45
+ | ---------------------- | ---------------- |
46
+ | 5.2 | (All) |
47
+
48
+ | IEC 62366-1:2015 Section | Document Section |
49
+ | ------------------------ | ---------------- |
50
+ | 5.1 | (All) |
51
+
52
+ ## Product
53
+
54
+ * Name: *\<product name\>*
55
+ * Version: *\<product version\>*
56
+ * Basic UDI-DI: *\<insert UDI-DI, if/when available\>*
57
+
58
+ ## Intended Use
59
+
60
+ > Describe the core medical functionality of your device and how it treats, diagnoses or alleviates a disease.
61
+ > Keep it high-level so that this description is true for as long as possible even when the device is updated.
62
+
63
+ ## Intended Medical Indication
64
+
65
+ > Describe the condition(s) and/or disease(s) to be screened, monitored, treated, diagnosed, or prevented by
66
+ > your software. Importantly, also list exclusion criteria: Maybe patients with a certain diagnosis should not
67
+ > be using your device.
68
+
69
+ ## Contraindications
70
+
71
+ > List anything that you want to explicitly exclude from your intended use.
72
+
73
+ ## Patient Population
74
+
75
+ > Describe the patient population your software is intended to be used on. Note that this may overlap with the
76
+ > user profile (section below), but not necessarily. Your software could be used by physicians to diagnose
77
+ > diseases in patients, so in that case, they don't overlap. Some ideas for characteristics to describe: Age
78
+ > group, weight range, health, condition(s).
79
+
80
+ ## User Profile
81
+
82
+ > Describe the typical user of the software. Some ideas could be: Qualifications, prior training (for your
83
+ > software), technical proficiency, time spent using the software.
84
+
85
+ ## Use Environment Including Software/Hardware
86
+
87
+ > Describe the typical use environment. What sort of devices is this running on? Does the software only run on
88
+ > one device or multiple devices? Is it loud and chaotic like in an emergency ward? How's the lighting?
89
+ >
90
+ > Also, add other software or hardware which is required by your device. Most commonly, apps require users to
91
+ > have a smartphone with a compatible operating system (iOS / Android).
92
+
93
+ ## Operating Principle
94
+
95
+ > It's kind of a stretch to describe the "operating principle" of software. I guess this makes more sense for
96
+ > hardware devices. In any case, I'd just generally state what sort of input goes in and what output comes
97
+ > out, e.g. you could be processing images and returning diagnoses.
98
+
99
+ The device is stand-alone software. It receives input from the user and outputs information.
100
+
101
+ ## Part of the Body / Type of Tissue Interacted With
102
+
103
+ The device is stand-alone software. It receives input from the user and outputs information. It doesn't come
104
+ in contact with tissue or bodily fluids.
105
+
106
+ ## Variants / Accessories
107
+
108
+ > Describe variants and/or accessories of/to this device, if applicable. For typical stand-alone software of
109
+ > startups, this shouldn't be applicable.
110
+
111
+ ---
112
+
113
+ Template Copyright [openregulatory.com](https://openregulatory.com). See [template
114
+ license](https://openregulatory.com/template-license).
115
+
116
+ Please don't remove this notice even if you've modified contents of this template.