30e9b7a8ee
After the initial scaffold the site was missing most of the production
surface (회원가입/마이페이지/메가메뉴 카테고리/관리자/게임/포인트존/...).
This commit closes that gap and verifies every route end-to-end with
playwright screenshots (27/27 pass).
## Theme system
- Replaced eyoom theme with a higher-fidelity reproduction of the
production eb4_maga_005 layout: top utility bar (북마크/회원가입/구매내역
/추가메뉴), brand row with 로그인/내글반응/쪽지 icon stack with badges,
purple gradient mega-menu carrying 10 categories with submenus, dark
mode toggle, sticky LOGIN box + 텔레그램CS box + 태그 클라우드 + 회원
랭킹 + 방문자 stats in the sidebar, and a footer with 이용약관/개인정보
처리방침/이메일무단수집거부.
- Added IndexHome slot to the theme contract; basic/amina/youngcart got
matching implementations so theme switching keeps working.
- Layout now consistently provides the right-rail sidebar on public pages
and hides it on /login, /register, /mypage and /admin (admin uses its
own left rail).
## Pages added
- Auth: /register (with API-backed insert into the new members table),
/auth/recover (id+password recovery shells).
- /mypage dashboard with 12 sub-routes.
- /memo, /bookmarks, /new, /tags, /tag/[tag], /profile/[nick].
- 10 mega-menu landing pages: /guarantee, /guarantee/apply, /mukti,
/complaint, /inspection, /fakesite, /event, /lottery_ticket,
/gift_coupons, /gift_exchanges, /notice; /games (bacara, fortunes,
fivetreasures, slot, roulette, ranking); /wallet (+ exchange,
point-exchange, slotbuff); /tv; /guide (+ community/pointgame/mukti/tv);
/help/qa, /help/faq.
- Static pages: /page/provision, /page/privacy, /page/noemail,
/page/aboutus, /page/manual, /page/attendance.
- Per-board: /[slug]/write, /[slug]/[wrId]/edit, /[slug]/search.
## Post interactions (wired against legacy g5_* tables)
- POST /api/posts/create — insert into inspection2.g5_write_<slug>
- POST /api/posts/[id]/comment — insert is_comment row + bump wr_comment
- POST /api/posts/[id]/good|bad — bump wr_good/wr_nogood + g5_board_good
- POST /api/posts/[id]/scrap — insert g5_scrap
- POST /api/posts/[id]/report — write into writing_activity
- POST /api/posts/[id]/delete — owner+admin gate, soft-delete row
- POST /api/ui/dark-mode — flip slot_dark cookie
## Admin
- /admin layout with left nav (10 sections) gated by member level >= 10.
- /admin — dashboard with live counts pulled from PG
- /admin/members — searchable member list with status badges
- /admin/boards — board roster with post/comment counts
- /admin/betting — bacara/swiun/game-point counters + recent feed
- /admin/stats — 14-day visit chart + top boards + level histogram
- /admin/themes — 4-theme picker (already existed, now polished)
- /admin/{menu,permissions,points,games} — stubs for M5
## Infra fixes
- Postgres pool hoisted onto globalThis so HMR doesn't leak connections
("sorry, too many clients already" 500s).
- Removed broken Next.js redirects() entry that prevented dev from booting.
## Verification
- scripts/screenshot.mjs: pre-logs-in as admin/test1234, then captures 27
pages + 4 theme variants of /. All 200, all rendered. PNGs committed
under next-app/screenshots/ for review.