우수 감염병 병원체 확인기관 통합 평가시스템 — 관리자·검사실(일반/관리자)·평가위원·심사위원회의 업무·상태·조건 분기를 한 화면에 정리
유검평은 「연도+검사실ID」 축 아래 네 업무가 각각 독립된 상태를 갖지만, 본 시스템은 같은 축 위에 평가건 1건을 만들고 그 평가건이 단일 상태머신을 따라 진행한다.
검사실ID(기관번호3+분류)로 식별왼쪽의 사용자가 가로 단계마다 무엇을 하는지 읽는다. 상단 역할 강조 버튼을 누르면 해당 역할만 도드라진다.
각 단계의 상태명은 실제 시스템의 상태코드를 그대로 사용했다. 분기는 서버가 실제로 검증하는 조건만 적었다.
연도별 평가표를 게시하고 검사실이 자가작성·제출하면 관리자가 채점·보정 후 확정한다.
배정된 심사원이 검사실 제출자료와 현장을 대조해 판정하고 평가결과보고서를 만든다.
현장평가 결과로 인증 여부를 결정하고, 보완이 필요하면 조치 후 최종평가로 마무리한다.
KDCA-연도-기관유형-일련로 인증번호를 채번하고 발급일·유효기간을 기록한다.
보완ACTION_REQ — 검사실 사후조치 절차로 넘어간다. 미인증(REJECTED)이면 그 해 절차는 종료된다.상태 전이는 정의된 것만 허용되며(불변식 I4), 아래 조건은 모두 서버에서 검증한다. 화면은 같은 규칙으로 미리 안내·차단만 한다.
| 단계 | 대표 상태 흐름 | 다음 단계 조건 | 되돌림·예외 |
|---|---|---|---|
| 사전평가 | DRAFT → PUBLISHED → SUBMITTED | 게시 여부 · 사전평가 기간 · 제출자가 검사실-관리자일 것 | 제출 후에는 검사실 응답·증빙이 서버에서 잠긴다(409). 수정은 유선 요청 → 관리자만 [제출 Flag 되돌리기]로 PUBLISHED 복귀 |
| 채점·확정 | SUBMITTED → (채점·보정) → 확정 | 관리자만 확정·해제 가능 · 보정에는 사유 필수 | 확정 해제 시 현장평가 착수가 다시 막힌다. 보정 이력은 남는다 |
| 현장평가 | SUBMITTED → FIELD_EVAL → EVAL_DONE | 수행 역할(평가위원) + 연도별 배정·심사원 자격 + 사전평가 확정 + 현장평가 기간 | 평가완료에는 판정 1건 이상 + 평가결과보고서가 필요(서버 강제). 검사실·심사위원회의 착수 요청은 403 |
| 심사 판정 | EVAL_DONE → CERTIFIED / ACTION_REQ / REJECTED | 수행 역할(심사위원회) + 의결 기록(회의일·참석위원·의결방식·의사록) · 인증 시 서버가 인증번호 채번 | 판정 취소 경로는 두지 않음(ACTION_REQ는 되돌리기로 작성 복귀 가능) |
| 사후조치 | ACTION_REQ → FINAL_EVAL → FINAL_CERT / REJECTED | 수행 역할(평가위원) + 사후조치 기간 + 조치결과 제출(책임자) — 미제출이면 착수 409 | 최종 확정에는 최종평가 판정이 필요. ACTION_REQ → PUBLISHED 되돌리기 시 조치결과 제출 플래그도 해제 |
| 공개 조건 | 채점 결과 → 검사실 공개 | ① 관리자 확정 ② 확정 점수 존재 ③ 본인 검사실 건 | 미확정 시 서버 응답에서 제외 — 화면 숨김이 아니라 데이터 미전송 |
| 항목 | 설정 화면 | 저장 단위 | 통제 대상 | 비고 |
|---|---|---|---|---|
| 사전평가 기간 | 시스템관리 > 평가기간 등록 | 연도 + 평가건 예외 | 제출(PUBLISHED → SUBMITTED) | 기간 밖이면 제출만 차단, 작성·저장은 허용. 변경 이력 보존 |
| 현장평가 기간 | 시스템관리 > 평가기간 등록 | 연도 + 평가건 예외 | 현장평가 착수(SUBMITTED → FIELD_EVAL) | 사전평가 확정 조건과 함께 검증 |
| 사후조치 기간 | 시스템관리 > 평가기간 등록 | 연도 + 평가건 예외 | 최종평가 착수(ACTION_REQ → FINAL_EVAL) | — |
| 현장평가일 | 시스템관리 > 검사실 관리 | 검사실 | 통제 없음(일정 정보) | 월별 일정·공문·서약서·보고서·「내 일정」에 표출 |
| 심사원 배정 | 시스템관리 > 검사실 관리 | 검사실 | 심사원 조회 범위 | 배정 결과가 공문·서약서·보고서에 반영 |
| 인증 유효기간 | 평가건 > 인증서 대장 | 평가건 | 통제 없음(표기) | 발급일 + 3년 잠정 — 발주처 기준 미확정 |
| 평가표 연도 | 평가표관리 | 연도 | 문항·가중치 적용 범위 | 해당 연도 평가건이 있으면 삭제 불가 |
| 업무 | 관리자 | 검사실-일반 | 검사실-관리자 | 평가위원 | 심사위원회 | 서버가 실제로 막는 것 |
|---|---|---|---|---|---|---|
| 기준정보·평가표·평가기간 설정 | R·A | I | I | I | — | 관리자 외 저장 403 · 기간 변경은 이력 보존 |
| 평가 대상기관 선정·게시 | R·A | I | I | — | — | 대상 검사실 필수 · (연도,검사실) 유일 · 사전평가 기간 확인(예외승인 시 사유 기록) |
| 사전평가 작성·증빙 첨부 | C | R | R | — | — | 작성 단계에서만 저장·첨부 · 타 기관 자료는 목록·다운로드 모두 404 |
| 작성완료(제출) | C | — | R·A | — | — | 검사실-관리자만 전이(I3) · 사전평가 기간 밖 409 |
| 사전평가 채점·보정·확정 | R·A | I | I | C | — | 확정 전 채점 결과는 검사실 응답에서 제외 · 확정은 관리자만 |
| 현장평가 시행·입력 | C | I | C | R | — | 배정된 심사원만 조회·입력 · 자격 미확인 시 착수 409 · 관리자 확정 전 착수 409 |
| 평가결과보고서 생성 | I | I | I | R | C | 심사원 영역 · 검사실은 본문을 바꿀 수 없음 |
| 평가결과보고서 확정 | I | I | A | C | I | 확정 플래그만 검사실-관리자 · 본문은 심사원 값이 권위 |
| 인증 / 사후조치 / 미인증 판정 | I | I | I | C | R·A | 심사위원회만 전이 · 판정 + 의결 기록 없으면 409 |
| 사후조치 결과 제출 | C | R | R·A | I | I | 사후조치 단계에서만 작성 · 제출 후 수정 409 · 되돌리기는 관리자(사유 필수) |
| 최종평가 · 최종 확정 | I | I | I | R | A | 최종평가 판정 + 의결 기록 필요 · 조치결과 미제출이면 착수 409 |
| 공식 정정 오기입 사후 정정 | R·A | I | I | I | I | 관리자만 · 영역·문항·항목·사유 필수 · 사유가 문항 이력에 기록 |
| 심사위원회 의결 기록 회의·참석·의결방식·의사록 | I | — | — | C | R·A | 판정의 선행조건 · 정족수는 규정 확정 전이라 미적용 |
| 통계·인증서 대장 관리 | R·A | — | I | — | I | 인증번호·발급일은 서버 채번 · 검사실은 본인 기관 범위만 |
유검평은 「연도 + 검사실ID」를 공통축으로 삼고 그 아래 업무별 대상·상태를 따로 둔다. 본 시스템도 같은 축을 써야 하는지 소스 기준으로 점검했다.
| 요소 | 현행 구현 | 축 일치 | 확인 근거 |
|---|---|---|---|
| 평가건 | eval_cases에 year + lab_id 보유, 목록·통계·CSV가 연도로 필터 |
일치 | models.py EvalCase |
| 평가표(문항) | survey_items.year — 연도(버전) 단위 관리·복사·삭제 |
일치 | routers/survey.py |
| 검사실 식별 | labs.lab_code = 기관번호(3) + 분류코드, 중복 시 일련번호. 화면 표기 [001B] |
일치 | master.py issue_lab_code |
| 인증번호 | KDCA-{연도}-{기관유형}-{일련} 서버 채번 |
일치 | cases.py _issue_cert_no |
| 평가기간 | 연도 기본값(eval_periods)을 평가건이 상속하고, 필요할 때만 평가건에서 예외로 덮어쓴다 |
일치 조치 | periods.py · cases.py _check_period |
| (연도, 검사실) 유일성 | 서버가 중복 생성·수정을 409로 거부한다(한 해 검사실당 1건) | 일치 조치 | cases.py _check_unique |
cases.py _check_unique). 거부 메시지에 기존 평가건명·상태를 함께 안내하며, 일괄 선정 화면은 이미 있는 기관을 건너뛰고 「생성 n건 · 기존 m건 건너뜀」으로 알린다. 규칙 도입 전에 만들어진 중복 건은 편집이 막히지 않도록, 연도·검사실을 실제로 바꿀 때만 검사한다. 검증 API 8건 PASS(중복 409·다른 연도/검사실 허용·수정 충돌 차단·대상 미지정 예외).eval_periods(연도 단위) 신설. [시스템관리 > 평가기간 등록]이 ①연도 기본 기간(그 해 모든 평가건에 적용)과 ②이 평가건 예외 2단으로 나뉘고, 서버가 단계별로 예외 > 연도 기본 순서로 적용 기간을 계산해 내려준다(periodsEff·periodsSrc). 화면은 적용 값과 출처(연도 기본 / 이 평가건 예외)를 함께 표시한다. 계산 필드는 저장되지 않아 상속이 예외로 굳지 않는다.period_history)을 구간·항목 단위로 남긴다 — 누가 언제 무엇을 무엇에서 무엇으로 바꿨는지, 연도 기본값과 평가건 예외를 구분해 기록한다(불변식 I5). 검증 API 21건 PASS.
근거 흐름도 #10·#21·#35(기간 등록) · F-17/F-23/F-32(기간 통제).| 유검평 구조 | 본 사업 적용 시 | 판단 | 근거 |
|---|---|---|---|
| 업무(현황조사·서면·현장·외부정도)별 대상 여부와 사유를 각각 지정 | 평가건 1건이 3단계를 관통하므로 단계별 대상 지정 개념이 없다. 도입하면 상태머신을 다축으로 재설계해야 한다 | 범위 외 | 흐름도 v1은 3단계 단일 흐름 — 단계별 대상 선정 항목 없음 |
| 업무별 독립 상태(서면 평가중 / 현장 심사중 …) | 현행 10종 단일 상태로 동일 정보를 표현한다(제출·채점확정·보고서 여부는 목록 컬럼으로 보완) | 범위 외 | 불변식 I4(정의된 상태 전이만 허용)와 충돌 |
| 업무별 독립 기간(입력·평가·이의 기간) | 사전·현장·사후 3종 기간으로 이미 대응한다 | 대응됨 | 흐름도 #10·#21·#35 |
| 차수 개념(외부정도관리 1·2차) | 외부정도관리 자체가 범위 외이므로 차수 축은 불필요 | 범위 외 | 흐름도에 외부정도관리 단계 없음 |
| 연도+검사실ID 공통축 | 이미 동일 축 — 유지·강화(발견 1·2) | 채택 | 현행 구현과 일치 |
아래는 유검평 프로세스에는 있으나 흐름도 v1·개발범위회신에 근거가 없어 본 시스템 프로세스에 포함하지 않은 단계다. 검수 시 질의를 대비해 사유를 함께 둔다.
| 유검평 단계 | 본 시스템 | 제외·대체 사유 (기준 문서) |
|---|---|---|
| 외부정도관리 전 업무(차수·문항·결과입력·예비/최종) | 범위 외 | 흐름도 v1은 사전평가·현장평가·사후조치 3단계로 구성 — 외부정도관리 단계 자체가 없다 |
| 이의신청(서면·현장·외부정도) | 범위 외 | 흐름도에 이의신청 단계·주체·상태가 정의되어 있지 않다. 도입 시 상태머신 확장이 필요해 별도 과업 협의 사항 |
| 변경신청(온라인 신청 → 접수 → 승인/반려) | 대체 | 흐름도 #13이 「수정요청(유선) → 제출 Flag 수정」으로 명시 — 관리자 되돌리기로 구현 완료 |
| 심사원 가능일정·지역 등록 → 자동 배정 | 대체 | 개발범위회신: 「6개 기관은 수동 배정으로 충분」 — [검사실 관리]의 심사원 배정 컬럼으로 대체(회신이 지정한 대체안) |
| 심사확정 공문 자동 메일발송 | 제외 | 개발범위회신: 「수동 발송으로 대체」 — 공문 양식 등록 + 조회·출력까지가 범위 |
| 심사서약서 온라인 전자서명·서명 이력관리 | 선택 | 개발범위회신: 「올해는 출력물에 종이 서명으로 대체, 향후 확장을 위해 선택 기능으로만 표기」 |
| 서면평가 심사원 배정·재분류·적절성 평가 | 범위 외 | 유전자검사 항목의 재분류·적절성 판정은 유검평 고유 업무 — 본 사업 평가표(정량 13·정성 54)에 대응 개념이 없다. 사전평가 채점 주체는 흐름도대로 관리자 |
| 심사팀장 보고서·소감문·영수증·교육 관리 | 범위 외 | 흐름도 #31은 평가결과보고서 1종만 요구하며, 심사원 정산·교육 단계가 없다 |
backend/app/routers/cases.py(상태머신·기간·공개조건·권한), survey.py(연도별 평가표),
master.py(검사실ID·배정), models.py(축·이력 테이블).DRAFT·PUBLISHED·…). 화면 표기는 「작성 중(미게시)」·「게시됨(작성중)」처럼 한글 라벨이 별도로 있다.