task.crowny.org — 현장 업무보고서 + 일거리 디스패치
개요
프리랜서/소상공인 현장 작업자가
알바하듯 일거리를 잡고(claim) 현장 다녀와
업무보고서를 직관적으로 작성 → 발주처가 검토·정산하는 웹서비스. take.crowny.org 아키텍처(순수 Node·파일DB·owner토큰·blob이미지·한선씨 SSOT)를 차용해 재구성.
- 도메인/포트: task.crowny.org : 9949 (라이브, 유효 LE cert)
- 위치:
/Users/ef/crowny-task
- 영속:
~/Library/LaunchAgents/org.crowny.task.plist
무엇을 했는지
- 한선씨 SSOT
작업보고검증.한선 — 완성도점수·일거리/보고서 상태전이·소요분·지각판정·세금(원천징수3.3%/부가세10%)·과세유형 발급가능·공급가액합 (4상균형3진). 자가검증 통과.
- server.js (순수 Node) — 작업자 회원/프로필, 일거리(등록·잡기·상태), 보고서(작성/임시저장/제출/수정), 정산 월별집계, blob사진, admin(일거리등록·검토·작업자). 부품비=자재 Σ 서버 권위계산.
- 작업자 앱 index.html/app.js — 5탭(일거리·보고서·내작업·정산·내정보). 일거리 잡기→보고서 프리필, 자재행/사진(작업전후+설명)/별점/세금토글/청구계산 실시간 미러, GPS, 시간계산.
- 발주처 콘솔 admin.html/admin.js — 일거리 등록, 현황, 보고서 검토(검토중/정산완료/보류), 작업자 목록.
- 리서치 에이전트(Opus) 웹 스크리닝으로 P0/P1 누락필드 반영: 과세유형 분기, 공임↔부품비 분리, 사용자재 내역, 작업전/후 사진, 보증기간, 도착상태.
- 인프라: crowny-ports.sh set(게이트웨이 자동결선)+gwlive SIGHUP, LaunchAgent, 전용 LE cert(task-crowny) 발급 + stunnel 양쪽 conf(-443 및 -live 8443) SNI 블록 추가.
핵심 함정/교훈
- stunnel SNI는 양쪽 conf 필요: 공개 443은 라우터가 내부 8443(stunnel-live.conf) 로 포워딩됨. stunnel-live-443.conf에만 블록 추가 시 127.0.0.1 직결은 되나 공개 IP는 000.
https:(8443) vs https443:(443) 부모 SNI 형식 다름. 둘 다 추가해야 공개 동작.
- stunnel SIGHUP은 설정 reload 안 함(macOS) → 새 SNI 블록 적용엔 프로세스 재시작 필요. 워치독(stunnel443워치독.sh, 15s)과 경합 방지 위해 STOP→재기동→CONT.
- gateway.yaml 반영은 gwlive(crownyc 8080)에 SIGHUP.
관련 파일
- /Users/ef/crowny-task/{server.js,작업보고검증.한선,README.md}
- /Users/ef/crowny-task/public/{index.html,app.js,admin.html,admin.js,style.css}
- /Users/ef/crowny-gateway/한선게이트웨이/{stunnel-live-443.conf,stunnel-live.conf} (task SNI 블록)
- cert: /Users/ef/crowny-data/certs/certbot/live/task-crowny/
잔여 이슈
- admin 기본 비번 task1004 → 운영 전 변경 권장(env TASK_ADMIN_PW).
- cert 자동갱신 시 stunnel 재시작 필요(타 전용cert 도메인과 공통 인프라 과제).
- 향후: 보고서 PDF 출력, 고객 전자서명(P1 잔여), 안전점검 체크리스트(P2).