# crossword 문학 가로세로 낱말풀이 — 정적 사이트. 왼쪽 탭에서 편을 골라 본 프레임에서 바로 푼다. - 공개 주소: https://crossword.plpark.ectech.co.kr - 내부 주소: http://192.168.0.216:31380 (NodePort) ## 수록 편 | 탭 | 경로 | 격자 | 항목 | |---|---|---|---| | 러시아 문학 | `/russian.html` | 9 × 9 · 40칸 | 13 | | 영국 문학 | `/british.html` | 9 × 9 · 39칸 | 12 | 각 페이지는 단독으로 열어도 동작한다. 셸(`/`)의 탭은 해시로 상태를 남기므로 `/#russian`, `/#british` 로 바로 들어갈 수 있고, 탭을 다시 눌러도 풀던 내용은 유지된다. ## 구성 | 경로 | 설명 | |---|---| | `site/index.html` | 셸 — 왼쪽 탭(좁은 화면에서는 위쪽 탭) + 게임을 띄우는 iframe | | `site/russian.html` | 러시아 문학 편 (머리말 + 퍼즐 데이터) | | `site/british.html` | 영국 문학 편 (머리말 + 퍼즐 데이터) | | `site/assets/crossword.css` | 두 편이 공유하는 화면 양식 | | `site/assets/crossword.js` | 두 편이 공유하는 게임 엔진 (한글 IME 입력, 검사/힌트/타이머) | | `nginx/default.conf` | nginx 설정 (8080 리슨, `/healthz` 헬스체크) | | `Dockerfile` | nginx:1.27-alpine 정적 서빙 이미지 | | `k8s/deployment.yaml` | Deployment + NodePort Service (31380) | | `Jenkinsfile` | Checkout → 이미지 빌드/푸시 → kubectl apply | Spring Boot 등 런타임은 없음. HTML/CSS/JS 만으로 동작하는 완전 정적 사이트라 nginx 로 파일만 내려주면 끝. ## 편을 추가할 때 1. `site/<편>.html` 을 기존 편 하나를 복사해 만든다. 고칠 곳은 ``, 머리말(`.eyebrow` / `h1`), 그리고 `const PUZZLE = {...}` 뿐이다. 2. `site/index.html` 의 `PAGES` 객체와 `.nav` 링크에 한 줄씩 추가한다. `PUZZLE` 규약: - `size` — 격자 한 변 (9) - `grid[r][c]` — 정답 음절, 빈 칸은 `null` - `nums[r][c]` — 칸에 찍히는 번호, 없으면 `0`. 길이 2 이상 구간의 시작 칸에 좌→우 · 위→아래 순서로 붙인다 - `entries[]` — `{num, dir:"A"|"D", r, c, answer, clue, kind}` **가로·세로로 길이 2 이상 이어지는 모든 구간은 반드시 `entries` 에 단서와 함께 등록돼 있어야 한다.** 우연히 생긴 두 글자 구간이 남아 있으면 그 칸을 채워도 완료 판정이 나지 않는 것처럼 보이므로, 격자를 새로 짜면 이 조건을 먼저 확인한다. ## 배포 Jenkins 잡(`crossword`)을 돌리면 아래가 순서대로 진행된다. 1. gitea `plpark/crossword` main 브랜치 체크아웃 2. `gitea.plpark.ectech.co.kr/plpark/crossword:<BUILD_NUMBER>` 빌드 & 푸시 3. `plpark-int-ns` 네임스페이스에 apply, rollout 대기 Jenkins credentials 는 기존 loggen/pilot1 과 동일하게 `gitea-registry`(usernamePassword), `rancher-kubeconfig`(file) 를 사용한다. ## 프록시 (NPM) `https://npm.ectech.co.kr` 에서 Proxy Host 추가: - Domain Names: `crossword.plpark.ectech.co.kr` - Scheme: `http` - Forward Hostname / IP: `192.168.0.216` - Forward Port: `31380` - Block Common Exploits / Websockets Support: ON - SSL: Let's Encrypt 발급 + Force SSL + HTTP/2 ## 콘텐츠 수정 `site/` 아래만 고치고 커밋 → Jenkins 빌드. 그 외 변경 필요 없음.