980d7d905d
Stack
- Next.js 15 (App Router) + TypeScript + Drizzle ORM + postgres-js
- Node scrypt for password hashing; PBKDF2 verifier for legacy gnuboard5 hashes
- pnpm workspace monorepo: apps/web + packages/{db,auth,themes,...}
Themes (admin-selectable at /admin/themes)
- basic : 그누보드 default reproduction (light, blue accent)
- eyoom : eb4_maga_005 매거진 reproduction (dark, orange accent, ranking sidebar)
- amina : Aminam Builder reproduction (light, violet gradient, card grid)
- youngcart : 영카트 shop reproduction (red accent, search bar, category nav)
DB
- New schema (12 tables) pushed to PG via drizzle-kit: members, sessions, boards,
posts, point_ledger, app_settings, bacara_*, lottery_tickets, roulette_spins,
game_points, board_groups
- Legacy data still readable from inspection2 schema via @slot/db/legacy
Verified end-to-end against the migrated DB on localhost:3000:
- Home renders with active theme tokens injected as CSS variables
- /free lists 442K real posts from inspection2.g5_write_free
- Login (testlogin/test1234) issues session cookie, header switches to
"테스트님 환영합니다 / 로그아웃"
- Switching app_settings.theme.global from eyoom → amina swaps colors,
layout, and Korean nav labels site-wide on next request
Migration docs added: 03-migration-plan, 04-theme-architecture,
05-local-dev-setup, 06-feature-inventory.
13 KiB
13 KiB
Feature Inventory — slot-ss.com (슬롯/카지노 커뮤니티 도메인)
이 문서는 신규 시스템 (Next.js + Node.js + PostgreSQL) 으로 옮겨야 할 모든 기능을 도메인별로 정리한다. 항목당 (1) 기존 위치, (2) DB 의존, (3) 신규 패키지 매핑.
1. 회원·인증
| 기능 | 기존 | DB | 신규 패키지 |
|---|---|---|---|
| 일반 회원가입 | bbs/register*.php |
g5_member |
apps/web/auth/register |
| 로그인 / 로그아웃 | bbs/login.php, login_check.php, logout.php |
g5_member, g5_login |
packages/auth (NextAuth.js) |
| 비밀번호 찾기 | bbs/password_lost.php |
g5_member.mb_lost_certify |
apps/web/auth/recovery |
| 메일 인증 | (다양한 register*.php) | g5_member.mb_email_certify |
packages/auth/email-verify |
| 2FA OTP | plugin/ask-otp/ |
(별도 외부 OTP 서버) | packages/auth/totp |
| 본인인증 — OK-Name | plugin/okname/ |
g5_member_cert_history, g5_cert_history |
packages/auth/okname |
| 본인인증 — KCP cert | plugin/kcpcert/ |
동상 | packages/auth/kcp |
| 본인인증 — iNICert | plugin/inicert/ |
동상 | packages/auth/inicert |
| 소셜 로그인 | plugin/sns/ (Naver/Kakao/Facebook) |
g5_member_social_profiles |
NextAuth providers |
| 회원 등급 (lv 1-12) | g5_member.mb_level + g5_auth |
g5_auth |
packages/auth/permissions |
| 차단/탈퇴 | g5_member.mb_intercept_date, mb_leave_date |
동상 | 동상 |
| 회원 검색/관리 | adm/member_*.php |
g5_member |
apps/admin/members |
| 레벨/랭크 시스템 | bbs/*rank.php (12종) + lib/member.rank.lib.php |
g5_eyoom_member, 게임별 포인트 테이블 |
packages/games/ranking |
| 출석체크 | bbs/attendance.php, data/attendance.config.php |
g5_eyoom_attendance |
apps/web/attendance |
| 회원 활동 로그 | g5_eyoom_activity, writing_activity |
동상 | packages/shared/activity |
| 회원 메모 (관리자 메모) | g5_eyoom_mbmemo |
동상 | apps/admin/members/memo |
| 옐로카드 (경고) | g5_eyoom_yellowcard |
동상 | apps/admin/members/yellowcard |
2. 게시판
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 게시판 목록 | bbs/group.php, bbs/board.php?bo_table=X |
g5_group, g5_board |
apps/web/[boardSlug] |
| 글 작성/수정/삭제 | bbs/write.php, write_update.php, delete.php |
g5_write_<bo_table> |
apps/web/[boardSlug]/write + API |
| 글 보기 | bbs/board.php?bo_table=X&wr_id=N |
g5_write_<bo_table> + g5_board_file |
apps/web/[boardSlug]/[wrId] |
| 댓글 | bbs/write_comment_update.php |
g5_write_<bo_table> (is_comment) |
동상 |
| 추천/비추천 | bbs/good.php, bbs/bad.php |
g5_board_good |
API |
| 첨부 파일 업로드 | lib/board.lib.php |
g5_board_file |
packages/shared/upload (S3) |
| 글 검색 | bbs/search.php, lib/parsing.lib.php, lib/SphinxSearch.class.php |
sphinx index | Meilisearch 또는 PG FTS |
| 인기 검색어 | bbs/popular*.php, lib/popular.lib.php |
g5_popular |
API + Redis |
| 신규글 위젯 | lib/latest.lib.php |
g5_board_new |
RSC + ISR |
| 인기글 / 추천글 | lib/eblatest.* |
g5_eyoom_* |
동상 |
| 글 임시저장 | bbs/autosave.php |
g5_autosave |
localStorage + 서버 백업 |
| 스크랩 | bbs/scrap_popin.php |
g5_scrap |
동상 |
| 1:1 문의 | bbs/qa*.php |
g5_qa_config, g5_qa_content |
apps/web/help/qa |
| 자주묻는질문 | bbs/faq.php |
g5_faq, g5_faq_master |
apps/web/help/faq |
| 메모(쪽지) | bbs/memo*.php |
g5_memo |
apps/web/inbox |
| 새창 알림 | bbs/new.php |
g5_new_win |
apps/admin/popups |
| 게시판 새글 표시 | (자동 — g5_board_new) |
동상 | 동상 |
멀티미디어 게시판 (webtoon, ai) |
board skin 변형 | 게시판 데이터 | 테마 슬롯 + <MediaGrid /> |
운영 게시판 36종
| 카테고리 | 게시판 슬러그 |
|---|---|
| 종합 / 자유 | free, humor, notice, event, column, news |
| 슬롯 후기/리뷰 | review, slotreview, pick |
| 슬롯 제조사 | slotche, slotche2~12 (프라그마틱, 플레이엔고, 릴랙스게이밍, 하바네로, CQ9 등) |
| 게임/이벤트 | lottery_ticket(슬생복권), dividend(배당), gift_coupons/gift_exchanges(기프티콘) |
| 검수/검증 | mukti(먹튀사이트), fakesite(가품사이트), complaint(먹튀신고), inspection(검수), guarantee(보증) |
| AI / 19금 | ai(AI 사진), webtoon(번역망가), rear(후방) |
| 안내 | guide, qa, reservation |
| 가짜 (테스트?) | fakes, fakeframe |
3. 슬롯/카지노 게임
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 바카라 게임 | plugin/bacara/, bbs/bacara.php |
bacara_betting |
packages/games/bacara + WebSocket |
| 바카라 랭킹 | bbs/bacararank.php |
동상 | apps/web/games/bacara/rank |
| 룰렛 게임 | roulette/index.php, plugin/roulette/ |
g5_eyoom_* |
packages/games/roulette |
| 룰렛 어드민 | adm/roulette/{roulettelist,form,rewardlist,chancelist}.php |
동상 | apps/admin/games/roulette |
| 복권 (슬생복권) | lottery/index.php, bok.php, lib/lottery.lib.php |
g5_write_lottery_ticket, lottery_history |
packages/games/lottery |
| 복권 추첨 | adm/roulette/lotterywinninglist.php |
동상 | BullMQ cron + 어드민 |
| Swiun 슬롯 API | plugin/swiunApi/ (trans_point, game, get_betlist, _config) |
swiun_betting, game_point |
packages/games/swiun |
| 게임 포인트 | (전반적) | game_point (4.4M rows), g5_point (5.9M) |
point_ledger 통합 |
| 27개 게임별 랭크 자동 업데이트 | plugin/cron/auto.{slot,bacara,marilyn,...}rankup.php (27개) |
g5_eyoom_member + 게임 포인트 |
packages/workers/jobs/rank.update.ts |
| 가짜 게임 포인트 (개발용?) | plugin/cron/fake_game_points.php |
동상 | dev-only 시드 |
4. 검수·블랙리스트 (커뮤니티 신뢰)
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 먹튀 사이트 등록/검색 | bbs/inspection.php, inspection.list.update.php, inspection.update.php, bbs/cagumsa.php(가검사) |
blacklist_table (193K), blacklist_search, check_table |
apps/web/blacklist |
| 블랙리스트 어드민 | adm/eyoom_admin/core/board/blacklist_search.php |
동상 | apps/admin/blacklist |
| 100up 블랙리스트 (구버전) | db100up/ |
동상 | (legacy, 사용 안 함) |
| 검수 로그 | writing_activity, writing_activity_bak, writing_today |
동상 | inspection_logs |
5. 포인트·환전
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 포인트 적립/사용 원장 | lib/common.lib.php::insert_point() |
g5_point |
point_ledger |
| 포인트 환전 신청 | (회원 페이지) | point_exchange, event_point_exchange |
apps/web/wallet/exchange |
| 기프티콘 교환 | bbs/giftcon*.php |
g5_write_gift_coupons, g5_write_gift_exchanges, officecon_products |
apps/web/wallet/gifticon |
| 슬롯버프 (특별 보상) | bbs/slotbuff*.php |
slotbuff, slotbuff-category |
apps/web/wallet/slotbuff |
| 베팅 어드민 | adm/betting_list.php, betting_list_update.php |
bacara_betting, swiun_betting, game_point |
apps/admin/betting |
6. 영카트 쇼핑몰 (현재 데이터 거의 없음, 기능은 보존)
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 상품 등록/수정 | adm/shop_admin/item_*.php |
g5_shop_item, g5_shop_item_option |
apps/admin/shop/items |
| 카테고리 | shop/list.php, adm/shop_admin/categoryform.php |
g5_shop_category |
apps/admin/shop/categories |
| 브랜드 | shop/brand.php |
(g5_shop_item.it_brand) |
동상 |
| 장바구니 | shop/cart.php |
g5_shop_cart |
apps/web/cart |
| 주문/결제 | shop/orderform*.php, shop/inicis/* |
g5_shop_order, g5_shop_order_data, g5_shop_inicis_log |
apps/web/checkout |
| 결제 게이트웨이 — 이니시스 | shop/inicis/, shop/kcp/ |
동상 | packages/shop/payments/inicis |
| 결제 게이트웨이 — KCP | shop/kcp/, plugin/kcpcert/ |
동상 | packages/shop/payments/kcp |
| 결제 게이트웨이 — LG U+ | plugin/lgxpay/ |
동상 | packages/shop/payments/lgxpay |
| 쿠폰 | g5_shop_coupon, g5_shop_coupon_zone, g5_shop_coupon_log |
동상 | apps/web/coupons |
| 위시리스트 | shop/wishlist.php |
g5_shop_wish |
동상 |
| 상품 후기 | shop/itemuse*.php |
g5_shop_item_use |
동상 |
| 상품 Q&A | shop/itemqa*.php |
g5_shop_item_qa |
동상 |
| 재입고 SMS | g5_shop_item_stocksms |
동상 | packages/shop/restock-notify |
7. SMS / 메일 / 알림
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| SMS 발송 (Aligo) | plugin/sms5/, data/aligo-sms.data |
sms5_* (book, book_group, config, form, form_group, history, write) |
packages/notify/sms |
| 이메일 발송 | plugin/PHPMailer/ |
g5_mail |
packages/notify/email (Resend/SES) |
| 푸시 알림 | plugin/notifier/, g5_plugin_notifier_hist |
동상 | packages/notify/push (Web Push) |
| Slack 알림 | plugin/slack/ |
— | packages/notify/slack |
8. 챗봇 (AI)
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 챗봇 대화 | plugin/chatbot/api_proxy.php, view.php, script.js, style.css |
chatbot_conversations |
packages/chatbot (OpenAI/Anthropic) |
| 챗봇 피드백 | plugin/chatbot/feedback.php |
chatbot_feedback |
동상 |
| 챗봇 로그 | plugin/chatbot/log.php |
동상 | 동상 |
9. SEO·마케팅
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| SEO 메타 (페이지/게시판별) | data/eyoom.seocfg.php, theme/.../meta_config.php, theme/.../seo.map.php |
ask_seo, ask_seo_url |
packages/shared/seo + Next.js metadata API |
| robots.txt / sitemap | robots.txt |
— | Next.js sitemap.ts |
| Naver Syndication | plugin/syndi/ |
— | packages/notify/naver-syn |
| Google Indexing API | google_indexing-api.php, silicon-cocoa-*.json |
— | API 라우트 |
| OG 이미지 / Twitter 카드 | head.html.php 인라인 |
— | Next.js Open Graph |
| 도메인 이력 / 도메인체크 | domainCheck.php, domainCheck2.php, ajax.domainCheck.php, DB DomainCheck |
(별도 DB, 거의 빈 상태) | apps/web/tools/domain-check (옵션) |
10. 관리자
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 관리자 대시보드 | adm/index.php |
(요약쿼리) | apps/admin/dashboard |
| 회원 관리 | adm/member_*.php |
g5_member |
apps/admin/members |
| 게시판 관리 | adm/boardgroup_*.php, board_*.php |
g5_board, g5_group |
apps/admin/boards |
| 환경설정 | adm/config_*.php |
g5_config |
apps/admin/settings |
| 메뉴 관리 | adm/menu_*.php |
g5_menu |
apps/admin/menu |
| 권한 관리 | adm/auth_*.php |
g5_auth |
apps/admin/permissions |
| 점프 (관리자 전환) | (이윰) | g5_eyoom_manager |
apps/admin/managers |
| 베팅/룰렛/복권 어드민 | (위 §3) | (위 §3) | apps/admin/games/* |
| 통계 (방문/회원/포인트) | adm/visit_*.php |
g5_visit, g5_visit_sum, g5_login |
apps/admin/stats |
| 테마 관리 (4종 선택) | (없음 — 이윰 빌더 내부) | (신규) app_settings |
apps/admin/themes |
11. 기타 / 인프라
| 기능 | 기존 | DB | 신규 |
|---|---|---|---|
| 캐시 (Sphinx Search) | lib/SphinxSearch.class.php, sphinx.conf |
sphinx index | Meilisearch |
| 캐시 (Redis) | lib/RedisCache.class.php |
redis | Redis (그대로) |
| 캐시 (파일) | lib/Cache/ |
data/cache/ |
Redis |
| 훅 시스템 | lib/Hook/ (run_event, run_replace) |
— | EventEmitter / Plugin pattern |
| reCAPTCHA | plugin/recaptcha/, plugin/recaptcha_inv/ |
— | next-recaptcha-v3 |
| 자체 캡차 | plugin/kcaptcha/ |
— | (필요 시) |
| 디버그바 | plugin/debugbar/ |
— | dev only — Next.js devtools |
| jQuery 차트 | plugin/jqplot/ |
— | Recharts / Chart.js |
| HTML 정화 | plugin/htmlpurifier/ |
— | DOMPurify (server side: sanitize-html) |
12. 도메인 데이터 통계 (현재 운영)
| 항목 | 값 |
|---|---|
| 회원 수 | 3,064 |
| 관리자 수 | 4 (admin, admin2, admin3, admin4) |
| 운영 게시판 수 | 36 |
| 총 게시글 수 (모든 g5_write_*) | ~764K |
| 자유게시판 글 / 댓글 | 90,591 / 351,685 |
| 후기게시판 글 / 댓글 | 8,399 / 112,462 |
| 먹튀사이트 글 / 댓글 | 1,824 / 35,501 |
| 가품사이트 글 / 댓글 | 1,517 / 31,609 |
| 포인트 원장 행 수 | 5,950,013 |
| 게임 포인트 행 수 | 4,383,542 |
| 슬롯 게임 회차 (games_table) | 303,238 |
| 바카라 베팅 | 7,987 |
| 복권 응모 | 45,724 |
| 블랙리스트 | 193,190 |
| 누적 방문 | 4,566,650 |
| 첨부파일 메타 | 12,606 |
| 첨부파일 실용량 (서버) | data/file 8.5GB + data/editor 74GB |