🦺 안전관리 플랫폼·기획 문서·확인요청서

현장 안전관리 플랫폼 — 기획 / PoC 문서

버전: 0.1 (초안)
작성일: 2026-06-25
상태: 기획 — 이해관계자·도메인 전문가 검수 대기
비고: 본 문서의 모든 산업안전 도메인 수치(법 조문번호·매트릭스 크기·표준 위험요인 등)는 "⚠️ 도메인 전문가 확인 필요" 로 표시. 코드 구현은 본 문서 승인 후 별도 진행.


1. 개요 / 배경

최근 중대재해처벌법 등으로 사업장 안전 의무가 크게 늘었으나, 현장의 안전 업무는 엑셀·종이·카톡에 흩어져 체계 없이 처리되고 있다. TBM(작업 전 안전점검회의), 위험성평가, 안전점검, 작업허가 등 "해야 할 것"은 많은데 단일 시스템이 없어 실무자 부담이 크고, 이력·이행 현황 추적이 어렵다.

본 플랫폼은 이 흩어진 안전 업무를 하나의 디지털 워크플로로 체계화하고, 그중 가장 손이 많이 가는 위험성평가를 AI로 자동화해 실무자의 작성 부담을 줄이는 것을 목표로 한다.

재사용 전제: 사내에 이미 구조가 동일한 검증된 시스템(kwater 계약방법 결정 AI입력 → 룰엔진 결정론 판정 → 법규 근거(RAG) → 문서 자동생성)이 있다. 안전관리도 같은 골격이라, 0부터가 아니라 이 코드를 안전 도메인으로 재매핑하는 reuse-first 접근으로 개발 기간·리스크를 크게 줄인다.


2. 문제 정의 (4대 업무 현황 · 페인포인트)

업무현황페인포인트
위험성평가엑셀 양식 수기 작성, 공종마다 위험요인을 매번 떠올려 기입작성에 시간 과다, 누락 잦음, 담당자별 편차, 법적 양식요건 충족 불확실
TBM종이 일지 / 카톡 사진기록 산재, 참석·이력 추적 불가, 위험포인트 누적 안 됨
안전점검체크리스트 종이집계·미조치 추적 어려움
안전법규 Q&A담당자 개인 지식·검색 의존산안법·KOSHA 기준 찾기 어렵고 근거 불명확

공통 통증: ① 분산(시스템 부재) ② 반복 수작업 ③ 이력·이행 현황 불가시성 ④ 법적 근거·검증 취약.


3. 목표 · 범위


4. 사용자 · 시나리오

사용자주 기기핵심 행위
현장 실무자/작업반장모바일TBM 작성, 안전점검 체크, 위험성평가 간이 입력/조회
안전관리자PC위험성평가표 정밀 작성·검토·승인, 대시보드, 문서 출력
(관리/경영)PC이행 현황·미조치 위험 모니터링

반응형 필수 (모바일 현장 입력 + PC 관리자 검토).

대표 시나리오 3종

  1. (P1) 안전관리자가 PC에서 "○○정수장 전기공사" 입력 → 시스템이 표준 위험요인·빈도·강도·감소대책을 자동 제시 → 검토·보정·승인 → 위험성평가표(xlsx·06양식) 출력.
  2. (P2) 작업반장이 현장에서 모바일로 당일 TBM 작성(위험포인트·참석자) → 일지 자동 저장·이력화.
  3. (병행) 실무자가 "고소작업 안전난간 기준?" 질의 → 산안법·KOSHA 근거와 함께 답변.

5. 기능 범위 (Phase별 · MoSCoW)

확정 우선순위(§10): P1 위험성평가 → P2 아차사고 → P3 적격수급 → P4 KPI 대시보드, Q&A 병행.

기능P1P2P3P4우선순위
위험성평가 입력 위저드(공종·환경조건)Must
표준 위험요인·빈도/강도 자동 추정 + 감소대책(룰+LLM)Must
위험성평가표 출력(xlsx·06양식)Must
현업 작성·관리감독자 전자서명·승인 워크플로Must
안전법규 Q&A◐(병행)Should
아차사고(Near-Miss) 모바일 신고(사진+한줄·익명)Must
신고→배정→조치→결과 피드백 루프 + 보상Should
TBM 일지·안전점검 체크리스트(모바일 현장입력)Should
적격 수급업체 안전 평가(발주·계약 단계)Should
과업지시서 표준 안전조항(작업중지·해지)Could
KPI 거버넌스 대시보드(과정형 지표→부서/경영 KPI)Should
작업허가서(PTW)Could

6. 위험성평가 도메인 모델

6-1. 기법 (도메인 정리)

6-2. 데이터 모델

RiskAssessment (위험성평가서)
  ├─ work_context        # 현장/사업소/작업기간/공사명
  ├─ method              # matrix3x3 | matrix5x4 | checklist | 4m  (데이터화)
  └─ items[] : RiskItem

RiskItem (단위 위험)
  ├─ work_type / process       # 공종·작업유형 (룰엔진 입력)
  ├─ hazard                    # 유해·위험요인 (룰엔진 결정)
  ├─ hazard_category           # 4M / KRAS code
  ├─ estimation {frequency, severity, risk_level}   # 룰 기본값 + 사용자 보정
  ├─ legal_basis[]             # 근거 조문 (law_registry 구조 재사용)
  ├─ controls[]                # 감소대책 (룰 기본 + LLM 제안)
  └─ residual {frequency, severity, risk_level}     # 대책 후 잔존위험성

6-3. kwater 매핑 (구체)

안전 개념kwater 자산매핑
공종·환경 → 위험요인·빈도·강도rule_engine.match() (priority 정렬, 결정론)매칭 룰 1건 = RiskItem 후보. result={hazard, category, default_frequency/severity, controls[], legal_basis[]}
환경조건 추가 질문(고소·밀폐·중량물)restriction_options()(금액→후속질문)followup_questions()로 환경 조건 질문 동적 생성 → RiskItem 후보 활성화
LLM 근거 한정(환각 억제)build_decision_pack()build_risk_pack(work_type) = 룰 표준요인 + KOSHA 청크 + 산안법 조문을 LLM에 동행. LLM은 팩 내에서 "제안"만
미검증 조문 차단_strip_unverified_citationslegal_basis에 없는 조문 인용 generic 치환 그대로 재사용
평가표 출력openpyxl로 06 xlsx 템플릿 채움위험성평가표 xlsx(06 양식). 한글 문서(작업허가서 등)는 hwpx_writer 별도

7. 아키텍처 + kwater 재사용 맵

경로 기준: /data/kwater/kwater-contract-ai

자산재사용도안전 매핑
backend/services/rule_engine.py + rules/contract_rules.json높음공종/환경 → 표준 위험요인·빈도·강도 결정 (신규 risk_rules.json)
backend/services/textbook_pack.py (build_decision_pack)높음위험성평가 근거팩
openpyxl(xlsx) + hwpx_writer.py(한글)xlsx 신규·hwpx 재사용위험성평가표 = xlsx(06 양식, openpyxl) / TBM일지·작업허가서 등 한글 문서 = hwpx_writer
rag_service.py + embedding.py + chroma + rules/law_registry.json + data/glossary.json높음산안법·KOSHA·내부규정 검색, 안전 약어(TBM·MSDS 등) 확장
api/v1/ask.py + Gemini provider높음(컬렉션·프롬프트만 교체)안전법규 Q&A
frontend Step1~4 위저드 + store/wizardStore.ts + HomeDashboard.tsx(멀티테넌트)높음(모바일 보강)위험성평가 입력 위저드, 부서/사업소별 테넌트
FastAPI SPA 서빙 + media01 배포 파이프라인높음동일 배포 모델

신규 개발 핵심 5가지

  1. risk_rules.json — 작업유형별 표준 위험요인 DB (최대 공수)
  2. 룰엔진 조건평가기 일반화 — 안전 도메인 키(work_type, environment 등) 수용 (현재 계약 도메인 키 하드코딩)
  3. xlsx 출력(06 템플릿 채움) — openpyxl로 06.위험성평가.xlsx의 위험성평가표 시트에 항목 행을 채워 저장(동적 행 용이). ※ HWPX는 한글 문서 출력 시에만
  4. 빈도×강도 매트릭스 UI
  5. 모바일 UX (kwater는 데스크톱 위주)

7.5 데이터 아키텍처 · 인사이트 (플랫폼 핵심)

이 플랫폼의 본질은 문서 자동화가 아니라 안전 데이터의 자산화와 인사이트다. 모든 입력·판정·조치를 처음부터 정규화 구조로 저장해, 누적될수록 가치가 커지게 설계한다.

3계층 구조 + 오브젝트 스토리지

  1. 수집 (OLTP): 제출·위험성평가·TBM·점검·아차사고를 트랜잭션으로 저장. (PoC: SQLite / 운영: PostgreSQL·Supabase)
  2. 분석 (OLAP): DuckDB로 집계·추세·교차분석 (사내 표준 스택, kwater·RealtyAPI도 DuckDB 사용 → 재사용).
  3. 산출: ① xlsx(위험성평가)·한글 문서 ② 대시보드 ③ 인사이트 리포트 — 모두 동일 데이터에서 파생.
  4. blob = MinIO 오브젝트 스토리지: 사진·첨부 같은 대용량 바이너리는 MinIO(media01)에 저장하고 DB엔 키(참조)만 보관. DB·앱서버 디스크를 가볍게 유지(미디어01 오프로드 전략 일치). 아차사고 사진이 첫 적용 사례.

설계 원칙

도출 가능한 인사이트(예시)

검증된 첫 구현체 (가동 중)


8. 필요 데이터 · 규정 소스

데이터용도확보 방법상태
산안법/시행령/규칙 조문legal_basis, Q&A국가법령정보센터 OPEN API (kwater tools/fetch_laws_* 패턴 재사용)확보 가능
위험성평가 고시기법·매트릭스 기준법령/고시확보 가능
작업유형별 표준 위험요인 DBrisk_rules 본체reference/공종별 위험성평가 표준모델.xlsm(260종·446시트)에 이미 존재 → ETL 추출확보 — 신규구축 아님(최대 공수 해소!)
위험성 매트릭스·등급 기준빈도·강도·위험성 결정reference/06.위험성평가(최초평가).xlsx 1.1·1.2 시트(표준 5×4)✅ 확보
출력 양식(위험성평가서)결과 문서 포맷reference/06.위험성평가(최초평가).xlsx(표지·매트릭스·유해위험요인·평가표)✅ 확보
산업안전담당자 업무·체계화면/로직 방향reference/*.hwpx 3종(산보·시설물·건설 기본계획)✅ 확보(§13.4)
산안법/시행령/규칙 조문legal_basis, Q&A국가법령정보센터 OPEN API (kwater tools/fetch_laws_* 재사용)확보 가능
K-water 내부 안전규정·PTW·TBM 양식내부 분기·템플릿기본계획 hwpx에 PTW·작업중지제·TBM 자가진단 양식 포함🟡 일부 확보
사고/아차사고 통계(선택)빈도 가중치 보정아차사고 PoC로 자체 축적 중후순위

반전: 최대 리스크였던 "표준요인 DB 신규구축"이 해소됨 — 직원들이 만든 표준모델.xlsm(260종)이 그 자산. P1은 구축이 아니라 추출(ETL)+검증으로 전환.


9. UX (반응형)

현장 실무자 (모바일)안전관리자 (PC)
핵심TBM·점검 입력, 위험성평가 간이 조회/입력평가표 정밀 작성·검토·승인, 대시보드, 출력
레이아웃세로 단일 컬럼, 큰 터치 타깃, 단계당 1질문멀티컬럼, 표 일괄 편집, 키보드 중심
부가오프라인 임시저장, 현장사진 첨부, (선택)음성→텍스트매트릭스 일괄 편집, xlsx 출력

구현 방향: kwater 위저드를 반응형 분기 — 동일 wizardStore 상태, viewport별 컴포넌트(모바일=스텝퍼 / PC=풀폼). 문서 출력(xlsx)은 서버 사이드라 디바이스 무관.


10. 로드맵

확정 순서 (사용자 결정 2026-06-25): 위험성평가 → 아차사고 → 적격수급 → KPI 대시보드 (+ Q&A 병행)

Phase산출물kwater 재사용신규 개발
P0 준비표준요인 DB 스키마, 규정 수집 파이프라인법령 수집툴, chroma, embedding안전 데이터 수집·구조화, 전문가 검수 루프
P1 위험성평가 (MVP)입력위저드 → 룰엔진 추정 → 대책 → 평가표 xlsx(06 양식) + 현업 서명rule_engine, decision_pack, form/hwpx, 위저드/스토어, RAGrisk_rules.json, 조건평가기 일반화, xlsx 06 템플릿 출력(openpyxl), 매트릭스 UI, 모바일, 서명·승인 워크플로
P2 아차사고 신고모바일 신고(사진+한줄·익명)→배정→조치→피드백+보상, TBM·점검 현장입력제출 수집 PoC(Flask+SQLite, §7.5) 확장, 위저드모바일 신고 UX, 피드백 루프, 중복제거·중요도 분류, 보상 연동
P3 적격 수급업체 평가발주·계약 단계 안전 평가 계량화 + 표준 안전조항kwater 계약 도메인 접점, 룰엔진평가 기준표, 계약 연계 (※ 계약규정·법무 협의 전제)
P4 KPI 거버넌스 대시보드과정형 지표→부서/경영 KPI, 경영진 시각화HomeDashboard(멀티테넌트), org 분기집계 API(DuckDB), 차트, 미조치 알림
병행: 안전법규 Q&A자유질의 응답ask.py 거의 그대로안전 프롬프트·약어 glossary

P2 아차사고는 오늘 띄운 제출 수집 PoC(§7.5)를 그대로 확장하므로 착수 비용이 낮음. Q&A는 어느 단계든 저비용 병행 가능.


11. 리스크 · 완화

리스크영향완화
규정·표준요인 데이터 미확보P1 착수 지연데이터 트랙 분리, KOSHA 공개자료 선구축 + 내부자료 후보강
AI 제안의 법적 책임위험요인 누락 시 책임 소재휴먼인더루프(관리자 승인 필수) + 면책 고지 + decision_pack으로 근거 한정
위험성평가 법적 검증평가서 부실 = 법 위반legal_basis 강제, 미검증 조문 generic 치환(kwater 재사용), 법정 양식요건 체크
도메인 전문가 검수 필요표준요인 정확도산업안전기사/지도사 검수를 P0~P1 필수 게이트로 명시
출력 양식 정합성06 양식과 미세 차이06 xlsx를 템플릿으로 직접 채움(서식 보존, openpyxl). 한글 문서 필요 시 hwpx 별도
매트릭스 기법 미확정추정 로직 흔들림매트릭스를 데이터(JSON) 외부화 — 전문가 확인 후 값만 교체
아차사고 보상 게이밍/노이즈중복·사소 신고 폭증으로 신호 희석중복제거, 중요도 자동 분류, 보상은 채택·개선 완료 기준
과정형 KPI 형식화이행률 숫자만 채우는 행태질적 표본감사 병행, 지표 주기적 재설계
적격수급·계약조항 충돌계약규정·법무와 마찰우리 통제 밖 → 계약·법무 사전 협의 전제(P3 게이트)
책임 분산의 조직 저항현업이 서명·작성 거부시스템(서명 워크플로)이 가능케 + KPI 연동(P4)이 실제 레버 — 두 축 상호보완

12. 성공지표 (KPI)


13. 참조자료 기반 설계 보강 (2026-06-26)

직원 제작 자산(reference/)과 담당자 업무문서(hwpx) 분석 결과 반영.

13-1. 두 역할 (책임 분산 구체화)

13-2. 위험성 매트릭스 체계화 ← "어떻게 체계적으로" 답

매트릭스를 '선택 가능한 데이터 프로파일' 로 정의하면 체계화됨 (엑셀 수식/하드코딩이 아니라 데이터):

13-3. 표준모델 → DB (이미 완성된 자산)

13-4. 출력 양식 & 플로우

13-5. 산업안전담당자 기능 (hwpx에서 도출 — 로드맵 후보)


15. 멀티유저 / 인증 설계 (2026-06-26)

목표: 여러 직원이 각자 계정으로, 부서/사업소·역할에 맞게 사용. 평가·신고·점검이 "누가/어느 부서" 데이터로 귀속.

15-1. 인증 — Resend 매직링크 (우리 서비스에 격리)

15-2. 사용자·역할

15-3. 테넌시 (부서/사업소 단위)

15-4. 단계

  1. (키 수령) Resend 연동 + users/세션 + 로그인 페이지(/safety/login)
  2. 기존 PoC(아차사고·확인요청서)에 owner_id·dept 부착, 익명 옵션 유지
  3. 자동 위험성평가 엔드포인트(다음 제안)를 로그인 사용자/부서에 귀속
  4. 역할별 가시성·승인 UI

15-5. DB


14. 부록

14-1. 용어 / 약어

14-2. ⚠️ 도메인 전문가 확인 필요 (미해결 질문)

  1. K-water가 채택할 위험성 매트릭스 크기(3×3 / 4×4 / 5×4)와 각 등급 정의·허용기준
  2. 산안법 위험성평가 관련 정확한 조문·고시 최신 개정일
  3. 표준 위험요인 분류체계: KRAS 코드 채택 여부 / 자체 체계
  4. 위험성평가서 법정 양식 요건(필수 항목·서명·보존)
  5. 사업소/공종별 내부 안전규정 분기 존재 여부
  6. TBM·작업허가 내부 양식과 전자서명 요건
  7. AI 자동 제안의 책임·면책 사내 정책

14-3. 재사용 기준 핵심 파일 (kwater)


다음 단계 (문서 승인 후)

  1. 도메인 검수: 6·8장 + 13-2 미해결 질문을 안전 전문가/K-water 안전팀과 리뷰 → 수치 확정
  2. 데이터 가용성 점검: 8장 소스별 1건씩 확보 테스트(법령 API, KOSHA 자료, 내부자료 요청)
  3. 기술 스파이크 2건: (a) 06 xlsx 템플릿 채우기 PoC(openpyxl) (b) 룰엔진 조건평가기 안전키 확장 PoC
  4. 이해관계자 리뷰로 범위·우선순위 합의 → P0 착수