7.4 KB · 수정 2026-09-14 04:26
목차

2026-09-14 세션 — AL발주서 엑셀 산출물 실물 대조 개선 — 기록: [코디]

논의·대안

[페페] 지시 = 「pfs AL발주서 현재 엑셀 작성본 확인해서 개선 사항 연구하고 반영해라」.

「현재 작성본」을 두 갈래로 잡고 둘 다 확인했다. ① PFS /field/al-orderpaper 가 뽑는 엑셀(생성기 api/pfs/al_orderpaper/al_orderpaper_excel.py + 번들 템플릿 assets/al_order_template.xlsx = AL업체·유리업체 2시트). ② 현장에서 사람이 실제로 채워 보낸 NAS 실물 — \\192.168.0.101\...\2026현장\원부자재발주서\09월\ 의 26.9월분 4건 (봉적 한남동 서안대 · 이지웨이 요청건 · 에넥스 금호 구미 형곡3차 MH · 한샘 학동매장). C:\dev\tools\nasget.py get 으로 받아 C:\dev\_work\al-op\ 에서 대조했다.

대조 결과 나온 갭은 「양식이 원래 하던 일을 PFS 산출물이 못 하고 있는 것」 4건 + 「양식에 칸이 있는데 PFS 가 안 채우는 것」 1건이었다. 자재 발주 실무상 이 산출물은 그대로 팩스로 나가는 종이라, 표기가 회사 양식과 다르거나 한 장에 두 업체가 섞이면 그 자체가 사고다 — 그래서 「보기 좋게」가 아니라 오배송·오표기 차단을 기준으로 골랐다.

착수 전 상의 = 코덱스(gptapp.py ask) 3문항. 답 중 「fitToPage 면 수동 페이지나눔이 무시된다」는 실측으로 뒤집혔다(아래). 계획 서브에이전트(Fable)는 코드 읽기 단계에서 11분 무응답이라 생존감시(Monitor)가 잡아 중단시켰고, 사실조사가 이미 끝나 있어 계획 없이 진행했다.

결정

반영 5건(전부 master 로컬 커밋, 운영 미반영).

  1. 날짜칸 — 양식 서식이 mm" ."dd(aaa)(= 09 .09(수))인데 PFS 는 문자열 '2026-09-09' 를 넣어 서식이 안 먹었다. datetime.date 로 넣는다. 연도칸도 문자열 → int. 실측 대조(Excel COM .Text) = 개선 후 '09 .09(수)' — NAS 실물과 문자 단위로 같다.
  2. 매수칸 — 템플릿 수식 =ROUNDUP(ROW()/20,0). AL 은 블록주기 20이라 1,2,3 정상인데 유리는 블록주기 29 라 3장째부터 1,2,4,5,7 로 튄다(원본 엑셀 버그를 그대로 상속, NAS 실물 4건 전부 같은 값). 계산한 장 번호를 값으로 박는다.
  3. 페이지나눔 — 블록(발주서 1장)마다 row break. 없으면 AL 은 자동나눔이 40행에 떨어져 한 페이지에 발주서 두 장이 찍힌다 = 수신처가 다른 업체 발주서가 같은 종이·같은 팩스로 나간다. 화면 인쇄 경로는 이미 .al-sheet{page-break-after:always} 로 장 단위였는데 엑셀만 아니었다.
  4. 빈 시트 — 유리만(또는 AL만) 발주하는 현장(실물 「이지웨이 요청건」이 그렇다)에 수신처만 찍힌 빈 발주서 시트가 딸려 나가던 것 → 항목 없는 쪽 시트 삭제.
  5. 타입칸 — 양식 타 입 행(AL A19 · 유리 A28)에 실물은 84A,59:주방3,일반2 처럼 타입명과 세대수를 적어 보낸다(26.9월 4건 중 1건 사용). PFS 는 현장명만 채우고 이 칸을 비웠다 → 헤더에 type_note 1칸 추가(DB 멱등 ALTER · 엑셀 채움 · 입력칸).

타입칸 UI 는 web-designer 상담(페페 상시 지시 26.9.4)대로 첫 줄에 끼우지 않고 별도 줄로 뺐다 — 1366px 에서 첫 줄이 이미 경계(계산 ≈1130px vs 가용 1124px)라 인라인 추가는 줄바꿈 확정이라는 진단. 폭은 정의만 되고 안 쓰이던 .w220 재사용(새 CSS 0줄). 접힌 헤더 요약은 값이 있을 때만 표시 (4건 중 1건꼴로 쓰는 칸이라 늘 「타입 -」를 달면 노이즈).

산출물·커밋

🔴새 함정 2건은 projects/pfs/rules.md 🆕 신규에 적었다. - openpyxl 로 시트를 지우면 workbookView.firstSheet=1 이 남아 엑셀이 파일을 아예 못 연다 (openpyxl 로는 멀쩡히 읽히고 zip 구조도 정상이라 파일만 봐선 안 걸린다). 판정 = Excel COM 열기. - fitToPage=True 라도 fitToHeight=0(높이 자동)이면 수동 page break 는 정상 동작한다 (실측 AL 3블록 → 3페이지). 브레이크 id 는 delete_rows 를 안 따라오니 행 삭제 뒤에 깐다.

다음

관계