Crowny Hall — 포털 자료 첨부 연동 + 당일 콜보드 (설계 1g·1j)
개요
hall.crowny.org:9606 앱.html(내부 운영 SPA)에 서버 신규 계약 3종(
GET /api/materials,
GET /api/checkin,
POST /api/action type staff_checkin)을 소비하는 프론트 확장. 서버(서버.한선)는 병렬 세션이 배포 중이라, 배포 전에는 fetch가 404로 실패하고 기존 정적 렌더가 그대로 유지되도록(조용한 폴백) 구현.
무엇을 했는지
- 기획(planner) 모듈 — 포털 제출 자료 병합 (1j): planner 뷰 진입 시
GET /api/materials 1회 fetch → 우측 "첨부 · 자료" 목록에 기존 정적 3건 아래로 포털 제출 항목 병합. 각 항목 제목 + "포털 제출" 배지(플래너 모듈색 계열 #8F7A3E) + org 서브텍스트. 클릭: link가 http(s)://로 시작하면 window.open, 아니면 메모로 간주해 토스트 표시.
- 스태프(staff) 모듈 — 당일 콜보드 (1g): 콜 스케줄 테이블 위에 카드 신설. 뷰 진입 시
GET /api/checkin fetch → 카운트 n/22(모노) + 최근 체크인 최대 6행 + 빈 상태 문구. 우측 상세 패널에 "체크인" 버튼 추가(공석 제외) — manager|sm만 허용, 그 외 역할은 딤 처리+권한 토스트. 클릭 시 staff_checkin POST → ok:1이면 콜보드 재조회+토스트, dup:1이면 "이미 체크인됨" 토스트.
- 큐시트(cue) 헤더 — 크루 요약: SHOW/NEXT 옆에 "크루 n/22"(모노) 표기. 뷰 진입 시 1회 + 60초 간격 갱신(cue 뷰 활성 시만,
manageCheckinTick 신설 — 기존 manageCueTick/manageDashTick 패턴 따름, 뷰 이탈 시 clearInterval). fetch 실패 시 아예 미표기(state.checkin.loaded 플래그).
관련 파일
/Users/ef/crowny-hall/앱.html — 수정(상태 materials/checkin 필드, fetchMaterials/fetchCheckin/manageCheckinTick/staffCheckin/plannerOpenPortalAttachment 함수, switchView/init 훅, ACTS 2건 추가). 서버·포털·plist는 무접촉.
검증
- 인라인
<script> 추출 후 node --check 클린.
- 헤드리스 Chrome으로
#planner·#staff·#cue 스크린샷: 서버 미배포(404) 상태에서 기존 렌더 무결(정적 첨부 3건·빈 콜보드·크루 요약 미표기) 확인.
- 로컬 목(mock) HTTP 서버(19606)로 동일 계약 응답을 흉내내 활성 경로 재확인: 포털 자료 2건 병합·배지 정상, 콜보드 10/22 + 3행 표시, 큐시트 헤더 "크루 10/22" 표기 정상.
dash/booking/control 3모듈 스크린샷 재확인 — 회귀 없음.
- 크라우니코드: lookup/search MISS 2건(신규 로직) — 생성 후
crownycode-learn.sh add로 2건 학습(fetch뷰진입시자료병합폴백, 체크인콜보드폴링뷰이탈정리).
잔여 이슈
- 서버(서버.한선)의 실제
/api/materials·/api/checkin·staff_checkin 배포는 병렬 세션 담당 — 배포 후 라이브 재확인 필요(현재는 폴백 경로만 라이브 검증됨).
- 체크인 목록 정렬 기준(최신순 여부)은 서버 응답 순서에 의존 — 서버 배포 후 실데이터로 표시 순서 재확인 권장.