6.1 KB · 수정 2026-08-17 22:31
목차

26.8.17(월) 세션 — PNCAD PFS 편입 · 운영배포 + GitHub 보존

논의·대안

직전 세션이 남긴 1순위 = PNCAD(포인캐드)를 PFS 하위 생산 프로그램으로 편입하고 운영 배포. 페페 지시 원문 = "PFS 사이드 메뉴 생산 그룹에 포함시켜. 첫번째 항목으로 링크 생성. 운영 배포 진행."

착수 전 그릴링 1문(화면 구성) = ①PFS 사이드바 유지 iframe ②전체화면 ③새 탭페페 택 = ③ 새 탭. PNCAD는 3열(카탈로그 466px + 3D 뷰포트 + 속성 패널) 전체화면 CAD라 PFS 사이드바와 폭을 나눠 쓰면 작업 공간이 죽는다. 새 탭이면 PFS 탭이 제자리에 남아 현장 목록을 보며 배치하는 실무 흐름에도 맞는다.

자산 배치는 코디 판단(설계 결정 아님, 관례 문제)으로 정했다 — 대안 2개였다. ①PFS 리포로 완전 이전(단일 출처) ②C:\dev\pncad 유지 + 동기화 스크립트. ②를 택했다: convert.mjs·verify.mjs(S7 대조 50.6%)가 schema.js를 import 하며 pncad 리포에서 계속 돈다. 지금 쪼개면 S7 잔여 작업 루프가 끊긴다.

결정

  1. 경로 = /production/pncad/ (끝 슬래시 필수 — app.html./schema.js·data/*.json을 상대경로로 불러서, 슬래시가 없으면 /production/schema.js로 새어 404 난다).
  2. 자산은 web/pncad/web/static/ 밑이면 안 된다. 정적 폴더는 로그인 없이 열려서 현장목록(1,988건)·카탈로그·CP 마스터가 그대로 샌다. send_from_directory + @login_required 로 서빙.
  3. Jinja를 태우지 않는다render_template 대신 파일 그대로. app.html 안 JS 템플릿 문법 보호.
  4. 현장목록 = PFS 안에서는 /api/field/ 라이브(같은 오리진·세션 그대로), 단독 실행(8799)이면 스냅샷 data/fields.json 자동 폴백. 스냅샷 갱신을 사람이 기억할 필요가 없어졌다.
  5. 사이드바 target="_blank"는 base.html 한 줄 조건(url_path == '/production/pncad/').
  6. 메뉴행은 display_order 445(생산 그룹 450, 스티커 출력 451보다 앞 = 첫 항목). 권한행은 만들지 않는다 — 자사(company_type='1')는 명시 row 없으면 신규 메뉴 자동 허용, 업체 계정은 기본 차단이 맞다(생산 프로그램).

산출물·커밋

검증(테스트 8001 → 운영 pfs.poin.co.kr 동일 3건 재실행, 전부 PASS) - 사이드바 = 생산 그룹 1번 PNCAD /production/pncad/ target=_blank, 2번 스티커 출력. - 앱 로드 = 카탈로그 165종(그리드 166) · 트리 299노드 · 콘솔 에러 0 · 현장목록 src=live (테스트 1,973건 / 운영 1,988건, data/fields.json 요청 0 = 스냅샷을 안 탄다). - 비로그인 = 페이지·schema.js·data/fields.json 전부 로그인 페이지 반환, 데이터 유출 0. /static/pncad/... 우회 = 404. - 사이트맵 재빌드 = 그룹 8 · 페이지 53 · 미반영 0 · PNCAD state=same·menu_in_live=true. - 검증 스크립트 = scratchpad pncad_check.py(로드·현장소스) · pncad_menu_check.py(사이드바 순서·target).

2차 — 작업본 서버 저장 (같은 세션, 페페 지적 후속)

페페 지적 = "기존 작업분 로드에 대한 프로세스가 안 보인다. 상단바에 저장되었음 텍스트가 있으면 좋겠다. JSON 현장저장은 남겨두되 기본은 단순 저장버튼으로 DB 또는 미니PC 저장소에서 자동 관리."

그릴링 2문 → 페페 결정 ①저장소 = PFS DB 1테이블 ②단위 = 현장 + 작업명 여러 벌. ⚠ 미니PC 안은 코디가 배제 근거를 제시했다 — 운영 PFS 는 AWS EC2 라 사내 미니PC(100.108.234.45)로 못 간다(Tailscale 없음). 개발본 8799 에서만 돌아 현업에 못 쓴다.

구성 = api/pfs/pncad/{controller,dao} + pncad_scene 테이블 + 상단바 3버튼·저장 상태 텍스트. 🔑 멱등 ensure_table() 패턴이라 SSM DDL 스크립트가 없다(company_vacation 선례) — 운영 DB 작업이 코드 배포 하나로 끝난다. data 는 통짜 JSON 이라 목록 SELECT 에서 항상 뺀다. JSON 파일 저장·열기는 백업·외부 전달용으로 유지, 파일에서 연 씬은 STO.no=null 로 끊는다.

검증 = 신설 E2E pncad_store_check.py 12건(초기상태·변경감지·저장·목록·열기·복원·덮어쓰기· 장수갱신·삭제) 테스트·운영 양쪽 ALL PASS, 콘솔 0. 단독 8799 는 안내 후 JSON 폴백 PASS. 커밋 = pfs master 1d626e8 → deploy-live 98a8514 · pncad c0d604b. 사이트맵 공용API 3→4.

🔴 E2E 가 실제로 잡은 버그 = 불러오기 직후 「변경됨」loadScene 이 clean 을 찍은 뒤 rebuild() 안의 save() 가 dirty 로 되돌렸다. clean 표시를 재렌더 뒤로 옮겨 해결(회귀 고정).

다음

관계