Skip to content

랜딩페이지 시각화: TPS 저널 차트 + Live Snapshot 대시보드 - #23

Merged
JeongGihun merged 21 commits into
integrationfrom
feat/landing-perf-viz
Aug 5, 2026
Merged

랜딩페이지 시각화: TPS 저널 차트 + Live Snapshot 대시보드#23
JeongGihun merged 21 commits into
integrationfrom
feat/landing-perf-viz

Conversation

@JeongGihun

Copy link
Copy Markdown
Owner

Summary

  • Performance 섹션에 TPS 저널(26→489→1,001→1,069→927) SVG 라인차트 추가 — 마지막 구간(read_replica 롤백) 하락 표시
  • Architecture 섹션 뒤에 Live Snapshot 대시보드 추가 — 활성로봇/평균배터리/null rate/실시간 수집률, 기존 /demo/* 엔드포인트로 5초 폴링
  • Auto Mode를 Playground 아코디언에서 Live Snapshot 상단으로 이동, 배터리 소모 시뮬레이션 추가
  • API Key 입력을 최상단으로 이동, 명시적 "적용" 버튼 + 서버 검증(틀린 키 거부)
  • Auto Mode interval 즉시 반영, 히어로에 "간단 테스트" 앵커 버튼 추가

백엔드 로직 변경 없음 — index.html 단일 파일, 기존 /demo/* 읽기 전용 엔드포인트만 재사용.

Test plan

  • pytest 73개 전체 통과 (회귀 없음, .py 변경 없음)
  • ruff 클린
  • 로컬 docker-compose로 실제 기동 후 확인: Live Snapshot 폴링, Auto Mode 배터리 소모, API Key 검증(정상키 200/오류키 401) 모두 실측 확인

JeongGihun and others added 21 commits May 17, 2026 10:53
- GET /api/sensors/filtered 테스트 3개 추가 (빈 결과, 데이터 있을 때, 파라미터 누락)
- conftest: TEST_DATABASE_URL 환경변수로 SQLite/PostgreSQL 전환 가능하도록 수정
- conftest: PostgreSQL NullPool 적용으로 이벤트 루프 충돌 방지
- pyproject.toml: branch coverage 및 concurrency 설정 추가
- 전체 커버리지 74% → 75%, 테스트 68개 → 71개

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Dockerfile non-root 유저 적용
cursor 페이지네이션 → offset 방식으로 변경 + 시간 범위 필터 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- ci.yml: TEST_DATABASE_URL, TEST_REDIS_HOST/PORT 추가로 실제 PG·Redis 통합 테스트
- conftest.py: TEST_REDIS_HOST 있으면 실제 Redis, 없으면 FakeRedis (로컬 기본)
- sensor_routes.py: naive datetime 입력을 UTC로 정규화 (TIMESTAMPTZ 비교 버그 수정)
- landingpage.html 삭제 (782줄)
- 일회성 테스트 스크립트 삭제: test/puttest.py, test/test_single_request.py
- app/routes/admin_routes.py, sensor_routes.py 소폭 수정
- scripts/mock_data.py, test/locustfile.py 갱신
- profiles/flame.svg 추가 (프로파일링 결과)
- README 갱신

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
test: CI 실제 PostgreSQL·Redis 전환 + 타임존 버그 수정
feat: nginx upstream keepalive 10 → 16 튜닝
chore: 랜딩페이지·일회성 테스트 제거 + 라우트/스크립트 정리
6/16 Node20 강제전환 대비:
- actions/checkout v4 → v6
- docker/login-action v3 → v4 (deploy)
- actions/setup-python v5 → v6 (ci)
appleboy/ssh-action(v1)은 Docker 액션이라 Node 무관, 유지.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
chore: GitHub Actions Node 24 대응 (checkout v6 / login-action v4 / setup-python v6)
컨테이너당 풀 2종 × 5 인스턴스로 DB 총합이 과다(상시 100)했던 것을
상시 20 / 최대 40으로 축소. max는 PG 기본 max_connections(100) 이내.
※ TPS 재측정 필요 (기존 1,001은 옛 10/50 측정값)
- Performance 섹션에 TPS 변화(26→1,069, read_replica 반증 포함) SVG 라인차트
- Architecture 섹션 뒤에 Live Snapshot 카드 4개(활성로봇/배터리/null rate/수집률), 기존 /demo 엔드포인트로 5초 폴링
- 백엔드 변경 없음, index.html 단일 파일. 차트는 외부 라이브러리 없이 직접 SVG로 그림
- 인증 안내 배너에 X-API-Key 입력 필드 추가, api() 헬퍼가 값 있으면 헤더에 자동 첨부
- 익명 방문자 기본 동작(키 없으면 401)은 그대로 — 순수 프론트, 백엔드 인증 로직 미변경
- 키를 넣으면 Auto Mode가 실제로 센서 데이터를 쓰고 Live Snapshot이 그에 맞춰 갱신됨
- Auto Mode 컨트롤을 POST /api/sensors 카드(접힌 아코디언 안)에서 Live Snapshot 상단으로 이동
- Auto Mode 5틱마다 로봇 배터리 1~3% 소모하는 PUT 호출 추가 → 평균 배터리 카드가 실제로 움직임
- 실시간 수집률 카드에 캡션 추가 — 브라우저 세션 기준 분당 지표이며 Locust TPS(초당·동시접속)와 다른 지표임을 명시
- autoStatus 기본 텍스트를 긴 안내문에서 "대기 중"으로 축소 (2줄 wrap 방지)
- Playground POST /api/sensors 카드에 남아있던 "Auto Mode는 상단으로 옮겼습니다" 안내문 제거
- API Key 입력을 Server Online 배지 아래(최상단)로 이동, 명시적 "적용" 버튼 클릭 시에만 반영
- 적용 시 GET /api/robots로 실제 검증 — 401이면 반영 안 하고 에러 표시(틀린 키로 조용히 401 나는 상황 방지)
- Auto Mode interval 셀렉트 변경 시 껐다 켤 필요 없이 즉시 새 주기 적용
- Hero에 "간단 테스트" 버튼 추가 — Live Snapshot의 Auto Mode 컨트롤(#quicktest)로 바로 스크롤
@JeongGihun
JeongGihun merged commit f616126 into integration Aug 5, 2026
1 check passed
@JeongGihun
JeongGihun deleted the feat/landing-perf-viz branch August 31, 2026 05:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant