COMBIZ Safer

COMBIZ Safer 로고

COMBIZ Safer — 산업안전보건 통합관리 플랫폼

산업안전보건법이 요구하는 모든 안전보건 관리 업무를 하나의 웹 플랫폼으로 통합한 엔터프라이즈급 안전보건경영 시스템입니다. 위험성평가, 안전점검, 교육관리, 산업재해, 화학물질, 보호구, 건강진단, 예산·목표, 위원회·회의록, 전자결재까지 — 사업장의 안전보건 업무 전 과정을 디지털 전환(DX)합니다.

(주)민트기술이 기획, 설계, 프론트엔드, 백엔드, 데이터베이스, 인프라, 테스트를 포함한 풀스택 전체를 자체 개발하였으며, 2,253개 소스 파일, 117개 데이터베이스 엔티티, 1,347개 UI 컴포넌트 규모의 대형 프로젝트입니다.


프로젝트 개요

COMBIZ Safer는 산업안전보건법중대재해처벌법에 따른 사업장의 안전보건 관리 의무를 체계적으로 이행할 수 있도록 설계된 플랫폼입니다. 기존의 엑셀·문서 기반 안전보건 관리를 완전히 대체하여, 실시간 현황 파악, 법정 기한 자동 알림, 전자결재 기반 승인 워크플로우, 통계 대시보드를 제공합니다.

특히 멀티테넌시(Multi-tenancy) 아키텍처를 채택하여 하나의 시스템으로 다수의 사업장을 독립적으로 관리할 수 있으며, 사업장별 역할 기반 접근 제어(RBAC)메뉴 단위 권한 설정으로 세밀한 보안 정책을 적용합니다.

COMBIZ Safer 대시보드
대시보드 — 안전보건 목표 달성률, 결재함, 할 일, 공지사항, 알림 한눈에 확인
할 일 관리
할 일 — 진행 중·완료·미처리 업무를 카드형 보드로 관리

기술 아키텍처

COMBIZ Safer는 최신 웹 기술 스택으로 구축된 풀스택 모놀리식(Full-stack Monolithic) 애플리케이션입니다. SvelteKit의 서버 사이드 렌더링(SSR)과 클라이언트 사이드 렌더링(CSR)을 최적으로 결합하여, 빠른 초기 로딩부드러운 SPA 경험을 동시에 제공합니다.

구성 요소기술 스택역할
FrontendSvelte 5, SvelteKit 2, TypeScript 5.9, Tailwind CSS v4, Bits UI반응형 UI, SPA 라우팅, 컴포넌트 시스템
BackendSvelteKit Server (Node.js), TypeORM 0.3, Remote FunctionsAPI 엔드포인트, 비즈니스 로직, 세션 관리
DatabasePostgreSQL 16, TypeORM Migration, UUID v7117개 엔티티, 관계형 데이터 관리, 마이그레이션
VisualizationECharts 6, D3 Hierarchy통계 차트(도넛·바·게이지), 조직도 트리
ExportExcelJS, jsPDF, docxExcel·PDF·Word 문서 생성 및 다운로드
TestingVitest 4 (단위), Playwright 1.57 (E2E)80+ 테스트, 자동화된 테스트 리포트 생성
CI/CDGitLab CI, Docker, Coolify자동 빌드·테스트·배포 파이프라인
시스템 아키텍처
Frontend (Browser)
Svelte 5 Runes · SvelteKit 2
Tailwind CSS v4 · Bits UI
1,347 Components
Backend (Server)
SvelteKit SSR · Node.js
Remote Functions (RPC)
TypeORM · 80+ Repositories
Database
PostgreSQL 16
117 Entities · UUID v7
TypeORM Migrations
↕ Type-safe Remote Functions · SSR/CSR Hybrid · Session Auth ↕
ECharts
통계 시각화
D3 Hierarchy
조직도 트리
ExcelJS
문서 내보내기
GitLab CI
자동 빌드·배포
Docker
컨테이너 배포

기술적 우위

Svelte 5 Runes — 최신 반응성 모델
$state(), $derived(), $effect() 기반의 시그널(Signal) 반응성 시스템을 전면 채택. React의 useState/useEffect 대비 보일러플레이트 80% 이상 감소, 런타임 오버헤드 최소화로 대규모 데이터 테이블에서도 60fps 렌더링 유지.
Type-safe Remote Functions
SvelteKit의 query()/form()을 활용한 타입 안전 RPC 통신. 프론트엔드에서 서버 함수를 직접 호출하듯 사용하며, TypeScript가 입력·출력 타입을 컴파일 타임에 검증. REST API 보일러플레이트 제거.
117개 엔티티 — 완전한 도메인 모델링
산업안전보건 업무 전체를 117개 TypeORM 엔티티로 정밀 모델링. UUID v7 기반 PK로 분산 환경 대응, Soft Delete·Lazy Loading·커스텀 네이밍 전략까지 프로덕션 수준의 데이터 레이어 구축.
멀티테넌시 + RBAC 권한 시스템
하나의 인스턴스로 다수의 사업장을 완전 격리하여 운영. 사업장별 역할(계정관리자·안전보건관리자·관리감독자·근로자) 기반 접근 제어와 메뉴 단위 세밀 권한 설정으로 데이터 보안 보장.
자동화된 테스트 파이프라인
Vitest 단위 테스트 + Playwright E2E 테스트를 GitLab CI에서 자동 실행. 테스트 결과를 Excel 문서로 자동 생성하여 고객 납품용 테스트 리포트까지 파이프라인에서 산출.
Docker + GitLab CI/CD
코드 Push → svelte-check + 단위 테스트 → Docker 멀티스테이지 빌드 → QA/운영 환경 자동 배포. 코드 품질 게이트를 통과한 변경만 운영에 반영되는 안전한 배포 파이프라인.

데이터 아키텍처

도메인 모델 구조 (117 Entities)
회사 관리
Company · BusinessPlace
Department · Position
Employee · EmployeeStatus
Role · MenuPermission
점검/평가
SafetyInspection · InspectionItem
RiskAssessment · RiskFactor
ReductionMeasure
SemiAnnualInspection
교육 관리
EducationPlan · EducationLog
EducationType · EducationMaterial
Certificate · Completion
안전 관리
ProtectiveEquipment · PPERequest
ChemicalSubstance · MSDS
WorkEnvironment · HazardFactor
DangerousWork · SafetyMeasure
재해/건강
IndustrialAccident
HealthExamination
ExamResult · PostMeasure
Report · Notification
경영/위원회
Budget · Execution
Goal · Achievement
Committee · Meeting
Agenda · Resolution

주요 기능


1. 운영 통계 대시보드 — 안전보건 현황 한눈에

ECharts 기반의 인터랙티브 통계 대시보드로 안전보건 운영 현황을 실시간 시각화합니다. 안전보건 통계에서는 예산 집행률, 목표 달성률, 위원회 이행률, 교육 이수율, 안전점검·산업재해·신고/제안 현황을 도넛·바·게이지 차트로 표시합니다. 위험성평가 통계에서는 평가 진행 현황, 감소대책 처리율, 유해위험요인 분포(기계·작업특성·작업환경·화학·생물학·전기·특수작업), 위험도 개선 전후 비교를 제공합니다. 건강진단 통계에서는 일반건강진단·특수건강진단·배치 전 건강진단의 수검률과 판정 결과 분포를 한눈에 파악할 수 있습니다.

안전보건 통계
안전보건 통계 — 예산, 목표, 위원회, 교육 이수율, 점검·재해·신고 현황
위험성평가 통계
위험성평가 통계 — 평가 현황, 감소대책, 유해위험요인 분포, 위험도 비교
건강진단 통계
건강진단 통계 — 일반·특수·배치 전 건강진단 수검률 및 판정 결과 분포

2. 위험성평가 — 유해위험요인 식별부터 감소대책까지

산업안전보건법 제36조에 따른 위험성평가 전 과정을 디지털로 관리합니다. 평가계획 수립 → 유해위험요인 파악 → 위험성 결정 → 감소대책 수립 → 이행 확인의 5단계 프로세스를 시스템이 안내하며, 각 단계별 상태(평가대기·평가중·평가완료)를 실시간 추적합니다. 감소대책은 별도 목록에서 이행 현황을 관리하고, 위험도 3×3 매트릭스로 개선 전후 위험 수준을 비교합니다.

위험성평가 목록
위험성평가 목록 — 평가 상태·담당자·기간별 필터링 및 현황 조회
위험성평가 결과 등록
평가결과 등록 — 유해위험요인, 위험성 수준, 감소대책 기록
위험성평가 계획 등록
평가계획 등록 — 평가 유형·기간·담당자·대상 공정 설정
감소대책 목록
감소대책 관리 — 대책별 이행 상태 추적 및 완료율 모니터링

3. 안전점검 — 정기·수시·반기 점검 체계

안전점검 조회/등록에서 점검 계획을 수립하고 결과를 기록합니다. 점검 결과 등록 시 점검 항목별 양호/불량 체크, 현장 사진 첨부, 조치 필요 사항 기록이 가능합니다. 미조치 건은 조치현황에서 별도 관리되며, 반기점검에서는 산업안전보건법 제47조에 따른 유해위험방지계획 이행 점검을 수행합니다. 점검지 관리에서 점검 항목 템플릿을 사전 구성하여 현장 점검의 일관성을 보장합니다.

점검결과 등록
점검결과 등록 — 항목별 체크 + 현장 사진 첨부 + 조치 사항 기록
안전점검 목록
안전점검 목록 — 점검 일정·상태·담당자별 조회
조치현황
조치현황 — 미조치 건 추적 및 조치 완료 처리
점검지 등록
점검지 관리 — 점검 항목 템플릿 구성
반기점검 결과
반기점검 결과 등록 — 유해위험방지계획 이행 점검
반기점검 목록
반기점검 목록 — 점검 계획·결과 조회

4. 교육 관리 — 계획부터 이수 추적까지

안전보건 교육계획 수립, 교육일지 작성, 교육자료 관리, 교육종류 항목 설정을 통합 관리합니다. 교육일지 등록 시 교육방법(현장교육/TBM/집체/온라인) 선택, 전자서명 요청, 교육사진·자료 첨부가 가능하며, 교육 이수 현황은 통계 대시보드에서 월별·부서별 이수율로 자동 집계됩니다.

교육일지 등록
교육일지 등록 — 교육방법·전자서명·교육자료/사진 첨부
교육계획 등록
교육계획 등록 — 연간 교육 계획 수립
교육자료 목록
교육자료 관리 — 교육 자료 등록·검색·불러오기
교육종류 관리
교육종류 항목관리 — 교육과정·항목 커스터마이징

5. 위험작업 관리 — 유해·위험 작업 허가 및 안전조치

산업안전보건법 제38조에 따른 유해·위험 작업의 허가, 안전조치 현황을 관리합니다. 위험작업 등록 시 작업 유형·장소·기간·안전조치 항목을 기록하고, 안전조치 이행 현황을 목록에서 추적합니다. 안전조치 항목관리에서 사업장별 안전조치 항목을 사전 정의하여 일관된 관리가 가능합니다.

위험작업 등록
위험작업 등록 — 작업 유형·기간·안전조치 항목 기록
안전조치현황
안전조치 현황 — 조치 항목별 이행 상태 추적

6. 안전 관리 — 보호구·화학물질·작업환경측정·신고/제안

보호구 현황에서 보호구 재고를 관리하고, 신청이력·지급이력으로 근로자별 보호구 수불 이력을 추적합니다. 화학물질 조회/등록에서는 MSDS(물질안전보건자료) 첨부, CAS No. 관리, 작업환경측정 연계 등을 지원합니다. 작업환경측정에서 유해인자별 측정 결과를 기록하고, 신고/제안 시스템으로 현장 근로자의 위험 신고와 개선 제안을 접수·처리합니다.

보호구 현황
보호구 현황 — 재고 관리·보호구코드·교체기간 추적
화학물질 등록
화학물질 등록 — MSDS 첨부·CAS No·작업환경측정 연계
작업환경측정 등록
작업환경측정 등록 — 유해인자별 측정 결과 기록
신고제안 등록
신고/제안 등록 — 현장 위험 신고 및 개선 제안 접수
보호구 신청
보호구 신청 — 근로자가 직접 보호구 신청
처리결과 현황
처리결과 현황 — 신고/제안 처리 상태 및 결과 추적

7. 건강진단 및 산업재해 관리

건강진단 조회/등록에서 근로자의 일반·특수·배치 전 건강진단 일정과 결과를 관리합니다. 진단 현황에서 판정 결과(A·C·D1·D2·R1·R2)를 기록하고, 사후조치 이력을 추적합니다. 산업재해 조회/등록에서는 재해 발생 시 사고 경위, 상해 부위, 재해 유형 등 법정 기록 사항을 체계적으로 등록하며, 등록 가이드가 산업재해 신고 절차를 안내합니다.

건강진단 등록
건강진단 등록 — 진단 유형·기간·대상 부서 설정
진단현황 등록
진단현황 — 근로자별 판정 결과 및 사후조치 기록
산업재해 등록
산업재해 등록 — 사고 경위·상해 부위·재해 유형 체계적 기록
산업재해 등록가이드
산업재해 등록 가이드 — 산업재해 신고 절차 안내

8. 안전보건경영 — 경영방침·조직·예산·목표·위원회

안전보건경영방침을 등록·관리하고, 안전보건 조직을 인력관리·선임계관리·부서별 업무관리·D3 기반 인터랙티브 조직도로 시각화합니다. 예산에서 안전보건 예산 편성과 집행 내역을 관리하고, 목표에서 연간 안전보건 목표와 실적을 추적합니다. 위원회에서 산업안전보건위원회 구성·규정·회의록·안건·심의의결사항을 체계적으로 관리합니다.

안전보건 조직도
안전보건 조직도 — D3 Hierarchy 기반 인터랙티브 조직 구조 시각화
안전보건경영방침
안전보건경영방침 — 경영방침 등록·조회 및 이력 관리
예산 목록
예산 관리 — 안전보건 예산 편성 및 집행 현황
목표 실적 등록
목표/실적 — 연간 안전보건 목표 설정 및 달성 실적 추적
위원회 목록
위원회 관리 — 위원 구성·규정·운영 현황 조회
회의록 등록
회의록 작성 — 회의 안건·결과·심의의결 사항 기록
심의의결사항
심의의결사항 — 위원회 의결 사항 이력 관리
집행내역
예산 집행내역 — 항목별 집행 금액 및 증빙 관리

9. 전자결재 및 전자서명

안전보건 업무의 승인 워크플로우를 전자결재로 처리합니다. 결재요청 → 결재중 → 결재완료/반려/취소의 상태 흐름을 시스템이 자동 관리하며, 받은 결재문서보낸 결재문서를 분리하여 조회할 수 있습니다. 전자서명 이력에서 서명한 문서의 이력을 추적하고, 개인 프로필에서 자필 전자서명을 등록할 수 있습니다.

보낸 결재문서
결재함 — 보낸 결재문서 현황 (결재요청·결재중·결재완료·반려·취소)
전자서명 이력
전자서명 이력 — 서명 문서 추적 및 검증

10. 회사 관리 — 조직·구성원·권한 설정

회사/사업장 정보, 부서·직책 관리, 구성원 관리, 메뉴 권한 설정을 통합 관리합니다. 메뉴 권한 설정에서는 역할별(계정관리자·안전보건관리자·관리감독자·근로자)로 접근 가능한 메뉴를 체크박스 매트릭스로 세밀하게 제어합니다. 개인 프로필에서 교육이력, 상태이력, 자격증, 수료증, 전자서명을 관리합니다.

메뉴 권한 설정
메뉴 권한 설정 — 역할별 메뉴 접근 권한 매트릭스
구성원 관리
구성원 관리 — 임직원 정보 조회·등록·수정
개인 프로필
개인 프로필 — 정보·교육이력·상태이력·자격증·수료증·전자서명
회사 정보
회사 정보 — 대표관리자 설정 및 회사 기본 정보 관리
부서 관리
부서 관리 — 부서 구조 설정 및 인원 현황
공지사항
공지사항 — 사업장 내 공지사항 등록·열람

프론트엔드 컴포넌트 아키텍처

컴포넌트 계층 구조 (1,347 Components)
Base UI Layer
Button Input Select Modal Table DatePicker Pagination Alert Toast Tabs
Bits UI + Tailwind CSS v4 기반
Domain Pickers
EmployeePicker DepartmentPicker ChemicalPicker HazardPicker EquipmentPicker
도메인 특화 검색·선택 컴포넌트
Data Visualization
DonutChart BarChart GaugeChart OrgTree StackedBar
ECharts 6 + D3 Hierarchy 기반
Page Components
ListPage FormPage DetailPage StatisticsPage ApprovalPage
SvelteKit 라우트 기반 페이지

프로젝트 규모

지표수량설명
소스 파일2,253개TypeScript + Svelte 컴포넌트
Svelte 컴포넌트1,347개UI 컴포넌트 + 페이지 컴포넌트
TypeScript 파일906개서버 로직 + 유틸리티 + 타입 정의
DB 엔티티117개TypeORM 엔티티 (= DB 테이블)
Repository80개 이상커스텀 데이터 액세스 레이어
테스트 파일100개 이상단위 테스트 + E2E 테스트
디렉토리945개체계적 모듈 구조