4c8c879302
- snapshot_admin_store_v1.py: summarize_workspace에서 account_snapshot의 captured_at 사용 (updated_at 대신) - account_snapshot 테이블: 올바른 스키마 재정의 (ordinal PK, row_json, 핵심필드, updated_at) - settings 테이블: 올바른 스키마 재정의 (ordinal PK, key, value_json, note, updated_at) - initialize_snapshot_admin_db.py: XLSX에서 settings, account_snapshot을 올바른 스키마로 로드 - load_from_xlsx_correct.py: account_snapshot을 특별 처리해서 스키마 보존 - /api/settings/save: 정상 작동 (200 응답) - build_ui_state: load_collection_dashboard_state 예외 처리 추가 (진행 중) 데이터 현황: - kis_data_collection.db: 1 테이블 (data_feed), 25행 - snapshot_admin.db: 27 테이블, 7,501행 * settings: 32행 (올바른 스키마) * account_snapshot: 44행 (올바른 스키마) 남은 작업: - /api/state 크래시 원인 진단 및 수정 - /api/export 데이터 검증 - 웹 UI 개선 (백오피스 수준) - T+20 모니터링 활성화 - CI/CD 백업 기능 Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
80 lines
2.1 KiB
Python
80 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
/api/state, /api/export 등 다른 엔드포인트 테스트
|
|
"""
|
|
|
|
import requests
|
|
import json
|
|
import time
|
|
|
|
BASE_URL = "http://localhost:5000"
|
|
|
|
print("="*80)
|
|
print("API 엔드포인트 테스트")
|
|
print("="*80)
|
|
|
|
# 1. /api/state 테스트
|
|
print("\n[1] GET /api/state")
|
|
try:
|
|
start = time.time()
|
|
response = requests.get(f"{BASE_URL}/api/state", timeout=15)
|
|
elapsed = time.time() - start
|
|
|
|
print(f" 응답 시간: {elapsed:.2f}s")
|
|
print(f" 상태 코드: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
print(f" [OK] 키: {list(result.keys())[:5]}")
|
|
else:
|
|
print(f" [FAIL] {response.text[:100]}")
|
|
|
|
except Exception as e:
|
|
print(f" [ERROR] {e}")
|
|
|
|
# 2. /api/export 테스트
|
|
print("\n[2] GET /api/export")
|
|
try:
|
|
start = time.time()
|
|
response = requests.get(f"{BASE_URL}/api/export", timeout=15)
|
|
elapsed = time.time() - start
|
|
|
|
print(f" 응답 시간: {elapsed:.2f}s")
|
|
print(f" 상태 코드: {response.status_code}")
|
|
print(f" 응답 크기: {len(response.text)} bytes")
|
|
|
|
if response.status_code == 200:
|
|
try:
|
|
result = response.json()
|
|
print(f" [OK] 키: {list(result.keys())[:3]}")
|
|
except:
|
|
print(f" [OK] (JSON 파싱 불가, 바이너리일 수 있음)")
|
|
else:
|
|
print(f" [FAIL] {response.text[:100]}")
|
|
|
|
except Exception as e:
|
|
print(f" [ERROR] {e}")
|
|
|
|
# 3. /api/tables 테스트
|
|
print("\n[3] GET /api/tables")
|
|
try:
|
|
start = time.time()
|
|
response = requests.get(f"{BASE_URL}/api/tables", timeout=15)
|
|
elapsed = time.time() - start
|
|
|
|
print(f" 응답 시간: {elapsed:.2f}s")
|
|
print(f" 상태 코드: {response.status_code}")
|
|
|
|
if response.status_code == 200:
|
|
result = response.json()
|
|
print(f" [OK] {len(result)} 테이블")
|
|
for table in result[:3]:
|
|
print(f" - {table['table']}: {table['row_count']} rows")
|
|
else:
|
|
print(f" [FAIL] {response.text[:100]}")
|
|
|
|
except Exception as e:
|
|
print(f" [ERROR] {e}")
|
|
|
|
print("\n[완료]")
|