o2o-site-AEO/solution/site/scripts/mockup/REVIEW-2026-09-11.md
Mina Choi 43ba33dd65 [feat] site/scripts: /s/stay 시연본 조립 도구 일습 — 일정 생성기·주입분·검증
이 목업은 payload 가 없어 프리렌더 재굽기 대상이 아니다 — `index.html` 한 장이 유일본이고
자산이 지워지면 사람이 되돌려 넣어야 한다(CLAUDE.md 의 ★★ 함정). 지금까지 그 한 장을
이 맥에서만 만들고 있었다. 다른 사람이 이어받을 수 있도록 재료를 전부 올린다.
`build/index.html` 은 생성물이라 이그노어 그대로다 — `patch_stay.py` 로 다시 나온다.

- build_itinerary.py: 테마 21개 일정 생성. 좌표에서 이동시간을 계산하고(도보 4km/h,
  1.5km 초과는 차 25km/h + 주차 5분) 입·퇴실·끼니 창을 맞춘다. 규칙 14종 감사가
  **빌드 안**에 있어 하나라도 어기면 payload 를 쓰지 않고 멈춘다 — 검사가 빌드 밖에
  있던 동안 뼈대를 고칠 때마다 안 보는 규칙이 생겼다(2026-09-11 REVIEW)
- build_story.py: 노래 25곡·인물 57명. 사진은 위키백과 문서 pageimages 만 믿는다
  (이름 검색은 동명이인을 끌고 온다 — 이수현→걸그룹, 박성현→골퍼)
- patch_stay.py: 캐치프레이즈 100개·자작곡 5곡·객실 사진(A동 12/B동 10)을 넣고
  payload 를 갈아 끼운 뒤 inject.css/js 를 `</body>` 앞에 주입해 index.html 을 짠다
- inject.js/css: React 가 다시 그려도 살아남아야 하는 다섯 가지(캐치프레이즈 순환·
  헤더 미니 플레이어·지도 링크·사진 저작자 표시·카로셀 제어). `#root` 밖에 둔다
- audit-all.mjs / rails-test.mjs: 실제 브라우저로 34종 검사, 레일 13개 자동 넘김 전수
- README.md: 이어받는 사람이 먼저 읽는 문서. 배포·함정·§7 "내가 틀렸던 6가지"
- PROMPTS.md / TEXT.md / REVIEW-2026-09-11.md: 문구 생성 프롬프트 · 전체 텍스트 · 검수 보고

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 10:28:52 +09:00

177 lines
9.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# /s/stay 시연본 — 무엇이 잘못됐고 무엇을 고쳤나
작성 2026-09-11 · 대상 `https://web4ai.o2osolution.ai/s/stay`
**컨펌 요청**: 아래 3장을 보고, 틀린 판단이 있으면 짚어 주세요. 컨펌 후 킹서버에 올립니다.
---
## 1장. 사장님이 찾은 것 — 스케줄이 왜 말이 안 됐나
### 잘못된 것
| # | 증상 | 몇 건 |
|---|---|---|
| A | **`아침 · 스테이 머뭄` 다음 칸이 `체크아웃 · 스테이 머뭄`** — 같은 자리에 두 칸이 연달아 섰다. 그 사이에 손님은 아무 데도 가지 않는다 | 1건 |
| B | **마지막 날 머뭄이 3번**(아침 · 체크아웃 · 마무리) — 하루의 절반이 숙소 칸 | 21건 |
| C | 마지막 날 섬 코스가 **저녁도 없이 19:14 에 돌아와 짐만 찾고 끝** | 1건 |
| D | 아침 칸이 **2시간 14분** — 끼니 시각을 맞추려고 앞 칸을 늘리다 생긴 값 | 1건 |
### 왜 이렇게 됐나
**A·B 의 원인은 하나입니다.** 사장님이 "1번은 스테이 머뭄이어야 한다"고 하셔서 하루의 첫 칸에
`아침 · 머뭄` 을 넣었습니다. 그런데 마지막 날 뼈대에는 **이미** `체크아웃 · 머뭄` 과
`마무리 · 머뭄` 이 있었습니다. 첫 칸만 보고 넣었고, **그 하루 전체를 다시 읽지 않았습니다.**
그래서 머뭄이 3번이 됐고, 그중 둘이 붙어 있는 날이 생겼습니다.
**C·D 는 검사에 그 항목이 없어서** 통과했습니다. 저는 그때까지 "끼니 시각 · 이동시간 ·
21시 초과" 만 봤고, "하루에 저녁이 있는가", "한 칸이 지나치게 길지 않은가" 는 세지 않았습니다.
### 고친 것
- **마지막 날 아침과 퇴실을 한 칸으로 합쳤습니다.**
`아침 · 스테이 머뭄 (75분)` — "아침을 차려 먹고 11시 전에 퇴실합니다. 짐은 맡겨 두고
나섰다가 저녁에 찾아 가세요." → 하루가 **머뭄 → 바깥 3~4곳 → 머뭄** 으로 정리됩니다.
- **섬 가는 마지막 날**은 바깥 정거장을 둘로 줄였습니다(퇴실 → 선유도 → 늦은 점심 → 마무리).
왕복 두 시간이라 그 이상은 못 넣습니다.
- **아침 상한을 110분**으로 내렸습니다.
### 지금 상태 (예: 걸어서만 도는 1박 2일)
```
첫째 날 15:00
15:00–15:49 체크인 · 스테이 머뭄
15:52–16:37 오후 · 히로쓰 가옥 (3분 이동)
16:41–17:26 오후 · 초원사진관 (4분 이동)
17:30–18:22 저녁 · 일흥옥 (4분 이동)
18:35–19:17 밤 산책 · 군산 내항 (13분 이동)
19:33–20:05 머뭄으로 · 스테이 머뭄 (16분 이동)
둘째 날 09:20
09:20–10:39 아침 · 스테이 머뭄 ← 퇴실까지 이 칸에서 끝냅니다
10:49–11:36 오전 · 군산근대건축관 (10분 이동)
11:40–12:32 점심 · 한일옥 (4분 이동)
12:36–13:02 오후 · 우체통거리 (4분 이동)
13:10–13:52 마무리 · 스테이 머뭄 (8분 이동)
```
### 하루에 머뭄이 3번인 날이 아직 있습니다 — 의도한 것입니다
`아침 → … → **쉼**(머뭄) → 저녁 → 머뭄으로` 형태입니다.
점심은 늦어도 13:30, 저녁은 일러도 17:30 입니다. 그 사이 **네 시간**을 바깥 두 곳으로는
못 채웁니다. 억지로 채우면 골목 하나에 두 시간 세우게 되고(전에 실제로 그랬습니다),
독채 펜션에 묵는 손님은 그 시간에 실제로 들어와 쉽니다. **다만 머뭄 칸이 연달아 서는 일은
이제 없습니다.** 이게 아니라고 보시면 오후 정거장을 하나 더 넣는 쪽으로 바꾸겠습니다.
---
## 2장. 같은 실수가 다시 안 나오게 한 것
**원인은 "검사를 안 했다" 가 아니라 "검사가 빌드 밖에 있었다" 입니다.**
지금까지 규칙 검사를 매번 그때그때 쓴 일회용 스크립트로 돌렸습니다. 그래서 뼈대를 고칠 때마다
**이번에 안 본 규칙**이 생겼고, 그걸 사장님이 화면에서 먼저 찾으셨습니다.
이제 검사를 **일정 생성 스크립트 안**에 넣었습니다
(`solution/site/scripts/mockup/build_itinerary.py`).
규칙을 하나라도 어기면 **payload 파일을 아예 쓰지 않고 빌드가 멈춥니다.**
검사하는 규칙 14종:
| | 규칙 |
|---|---|
| 1 | 하루의 첫 칸과 마지막 칸은 스테이 머뭄 |
| 2 | **같은 자리가 연달아 서지 않는다** ← 이번에 걸린 것 |
| 3 | 가운데 머뭄 칸은 '쉼'·'쉬는 날' 뿐 |
| 4 | 이동시간 = 좌표에서 계산한 값 (도보 4km/h, 1.5km 초과는 차 25km/h + 주차 5분) |
| 5 | 입실 15:00 이후 · 점심 11:30–13:30 · 늦은 점심 13:00–15:00 · 저녁 17:30–20:00 · 밤 산책 18:30–20:00 |
| 6 | 퇴실은 11:00 전 |
| 7 | 21:00 초과 금지 (넘는 칸은 렌더러가 조용히 버립니다) |
| 8 | 끼니 자리에는 먹는 곳만 |
| 9 | 같은 날 같은 식당 두 번 금지 |
| 10 | 한 테마 안에서 같은 곳 반복 금지 |
| 11 | "비가 와도 되는" 테마는 실내만 |
| 12 | "걸어서만/차 없이" 테마에 차가 필요한 곳 금지 |
| 13 | 1박 2일 = 2일, 2박 3일 = 3일 |
| 14 | 아이 동반 테마에 술집 금지 |
현재 **21개 테마 · 위반 0건**.
---
## 3장. 앞으로 저에게 어떻게 지시하시면 되는지
제가 이번에 반복한 실수는 두 종류였습니다. 각각에 대응하는 지시 방법을 적습니다.
### ① "고쳐" 라고만 하면 저는 **그 한 줄만** 고칩니다
이번 예: "1번은 머뭄이어야지" → 첫 칸만 넣고 그 하루 전체를 다시 안 읽었습니다.
**이렇게 말씀해 주시면 됩니다**
> "X 고치고, **그 화면 전체를 다시 훑어서** 같은 종류로 이상한 데 있으면 같이 잡아."
'같은 종류'라는 말이 있으면 저는 한 건이 아니라 그 규칙을 어긴 **전수**를 찾습니다.
### ② 제가 "확인했다"고 할 때 **무엇으로** 확인했는지 물어 주세요
이번에 빨간 줄 건에서, 저는 **코드에서 빠진 것만 보고** "고쳤다"고 말씀드렸습니다.
화면으로 확인하지 않았습니다. 그건 제 잘못입니다.
**이렇게 말씀해 주시면 됩니다**
> "브라우저로 열어서 확인하고 말해."
> "검증 결과를 숫자로 보여줘."
지금은 playwright 로 실제 화면을 열어 확인합니다
(`scripts/mockup/verify.mjs` · `player.mjs`). 앞으로 "확인했다"는 말에는 **무엇을 몇 건 셌는지**
같이 적겠습니다.
### ③ 규칙을 주실 때는 "예외"까지 같이 주시면 한 번에 끝납니다
이번 예: "1번은 머뭄" → 마지막 날 퇴실은 어떻게 되는지가 안 정해져 있었습니다.
그래서 제가 임의로 칸을 하나 더 만들었고, 그게 연속 칸이 됐습니다.
**이렇게 말씀해 주시면 됩니다**
> "1번은 항상 머뭄. **단 마지막 날은 퇴실이 있으니 그건 네가 판단해서 제안하고 물어봐.**"
### ④ 판단이 갈리는 자리는 제가 먼저 여쭙겠습니다
지금 갈릴 수 있는 자리는 이것입니다 — **오후에 숙소로 돌아와 쉬는 칸(위 1장 마지막)**.
넣는 게 맞는지 빼는 게 맞는지 사장님 판단을 듣고 정하겠습니다.
---
## 참고 — 이번 작업에서 바뀐 것 전체 (메일용)
**여행 일정 (추천 일정)**
- 테마 21개 전부 다시 짬. 모든 일정이 **스테이 머뭄에서 출발해 스테이 머뭄으로 복귀**
- 하루가 오전만 있고 끝나던 것 → **오전·점심·오후·저녁이 다 있는 하루**로
- 이동시간을 좌표에서 계산 (전에는 담 하나 건넌 곳이 8분, 45분 걸리는 섬이 10분이었음)
- 체류시간을 장소별로 (전에는 '오후' 칸이면 무엇이든 90~115분이라 골목에 2시간 서 있었음)
- 입실 15:00 · 퇴실 11:00 · 끼니 시각을 규칙으로 못박음
- 정거장 설명을 "그곳이 무엇인지" → **"거기서 무엇을 하는지"** 로 전부 교체
- 정거장 사진 제거(카드가 너무 길어짐), 정거장마다 **네이버 지도 링크** (191개)
- "숙소에서 조용히 쉬는 날" 테마 추가
**가요 다방**
- 군산을 노래한 **25곡**으로 교체 (곡명·가수·작사·작곡·연도·유튜브 링크·출처)
- 숙소가 만든 곡은 이 섹션에서 뺌 — 도시의 노래를 모으는 자리라서
**인물 열전**
- **57명** (위키백과 '군산시 출신' 분류 · 각자 문서 링크)
- 사진 **17장** — 자유 라이선스가 확인된 것만. 저작자 표시를 화면에 남김(라이선스 조건)
**음악 플레이어 (신규)**
- 헤더 안 카세트 아이콘 + 재생/멈춤 + 목록. 재생 중에는 카세트 릴이 돎
- 머뭄이 만든 곡 5곡, **랜덤 재생**
- 목록: 곡별 판 · 제목 · 가수 · 재생 중 막대 애니메이션, **모바일 전용 레이아웃**
**캐치프레이즈 (신규)**
- 100개 (일반 40 · 계절 24 · 월 24 · 날씨 12), 7초마다 단어 단위 애니메이션으로 교체
- 계절/월/실시간 날씨에 맞는 문구가 섞여 나옴
**객실 안내**
- 야놀자 등록본 사진으로 전면 교체 — **A동 12장 · B동 10장** (등록본이 객실에 붙여 둔 순서 그대로)
- 침대 구성(A동 퀸 / B동 킹) · 면적(A동 52m²) · 객실 시설 추가
**기타**
- 오늘의 엽서에 지도 링크 추가
- 이용 정보 맨 아래 가로선 제거