Extras · 사양 외 기능

사양서에 없는 부가기능

기능 사양서·스토리보드에 적지 않았지만 Zenith(manifast-platform)에 들어간 부가·운영 기능입니다. 에이전트가 이런 기능을 넣으면 요청 없이도 여기에 남깁니다.

구분 · 사양서·스토리보드= 제품 본기능. 부가기능 = 버전 뱃지·DX 등 사양에 없는 것. 함정·결정은 주요확인사항, 버그는 버그 리포트.

부가기능 목록 (8)

e08002026-08-11트레이드 UI

태블릿(721–1100) 차트 아래 주문 · 호가 100% 2단

접이식·태블릿은 PC 셸을 쓰되 세로 순서를 차트 → 주문 → 호가(2단 가로 100%) → 미체결. 모바일(≤720)은 그대로.

적용됨

설명

workspace-main·main-grid는 display:contents로 풀고 order로 재배치. PC(1101+) 3열은 유지.

위치

manifast-platform: useIsTablet · trade-shell--tablet · globals.css 721–1100

e07002026-08-11운영 · ingest · trade-api

Helius RPC 실패 텔레그램 알림

서버가 Solana RPC(Helius) 호출에 실패하면 한국시간·에러 원문을 텔레그램으로 보낸다. 같은 유형은 5분에 1통.

적용됨

설명

그룹 방은 필수 아님. 봇 DM /start 후 chat id. 개발/운영 봇·채팅 분리. 토큰은 .env·Railway만, 깃 금지.

위치

manifast-platform: shared telegramAlert · ingest fillIndexer/marketWatcher · trade-api rpcRespond

e06002026-08-06트레이드 UI · trade-api

Solana RPC 장애 상단 배너

RPC 쿼터·한도·연결 문제로 잔고·미체결·주문이 실패하면 헤더 아래 노란 배너로 안내한다.

적용됨

설명

trade-api는 해당 에러에 HTTP 503 + code RPC_UNAVAILABLE. 웹은 잔고·openOrders·주문 상태 메시지를 모아 판별. PC·모바일 공통. 차트 mid 끊김만으로는 뜨지 않음(ingest 쪽 별도).

위치

manifast-platform: RpcIssueBanner · shared rpcErrors · trade-api rpcRespond · wallet/orders/tx controllers

e05002026-08-06PERF · 모바일

모바일 PERF HUD 최소(FPS만) 기본

≤720px에서 PERF 오버레이는 기본으로 FPS만 작게 표시. PERF 탭으로 펼치면 Frame·Heap·DOM.

적용됨

설명

PC는 기존 전체 메트릭. 개발 모드 또는 ?perf=1 일 때만 표시(기존과 동일).

위치

manifast-platform: WebPerfHud.tsx · globals.css perf-hud--mini

e04002026-08-06지갑 · 헤더

Phantom 전용 지갑 + 연결 해지 확인 모달

Select Wallet은 Phantom만. 미설치 시 설치 안내(모바일 Play Store·딥링크). 연결된 주소 클릭 시 즉시 해지하지 않고 Disconnect 확인 모달.

적용됨

설명

PC·Android 중심. Wallet Standard + Phantom 주입 provider. localStorage로 주소 유지·silent restore. 일반 모바일 브라우저는 앱 설치를 감지할 수 없어 인앱 browse 딥링크로 유도(c0600). 해지 모달은 유저용 연결 해제만(Phantom Connected apps 철회는 앱 설정에서만 가능). iPhone은 추후.

위치

manifast-platform: apps/web phantomSolana.ts · SelectWalletModal · DisconnectWalletModal · useTradeSession

e03002026-08-05realtime · 통계

하루 총 방문자(탭/SSE 연결) Mongo 집계

헤더 Online용 `/presence/stream`이 연결될 때마다 당일(KST) 누적 연결 수를 Mongo에 저장한다. 유니크 유저가 아니라 탭/SSE 연결 횟수.

적용됨

설명

컬렉션 `daily_visitors` — `_id`/`date` = YYYY-MM-DD(Asia/Seoul), `count`는 presence SSE 연결마다 +1(탭 닫아도 감소 없음). 시각은 `updatedAtTs`(Unix ms, 로직) + `updatedAtKst`(한국시간 문자열, Compass 확인). BSON Date는 UTC만 가능해서 표시용으로 쓰지 않음. Online(실시간 탭 수)과 별개. 조회: `GET realtime/stats/daily-visitors?date=YYYY-MM-DD`. fills·candle_series도 동일하게 `*Ts`/`*Kst` 패턴.

위치

manifast-platform: @manifast/shared time.ts · realtime mongoDailyVisitors · ingest fills/candles · GET /stats/daily-visitors

e02002026-08-05헤더 · realtime

헤더 Online(접속자 수) 표시

PC 헤더에 지금 사이트를 보고 있는 탭 수(Online)를 실시간으로 보여 준다. 모바일 헤더에는 표시하지 않는다(자리 부족).

적용됨

설명

브라우저가 realtime `GET /presence/stream` SSE에 연결되면 전역 접속 +1, 탭을 닫으면 −1. Redis presence 채널로 realtime 인스턴스 간 숫자를 맞춘다. 호가 SSE의 마켓별 viewers와는 별개(차트는 presence=0으로 마켓 시청자 미카운트). 연결 전이거나 실패 시 UI는 「—」. 모바일은 TradeShell만 Online pill을 쓰고 MobileTradeShell에서는 제거했다.

위치

manifast-platform: useOnlineCount · TradeShell online-pill · realtime presence.controller / presence.ts (모바일 헤더 미표시)

e01002026-08-05헤더 · DX

헤더 앱 버전 뱃지

브랜드(Zenith) 옆에 `vX.Y.Z`와 환경 라벨(local / dev / production)을 표시한다.

적용됨

설명

dev 배포마다 루트·apps/web package.json patch 버전을 올린다. 로컬·Railway dev·운영 모두 헤더에 보인다. 버전 문자열은 apps/web/package.json을 읽는다. 환경은 NEXT_PUBLIC_APP_ENV · RAILWAY_ENVIRONMENT_NAME · next dev(local)로 판별한다.

위치

manifast-platform: AppVersionBadge · TradeShell/MobileTradeShell 헤더 · .cursor/rules/dev-deploy-version.mdc