태성이엔지 포털 — 분석 리포트

카카오톡 근무보고 1개월 + 잔업일지 7월 결산본 전수 분석
작성 2026-08-11 분석 대상 2026-07-01 ~ 08-10 근무보고 232건 · 잔업일지 99건 · 인원 33명

요약 — 세 줄

  1. 잔업일지 결산 공식을 완전히 역산했습니다. 33명 전원 검산 일치, 불일치 0건. 웹에서 그대로 재현해 같은 규격의 xlsx를 뽑을 수 있습니다.
  2. 제가 먼저 세웠던 가정 중 2개가 틀렸습니다. 실제 규칙으로 바로잡아야 합니다 (아래 4번).
  3. 새 주소로 이전 완료tseng-portal.pages.dev. 옛 주소도 그대로 살아 있습니다.

1주소 이전 — 완료

요청하신 ts-portal.pages.dev 는 쓸 수 없어 tseng-portal.pages.dev 로 만들었습니다.

ts-portal.pages.dev 를 못 쓴 이유

이미 다른 사람이 선점하고 있습니다. 그 주소로 들어가면 태성과 무관한 외국 페이지가 뜹니다. Cloudflare 는 이런 경우 ts-portal-6or 처럼 임의 접미사를 붙여버립니다.

고유한 이름이면 접미사가 안 붙는 것을 별도로 확인했고, 그래서 tseng-portal 로 확정했습니다.

항목상태비고
tseng-portal.pages.dev200 정상 새 주소. 현재 안전 패트롤이 그대로 떠 있습니다
ts-safety-patrol.pages.dev200 정상 옛 주소 — 지우지 않았습니다. 당분간 함께 운영
/api/ocr401 인증 요구 = Worker 정상 기동. 단 아래 주의 참고
Supabase수정 없음 REST 직접 호출이라 주소가 바뀌어도 영향 없습니다

이전 후 반드시 하실 일 2가지

  1. ANTHROPIC_API_KEY 재등록 — Cloudflare → Workers & Pages → tseng-portal → Settings → Variables and Secrets. 새 프로젝트라 시크릿이 비어 있어 작업표 OCR 이 아직 안 됩니다.
  2. 전환 전 미전송 기록 확인 — 오프라인 대기 기록은 주소마다 따로 저장됩니다. 옛 주소에 안 보낸 게 남은 채로 옮기면 새 주소에서 안 보입니다. 전원 온라인 상태에서 동기화를 한 번 돌린 뒤 옮기시는 게 안전합니다.

2잔업일지 결산 공식 — 역산 성공

주신 잔업일지_2607.xlsx 는 결산이 끝난 완성본이라, 역산해서 검산까지 맞출 수 있었습니다.

33 / 33공식 검산 일치불일치 0건
3,589.5h7월 요율적용시간실시간 1,859h
1.931평균 배율요율 ÷ 실시간
643,500철야 식대99회 × 6,500원

확정된 공식

요율적용시간 = 연장×1.5  +  휴일×1.5  +  야간×0.5  +  휴일연장×0.5  +  미오프×1.0

7월 합계 검산
  연장 1,034h ×1.5 = 1,551.0
  휴일   828h ×1.5 = 1,242.0
  야간   553h ×0.5 =   276.5
  휴일연장 560h ×0.5 =   280.0
  미오프  240h ×1.0 =   240.0
                    ─────────
                      3,589.5h   ← 시트 합계와 정확히 일치

사람별 검증 (일부)

이름실시간연장
×1.5
휴일
×1.5
야간
×0.5
휴일연장
×0.5
미오프
×1.0
계산값시트값검산
김철효133.570.564 36.5448 250.0250일치
정대윤1086940 393624 225.0225일치
박상준915240 293624 194.5194.5일치
박재호915932 37220 166.0166일치
성관영12120 000 18.018일치
합계 33명1,8591,034828 553560240 3,589.53,589.5일치

식사 공제 규칙

실시간은 경과시간에서 식사시간을 뺀 값입니다. 실제 기록을 보니 먹은 날만 빠지고 있습니다.

패턴건수경과실시간공제해석
18시 → 익일 07시3013h12h 1h야식(00~01시) 공제. 석식은 18시 시작이라 애초에 근무 아님
08시 → 17시169h8h 1h중식(12~13시) 공제
17시 → 19시62h2h 0h석식 생략 — 안 먹고 바로 작업
08시 → 익일 01시117h15h 2h중식+석식 공제. 야식은 미공제
23시 → 익일 07시18h8h 0h야식 시간대를 지나는데도 미공제

즉 식사 공제는 규칙이 아니라 그날의 사실입니다. 같은 시간대를 일해도 먹었으면 빠지고 안 먹었으면 안 빠집니다. 카톡에 식사x 라고 적어 보내신 게 바로 이것이었습니다.
→ 웹 폼에서 중식 · 석식 · 야식 각각 먹음/거름 체크로 받으면 이 문제가 사라집니다. 근무구분에 따라 기본값을 켜두고, 거른 날만 해제하시면 됩니다.

3카카오톡 근무보고 1개월 분석

2026-07-03 ~ 08-09, 메시지 236건에서 근무 블록 232건을 뽑았습니다. 하루 평균 6.1건, 15.5명분입니다.

표기 흔들림 — 웹 폼으로 받으면 전부 사라지는 것들

항목실태
날짜24가지 형식 — 26.07.03 88건 · 26년 7월 3일 31건 · 26.7.3 15건 · 26. 07. 3 12건 …
근무구분10가지 표기 → 실제로는 4종. 평일 야간(철야) 평일 야간 (철야) 평일 철야 가 모두 같은 것
인원 구분자공백 159 · 쉼표 118 · 마침표 37 — 한 줄에 섞여 있음
외주9가지 표기 (외주1명 외주 1명 외주1 외주 1 …) 총 69건 90명분
담당자34건(15%)이 비어 있음
이름 오타최민서→최민선 · 오용목→오용묵 · 담당자 이호형/이호영 혼용(14회/9회)
시각48건(21%)만 적혀 있음. 나머지 79%는 근무구분 기본값에 의존

명단이 실제와 맞지 않습니다

카톡 232건 vs 잔업일지 99건 — 차이는 정상입니다

날짜별로 대조하니 31일 중 30일이 달랐는데, 원인이 분명합니다. 카톡에는 평일 주간 정상근무까지 전부 올리고(232건 중 170건), 잔업일지에는 가산 대상만 남깁니다. 즉 두 자료는 애초에 범위가 다릅니다.

→ 웹으로 받으면 한 번만 올리고 시스템이 알아서 갈라줍니다. 전체는 근무 이력으로 쌓이고, 가산 대상만 잔업일지 규격으로 빠져나갑니다. 지금처럼 담당자가 손으로 골라낼 일이 없어집니다.

4제가 세웠던 가정 중 틀린 것

xlsx 를 보기 전에 만든 계산 로직과 실제 결산 규칙을 대조했습니다.

항목제가 넣었던 것실제
휴일 8시간 초과 8시간 넘으면 2.0배 그런 규칙 없음. 휴일은 전부 1.5배이고, 대신 「휴일연장」이라는 별도 항목(×0.5)이 따로 집계됩니다 수정
휴게 공제 중식 12~13시 한 개 고정 중식·석식(17~18)·야식(00~01) 3개이고, 먹었는지 여부가 건마다 다릅니다 수정
야간 가산22~06시 +0.5동일 일치
평일 주간08~17시 가산 0동일 일치
야간 시작18:00 (17~18시는 석식)동일 — 30건이 이 패턴 일치
미오프 수당없었음×1.0 로 집계. 7월 240h 추가
철야 식대없었음회당 6,500원. 7월 99회 추가
출력 형태합계 한 덩어리 연장/휴일/야간/휴일연장/미오프 5개로 분해되어야 함 추가

다행히 계산의 뼈대는 맞았습니다. 제 엔진은 근무시간을 1분 단위로 쪼개 구간마다 배율을 매기는 방식이라, 위 항목들은 규칙표 값만 바꾸면 되고 구조는 그대로입니다. 「연장 1.5 + 야간 0.5 = 2.0」 처럼 합쳐 계산하던 것을 5개 항목으로 나눠 출력하도록 집계부만 손보면 됩니다.

5부장님 판단이 필요한 것

① 「휴일연장」의 정의

7월에 560시간이 잡혀 있는데, 무엇을 기준으로 나누는지 시트만으로는 확정이 안 됩니다. 휴일 근무 중 8시간을 넘긴 부분으로 보이는데, 요율표의 다른 칸과는 맞지 않는 조합이 있습니다.

→ 휴일에 몇 시간을 넘기면 「휴일연장」으로 넘어가는지 알려주십시오.

② 「미오프」 판정

7월 240시간. 24시간 근무 후 다음날 휴무(오프)를 못 쓴 경우로 이해했습니다.

→ 이걸 입력자가 체크하게 할까요, 아니면 부장님이 승인 단계에서 넣으실까요? (시스템이 자동 판정하기에는 사정이 제각각이라 사람이 정하는 게 맞아 보입니다)

③ 식사 체크의 기본값

중식·석식·야식을 각각 먹음/거름으로 받으려 합니다. 실제 기록에서 17시 시작 잔업은 석식을 거의 안 드시고(6건 모두 미공제), 18시 시작 철야는 야식을 드십니다(30건 모두 공제).

→ 근무구분별 기본값을 이렇게 잡아도 되겠습니까? 평일 주간 = 중식 먹음 / 17시 잔업 = 석식 거름 / 18시 철야 = 야식 먹음

④ 근태사유 입력 주체

근태일지 탭의 12종(철휴·무결·연차·반차·특별휴가·청휴·공가·교육·출장·훈련·조퇴·기타)을 그대로 쓰겠습니다.

본인이 올리고 부장님이 승인하는 방식으로 하겠습니다. 부장님이 직접 넣으실 수도 있게 양쪽 다 열어두려 하는데 괜찮겠습니까?

⑤ 계정 비밀번호

아이디 = 이름, 비밀번호 = 생년월일 6자리로 하겠습니다. 직원명부 탭에 이미 전원 것이 들어 있어 그대로 쓰면 됩니다.

→ 다만 회사 안에서는 서로 생일을 알기 쉽습니다. 첫 로그인 때 본인이 비밀번호를 바꾸도록 넣겠습니다. 초기값만 생년월일로 쓰는 것입니다.

6다음에 만들 것

#내용상태
1이름 변경 — 「태성이엔지 포털」대기
2로그인 — 아이디(이름) + 비밀번호(생년월일 6자리) 직접 입력. 기록 시각 · 기기 정보 함께 저장대기
3진입 분기 — 안전 패트롤 권한이 있으면 중간 선택 화면, 없으면 바로 근무내역 입력으로대기
4계산 엔진 수정 — 휴일 8h초과 규칙 제거, 식사 3종, 미오프, 5개 항목 분해대기
5근태사유 입력 — 12종대기
6xlsx 출력 — 잔업일지 규격 그대로. 셀 높이·너비를 위치별로 고정해 세무사 제출본과 동일하게대기
7xlsx 취입 — 기존 파일을 올려 과거분을 불러오기대기
8주소 이전 · 배포완료
9카톡 1개월 · 잔업일지 분석완료

xlsx 출력에 대해

안전 패트롤 누적관리 엑셀을 원본 서식 그대로 만들어 본 방식이 이미 있습니다 (열 너비·행 높이·글꼴·테두리를 실측해 코드에 박아두는 방식, 외부 라이브러리 0개). 잔업일지도 같은 방식으로 셀 높이·너비를 위치별로 고정해 출력하겠습니다. 부장님이 받아서 그대로 세무사께 보내실 수 있는 규격이 됩니다.


지금 눌러볼 수 있는 것

같은 폴더의 근무내역_시안.html 을 열면 실제로 동작합니다. 안에는 7/3~8/9 실제 근무 221건이 들어 있습니다. 다만 위 4번(계산 엔진)이 아직 반영 전이라, 숫자는 잔업일지와 다릅니다. 화면 흐름과 입력 방식만 봐주십시오.

태성이엔지 포털 · 분석 리포트 · 2026-08-11