solorpower/docs/system_infrastructure_guide.md

3.0 KiB

SolarPower 시스템 인프라 및 구조 가이드

이 문서는 SolarPower 시스템의 실제 서버 인프라 정보와 로컬/원격 디렉토리 구조를 정리한 가이드입니다.

1. 서버 접속 정보 (Oracle Cloud)

현재 시스템의 메인 로직(Crawler 및 API)이 구동되고 있는 서버 정보입니다.

  • 서버 이름: holdem-server
  • 공인 IP (Public): 140.245.73.212
  • 테일스케일 IP: 100.116.0.32
  • 접속 계정: ubuntu
  • SSH 키 경로: C:\Users\haneu\.ssh\holdem_server.key

💻 SSH 접속 명령어

# 공인 IP로 접속
ssh -i "C:\Users\haneu\.ssh\holdem_server.key" ubuntu@140.245.73.212

# Tailscale 연결 시 접속
ssh -i "C:\Users\haneu\.ssh\holdem_server.key" ubuntu@100.116.0.32

2. 서버 디렉토리 구조 (Remote)

서버 내 주요 서비스 설치 경로입니다.

  • ~/solorpower_crawler/: 실시간 데이터 수집기(Crawler)가 실행되는 메인 경로
    • main.py: 10분마다 실행되는 수집 엔트리
    • crawler.log: 크롤링 실행 로그 (표준 출력/에러 통합)
    • database.py: Supabase 저장 로직 (최근 0kW 보호 패치 적용됨)
  • ~/solorpower_server/: FastAPI 기반의 백엔드 API 서버 경로
  • ~/plant_sync/: 발전소 정보 동기화 및 기타 유틸리티

자동화 스케줄 (Crontab)

서버에서 crontab -l 명령어로 확인된 자동화 설정입니다.

  • */10 * * * *: 10분마다 데이터 수집 실행 (main.py)
  • 10 0 * * *: 매일 0시 10분에 일일 통계 요약 실행 (daily_summary.py)

3. 로컬 프로젝트 구조 (Local)

개발 PC(d:\dev\etc\SolorPower)의 구성입니다.

  • crawler/: Python 기반 데이터 수집기 소스 코드
  • api_server/: FastAPI 기반 백엔드 소스 코드
  • app/: React Native (Expo) 모바일 애플리케이션 소스 코드
  • sql/: 데이터베이스 스키마 및 히스토리 관리
  • docs/: 시스템 설계 및 분석 리포트 (현재 이 문서가 포함된 위치)

4. 데이터 흐름 (Data Flow)

  1. 수집: Crawler(Oracle Cloud) → 각 발전소 사이트 (나스 프록시 경유)
  2. 저장: Crawler → Supabase (PostgreSQL)
  3. 알림: Crawler → Telegram Bot (이상 감지 시 즉시 발송)
  4. 제공: API Server(Oracle Cloud) → Supabase 데이터 가공 후 JSON 제공
  5. 표시: Mobile App (Expo) → API 호출 후 차트 및 현황 표시

5. 주요 점검 및 대응 가이드

발전량이 0으로 표시될 때 (오늘 발생 사례)

  1. 서버 접속: ssh oracle-fishingmap이 아닌 140.245.73.212로 접속 확인
  2. 로그 확인: tail -n 20 ~/solorpower_crawler/crawler.log
  3. 코드 패치: git pull origin main (최신 보호 로직 반영 여부 확인)
  4. DB 확인: Supabase solar_logs 테이블에서 해당 시간대 status 확인

마지막 업데이트: 2026-05-14 (0kW 오보 보호 패치 및 인프라 정리)