이 목업은 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>
177 lines
9.3 KiB
Markdown
177 lines
9.3 KiB
Markdown
# /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²) · 객실 시설 추가
|
||
|
||
**기타**
|
||
- 오늘의 엽서에 지도 링크 추가
|
||
- 이용 정보 맨 아래 가로선 제거
|