공장 작업·안전확인 통합 서비스
본 프로젝트의 요구사항(작업 등록·배정, 카카오 알림톡 발송, 작업자 모바일 안전확인과 완료 보고, 역할별 권한 분리)을 기반으로 직접 구현한 프로젝트입니다.
프로젝트 개요
본 프로젝트의 요구사항(작업 등록·배정, 카카오 알림톡 발송, 작업자 모바일 안전확인과 완료 보고, 역할별 권한 분리)을 기반으로 직접 구현한 프로젝트입니다.
작업 범위
- 작업 등록·배정 현황판: 관리자가 작업을 등록하고 작업자에게 배정하며, 모든 작업의 진행 상태를 한 화면에서 확인합니다
- 카카오 알림톡 발송: 작업 배정 시 작업자 전화번호로 작업 내용과 착용 안전장비 안내를 알림톡으로 발송합니다
- 작업자 안전확인·승인: 작업자가 링크로 모바일 화면에 접속해 안전 내용을 확인하고 개인 승인하며, 업체 작업관리자가 최종 승인하면 작업이 시작됩니다
- 역할별 권한 관리: 관리자·작업관리자·안전관리자·협력업체·작업자 5개 역할의 로그인과 메뉴·데이터 접근을 분리합니다
주요 업무
- 작업 등록·배정 현황판 화면: 작업 상태(배정·안전확인 대기·승인 대기·작업 중·완료)를 단일 상태 머신으로 관리하고 현황판에 실시간 반영합니다
- 카카오 알림톡 발송 화면: 일회용 링크 토큰 생성, 발송 재시도, 발송 이력 조회를 하나의 발송 모듈로 구성합니다
- 작업자 안전확인·승인 화면: 개인 승인 전원 완료 시 작업관리자 승인 단계가 열리고, 작업 종료 후 완료 보고를 제출하는 모바일 웹 흐름을 구현합니다
- 역할별 권한 관리 화면: 라우트, API, 화면 요소 3단계로 권한을 검증하고 고객사와 현장별 데이터 접근 범위를 분리합니다



프로젝트 핵심 과제
알림톡 템플릿 심사 일정이 불확실하여 모의 발송기로 먼저 흐름을 검증하고 심사 통과 후 교체하는 계획
작업자가 로그인 없이 링크로 접속하므로 링크 유출에 대비한 만료·1회 사용·기기 기록 설계
다수 작업자의 개인 승인이 동시에 들어올 때 승인 집계와 단계 전환의 경합 방지 설계
고객사·현장별 데이터 분리를 모든 조회 경로에서 누락 없이 강제하는 검증 체계
핵심 기능 상세
작업 등록·배정 현황판
관리자가 작업을 등록하고 작업자에게 배정하며, 모든 작업의 진행 상태를 한 화면에서 확인합니다. 작업 상태(배정·안전확인 대기·승인 대기·작업 중·완료)를 단일 상태 머신으로 관리하고 현황판에 실시간 반영합니다.
- Prisma 모델로 고객사·현장·작업 계층을 설계하고 현장 단위 행 필터를 서비스 계층에서 강제
- React Query의 폴링 무효화로 작업 상태 변경을 현황판에 갱신
- Recharts 기반 상태별 분포 차트와 현장별 진행 타임라인 구성
작업 상태 전이를 서버 상태 머신으로 검증하여 허용되지 않은 전이를 API 단계에서 차단하는 구조를 구현합니다.


카카오 알림톡 발송
작업 배정 시 작업자 전화번호로 작업 내용과 착용 안전장비 안내를 알림톡으로 발송합니다. 일회용 링크 토큰 생성, 발송 재시도, 발송 이력 조회를 하나의 발송 모듈로 구성합니다.
- 발송 API 연동 어댑터를 인터페이스로 분리하여 템플릿 심사 전에는 모의 발송기로 대체
- 만료 시각이 있는 서명 링크 토큰을 생성하고 1회 사용 후 무효화
- 실패 건의 지수 백오프 재시도와 발송 이력 테이블 설계
템플릿 변수 치환과 링크 토큰 생성을 한 트랜잭션으로 묶어 발송 이력과 링크가 어긋나지 않는 구조를 설계합니다.


작업자 안전확인·승인
작업자가 링크로 모바일 화면에 접속해 안전 내용을 확인하고 개인 승인하며, 업체 작업관리자가 최종 승인하면 작업이 시작됩니다.
- 모바일 우선 반응형 레이아웃과 큰 터치 영역의 체크리스트 컴포넌트
- 개인 승인 기록을 작업자·시각·기기 정보와 함께 불변 로그로 저장
- 승인 단계 진행률을 계산하는 서버 집계 쿼리와 단계별 잠금 처리
개인 승인과 작업관리자 승인을 순서 의존 단계로 모델링하여 미승인 상태의 작업 시작을 서버에서 막는 구조를 구현합니다.


역할별 권한 관리
관리자·작업관리자·안전관리자·협력업체·작업자 5개 역할의 로그인과 메뉴·데이터 접근을 분리합니다. 라우트, API, 화면 요소 3단계로 권한을 검증하고 고객사와 현장별 데이터 접근 범위를 분리합니다.
- JWT 액세스·리프레시 토큰과 역할 클레임 기반 Express 미들웨어
- 권한 매트릭스를 데이터로 관리하는 관리 화면 구성
- 고객사·현장 식별자를 모든 조회 쿼리에 주입하는 Prisma 확장
권한 매트릭스를 코드가 아닌 데이터로 정의하여 역할별 메뉴와 API 허용 범위를 한 곳에서 변경할 수 있는 구조를 설계합니다.


프로젝트 진행 단계
작업 흐름 분석 및 데이터 모델 설계 · 2026.10
작업·배정·승인 상태 전이 정의, 고객사·현장 계층 PostgreSQL 테이블 설계
알림톡 발송 모듈과 링크 토큰 구현 · 2026.10
발송 어댑터, 서명 링크 토큰, 재시도 큐와 발송 이력 API 구현
관리자 현황판과 작업 등록 화면 개발 · 2026.10
React 기반 현황판, 배정 폼, Recharts 차트 구성
작업자 모바일 안전확인 화면 개발 · 2026.10
개인 승인, 작업관리자 승인, 완료 보고 모바일 웹 화면 구현
개발 결과
기술적 주안점
- 작업 상태 전이를 서버 상태 머신으로 검증하여 허용되지 않은 전이를 API 단계에서 차단하는 구조를 구현합니다
- 템플릿 변수 치환과 링크 토큰 생성을 한 트랜잭션으로 묶어 발송 이력과 링크가 어긋나지 않는 구조를 설계합니다
- 개인 승인과 작업관리자 승인을 순서 의존 단계로 모델링하여 미승인 상태의 작업 시작을 서버에서 막는 구조를 구현합니다