📦 PCB 보드 S/N QR 라벨 생성기 v1.2

BRITZMEDI → 클래시스 납품용 | 폼텍 3145 (30×9mm, 145칸/A4)   ⚪ 로컬 모드

📄 폼텍 3145 라벨지 미리보기 (실시간)

빈 라벨 칸 (인쇄 안 됨)
S/N + QR 인쇄될 칸
📋 생성된 S/N 목록 텍스트로 보기

📖 사용 안내

① 신규 발행 / 누적 모드 / 재발행
💡 누적 모드: [+ 라벨 추가]로 보드 종류를 바꿔가며 같은 시트에 이어서 채울 수 있습니다. 라벨지 한 장에 여러 보드를 모아 인쇄해서 낭비를 줄이세요.

📄 자동 페이지 분할: 145칸 초과 시 자동으로 2페이지, 3페이지로 분할됩니다.

재발행: 라벨 손상/분실 시 [재발행] 탭에서 기존 S/N을 직접 입력. 인쇄 이력에 이미 있는 S/N도 강제 재인쇄 가능. 한 줄에 하나씩 입력하고, 4종 형식 모두 자동 인식됩니다.

🔁 자동 시작번호: 보드 종류를 변경하면 그 보드의 마지막 발행번호 +1이 자동 입력됩니다.
② 정렬 테스트 (오차 0 만드는 법)
1단계. [📐 정렬 테스트] 클릭 → 일반 A4 종이에 빈 격자만 출력 (라벨지 절대 사용 금지)
2단계. 출력된 종이를 폼텍 3145 라벨지 위에 겹치고 햇빛/창문에 비춰서 칸이 일치하는지 확인
3단계. 어긋난 만큼 미세조정 (0.1mm 단위)
    예: 라벨이 격자보다 0.5mm 아래로 밀렸으면 → 위쪽 여백 −0.5
4단계. 칸이 정확히 맞을 때까지 1~3 반복 (보통 1~2회면 끝)
5단계. 정렬 OK → 실제 라벨지 넣고 [🖨️ 라벨 인쇄]

📌 인쇄 대화상자 설정: 여백=없음 / 배율=실제 크기(100%) / 머리글바닥글=끄기
③ 폼텍 LQ-3145 실측 치수
• A4 210×297mm | 5열×29행=145칸 | 칸 30×8.92mm (스펙상 9mm지만 PDF 실측 8.92mm)
가로: 좌여백 25 + 라벨 30×5 + 가로간격 2.5×4 + 우여백 25 = 210mm ✓
세로: 상여백 21.03 + 라벨 8.92×29 + 세로간격 0 + 하여백 17.29 = 297mm ✓
• ⚠️ 상/하 여백 비대칭 — LEADING EDGE 인쇄 방향 때문 (상단이 더 큼)
④ 발행 이력 / DB 관리
☁️ Supabase DB: [🖨️ 라벨 인쇄] 클릭 시 모든 S/N이 자동으로 클라우드 DB에 저장됩니다. 어느 PC에서 발행하든 모든 작업 PC가 같은 이력을 공유합니다.

💾 로컬 백업: DB 저장과 동시에 브라우저 localStorage에도 백업됩니다. 인터넷 끊김 시에도 동작.

🔍 중복 검증: 라벨 추가 시 DB와 로컬 이력을 모두 확인해서 이미 발행된 S/N이면 경고를 띄웁니다.

(DB는 그대로 유지)
📜 ⑤ 업데이트 이력 (Changelog)
v1.2 현재
2026-04-09
🗂 Claude Code 프로젝트 패키지화
  • 프로젝트 폴더 구조 정립 (CLAUDE.md, wrangler.toml, package.json)
  • Cloudflare Workers 공식 배포 설정 (npm run deploy)
  • Claude Code(bkit) 연동용 작업 지침서 작성
  • 도구 내 버전 이력 페이지 추가 (이 화면)
v1.1
2026-04-09
🎯 프린트 안정화 대수술
  • CSS Grid → Absolute 좌표 전환 — column-gap 누적 오차 완전 제거
  • @media print 강화 (-webkit-print-color-adjust exact, !important 적용)
  • 수평/수직 배율 보정 입력 추가 (hScale, vScale, 0.001 단위)
  • 측정 눈금자 정렬 테스트 (상단 0~210mm, 좌측 0~297mm)
  • @page margin 강제 0 고정
v1.0
2026-04-08
🚀 Cloudflare Workers 배포
  • 정식 운영 시작: britzmedi-sn.mmakid.workers.dev
  • Supabase DB 연동 완료 (britzmedi_pcb_sn_print_log 테이블)
  • anon key 삽입, RLS 정책 적용 (insert/select만 허용)
v0.9
2026-04-08
🎨 UI 최종 정리
  • 좌우 2단 고정 레이아웃 (반응형 제거)
  • 우측 컨트롤 패널 460px 폭 고정
  • 우측 패널 컴팩트화 — 설명문 모두 좌측 "사용 안내" 카드로 이동
  • 카드 오버플로우 완전 제거 (box-sizing border-box)
v0.8
2026-04-08
☁️ Supabase DB 연동
  • 발행 이력 클라우드 저장 (PC/브라우저 초월)
  • DB 기반 중복 검증 (checkSNsExist chunked lookup)
  • 인쇄 시 자동 이력 기록 (batch_id UUID 생성)
  • 헤더에 DB 연결 상태 뱃지 표시
v0.7
2026-04-08
♻ 재발행 기능
  • 재발행 탭 추가 (S/N 직접 입력)
  • 4종 형식 정규식 자동 검증
  • 손상/분실 라벨 대응
  • 배치 이력에서 재발행 건은 별도 표시
v0.6
2026-04-08
💬 커스텀 모달 시스템
  • native confirm()/alert() → 자체 모달로 교체
  • Claude 아티팩트, Arc 브라우저 등 차단 환경 호환
  • Enter/Esc 키보드 지원
v0.5
2026-04-08
📐 폼텍 LQ-3145 실측 반영
  • 폼텍 공식 PDF 300dpi 스캔 → 픽셀 위치 측정
  • 라벨 높이 8.92mm 확정 (스펙 9mm 아님)
  • 상여백 21.03mm, 하여백 17.29mm (LEADING EDGE 비대칭)
  • 좌/우여백 25mm, 가로간격 2.5mm, 세로간격 0mm
v0.4
2026-04-08
📦 누적 모드 + 중복 검증
  • 보드 종류 바꿔가며 같은 시트에 누적 추가
  • 145칸 초과 자동 페이지 분할 (2장, 3장)
  • 시트 내 중복 차단 + 로컬 이력 중복 경고
  • 미세조정 nudge 버튼 (0.1/0.5mm 단위)
  • 배치 이력 실시간 표시
  • 보드별 마지막 발행번호 자동 기억
v0.3
2026-04-08
🖼 라벨지 배경 시각화
  • 폼텍 3145 145칸 격자 배경 렌더링
  • 빈 칸(회색) vs 채워진 칸(파란) 구분 표시
  • 실시간 미리보기 (입력 즉시 반영)
v0.2
2026-04-08
🔢 S/N 코드 규칙 확정
  • RF Board: SM-RF-YY-MM-NNNN
  • Relay Board: SM-RE-YY-MM-NNNN
  • Main Board: SM-MA-YY-MM-NNNN
  • Medical Main Board: KMYYMM-NNNN
v0.1
2026-04-08
🌱 최초 프로토타입
  • 클래시스 이철민 책임 요청 → QR 라벨 필요성 확인
  • 4종 보드 S/N 자동 생성
  • QR + 텍스트 병기 (1:1 매칭, qrcodejs 사용)
  • 폼텍 3145 라벨지 기본 레이아웃
  • 브라우저 인쇄 기능
💡 유지보수는 Claude Code(bkit) 프로젝트에서 관리됩니다. C:\medcode\britzmedi-sn\

1️⃣ 라벨 추가

0 / 145 칸 사용 총 1페이지

2️⃣ 정밀 정렬 + 인쇄

배율 보정 (누적 오차용, 기본 1.000)