← 목록
기타 2026-07-23 5KB 읽기 5분

Crowny INT — 기관 레지스트리 데이터 기반 한글 아이디 인증 + 기관 현황 페이지

개요

data/기관.psv(98개 기관 레지스트리)를 INT서버.한선에 연결해 경기도청/용인시청/고양시청 한글 admin 로그인을 활성화하고, GET /api/orgs·/api/orgs/summary·/orgs 기관 현황 페이지를 신규 추가했다.

무엇을 했는지

  1. INT서버.한선
- top-level 파싱 블록 추가: data/기관.psv(98행, ~10KB — 읽기() 64KB 절단 안전)를 로드해 parallel 배열(_기관광역/시/구/유형/명/ID/역할/구축)로 저장. - _계정조회(id): 기존 하드코딩 계정(yongin/guseong/flexdev/m1~m10) 뒤에 경기도청(int-0000)/용인시청(int-2580)/고양시청(int-3100) 3개 admin 상수 분기 추가 → MISS면 레지스트리 스캔 폴백(found/role/org/built 반환, pw는 설정 안 함 → 로그인 시 자동 403). - _라이브권한(id): 경기도청·용인시청·고양시청 추가(송출 가능, 고양시 모드 지원). - _처리기관목록/GET /api/orgs: 98개 기관 JSON 배열(gwang/si/gu/type/name/id/role/built). - _처리기관요약/GET /api/orgs/summary: total/built/unbuilt + byCity(awk 집계, 정적 config파일만 대상, 요청입력 무보간)/byType. - GET /orgs 라우트 → public/기관현황.html 정적 서빙.
  1. public/기관현황.html (신규) — 브라운 다크 팔레트, 인라인 스타일, 바닐라 JS. 요약 배지(총/구축/미구축 + 시별/유형별) + 필터 칩(시/유형/구축여부) + 시>구>유형 그룹 목록(기관명·아이디·역할·구축배지). "미구축=현장 하드웨어 미설치" 안내문.
  2. public/기관현황.한선 (동반) — 필터 라벨·유형매칭("시청·도청" 복합 매칭)·배지색 로직 미러 + data/기관.psv 정합 검증 14 assert PASS.
  3. public/기관레지스트리-판정.한선 (동반, [동반] 항목) — 아이디→기관 조회·구축여부 판정·시별 카운트 미러. 셀프테스트 13 assert PASS.
  4. public/guide.html — 페이지 맵에 "기관 현황"(/orgs) 카드 추가, 계정표에 경기도청/용인시청/고양시청 한글 admin 3행 추가, "고양시 모드" 안내문(고양시 44개 동 관할, 현재 전부 미구축) 추가. public/guide.한선 companion도 동기화(계정 6행·페이지 9개·고양시_관할동수=44 검증 추가).

검증 (전부 실측)

  • CROWNY_STRICT=1 hanseonc_high INT서버.한선 → 경고 0 (39588 cubes).
  • 테스트 인스턴스(INT_ROOT=/tmp/into, INT_MODE=main, INT_PORT=9572):
  • 용인시청/int-2580·고양시청/int-3100·경기도청/int-0000 로그인 → 전부 {"ok":true,"role":"admin",...}.
  • 틀린 pw 3종 → 전부 403.
  • 미구축 기관(주교동) 로그인(빈pw/임의pw) → 전부 403(리스트 전용 확인).
  • 기존 계정 회귀: yongin/int-2580, m2/int-1111 → 정상 로그인.
  • GET /api/orgs → 98개(built=true 12·false 86), sample row 정합.
  • GET /api/orgs/summary → total 98·built 12·unbuilt 86·byCity(용인시 46/built10, 고양시 51/built1)·byType 6종 정확.
  • GET /orgs → 200(<title>CROWNY INT — 기관 현황</title>), GET /guide → 200("기관 현황" 링크 확인).
  • 회귀: /health 200, /module 200, /api/live 200, /api/fire(X-INT-KEY 없이 403은 기존 인증 사양 — 헤더 포함 시 200) 정상.
  • 고양시청 토큰으로 /api/live/start·stop → 정상(송출 권한 확인, "고양시 모드").
  • lsof -ti tcp:9572 kill 정리 완료.
  • 기관현황.html: 인라인 <script> 추출 후 node --check PASS, class= 0건, 팔레트 색상 전부 기존 브라운 다크 톤(guide.html과 동일 계열).
  • 기관레지스트리-판정.한선: 13/13 PASS. 기관현황.한선: 14/14 PASS. guide.한선: 계정/페이지/고양시_관할동수 검증 PASS(단, 기존부터 있던 모듈개수 검증은 7+3=10인데 기대값이 12로 하드코딩된 pre-existing 버그 발견 — 이번 작업 범위 밖이라 미수정, 후속 세션 참고용으로 기록).
  • 관련 파일

    • /Users/ef/crowny-int2/INT서버.한선
    • /Users/ef/crowny-int2/public/기관현황.html
    • /Users/ef/crowny-int2/public/기관현황.한선
    • /Users/ef/crowny-int2/public/기관레지스트리-판정.한선
    • /Users/ef/crowny-int2/public/guide.html
    • /Users/ef/crowny-int2/public/guide.한선
    • /Users/ef/crowny-int2/data/기관.psv (무수정, 정본)

    잔여 이슈

    • guide.한선의 모듈개수 검증 기대값(12)이 실제 배열 합(7+3=10)과 불일치하는 pre-existing 버그(내 변경분과 무관, 미수정).
    • 라이브 배포/게이트웨이 배선은 이번 작업 범위 밖(신규/수정 파일만, 배포는 호출자 몫).
    • 크라우니코드: lookup MISS 3건("PSV 레지스트리 파싱 배열"/"기관 조회 로그인"/"필터 칩 페이지 구조") → 직접 생성 3건 → learn 추가 3건(psv레지스트리로드_기관데이터/계정조회_레지스트리폴백_로그인pw없음403/awk시별유형별집계_JSON응답).