궤도/지상국 운영은 위성 궤도 입력, 가시 패스 계산, 지상국 자원, 접촉 세션을 관리하는 업무 도메인이다.
궤도 원천 관리: TLE 등 궤도 입력 원천을 수집하고 버전을 관리한다.패스 계산: 위성과 지상국 간 가시 구간을 계산하고 예측 결과를 저장한다.지상국 자원 관리: 지상국, 안테나, 밴드 가용성을 관리한다.세션 운영: 명령/다운링크 수행용 접촉 세션을 계획하고 실제 수행 이력을 관리한다.ORBIT_SOURCETLEGROUND_STATIONVISIBILITY_PASSANTENNA_RESOURCECONTACT_SESSIONerDiagram
ORBIT_SOURCE {
uuid orbit_source_id PK
string source_type
string provider
string status
datetime last_ingested_at
}
TLE {
uuid tle_id PK
uuid satellite_id FK
uuid orbit_source_id FK
datetime epoch_time
string line1
string line2
datetime ingested_at
}
GROUND_STATION {
uuid station_id PK
string name
float latitude
float longitude
float altitude
string status
}
VISIBILITY_PASS {
uuid pass_id PK
uuid satellite_id FK
uuid station_id FK
uuid orbit_source_id FK
datetime aos_time
datetime los_time
float max_elevation_deg
datetime predicted_at
}
ANTENNA_RESOURCE {
uuid antenna_id PK
uuid station_id FK
string antenna_name
string band_capability
string status
}
CONTACT_SESSION {
uuid session_id PK
uuid satellite_id FK
uuid station_id FK
uuid antenna_id FK
datetime planned_start
datetime planned_end
datetime actual_start
datetime actual_end
string session_type
string status
}
ORBIT_SOURCE ||--o{ TLE : provides
ORBIT_SOURCE ||--o{ VISIBILITY_PASS : basis_for
GROUND_STATION ||--o{ VISIBILITY_PASS : observes
GROUND_STATION ||--o{ ANTENNA_RESOURCE : has
GROUND_STATION ||--o{ CONTACT_SESSION : hosts
ANTENNA_RESOURCE ||--o{ CONTACT_SESSION : uses
VISIBILITY_PASS는 촬영 후보와 feasibility 다운링크 창의 핵심 입력이다.CONTACT_SESSION은 명령 실행과 다운링크 계획의 수행 단위로 연결된다.orbit_source_id는 식별자, source_type은 TLE/EPH 등 데이터 유형, provider는 제공자, status는 사용 상태, last_ingested_at은 최근 수집 시각이다.tle_id는 식별자, satellite_id는 대상 위성, orbit_source_id는 원천 정보, epoch_time은 기준 시각, line1, line2는 TLE 본문, ingested_at은 수집 시각이다.station_id는 식별자, name은 지상국명, latitude, longitude, altitude는 위치 정보, status는 운용 상태다.pass_id는 식별자, satellite_id와 station_id는 위성/지상국 FK, orbit_source_id는 계산 근거, aos_time과 los_time은 가시 시작/종료, max_elevation_deg는 최대 고도, predicted_at은 계산 시각이다.antenna_id는 식별자, station_id는 소속 지상국, antenna_name은 자원명, band_capability는 지원 밴드, status는 사용 상태다.session_id는 식별자, satellite_id, station_id, antenna_id는 사용 자원, planned_start, planned_end는 계획 시각, actual_start, actual_end는 실제 시각, session_type은 세션 목적, status는 진행 상태다.orbit_source_id.source_type, provider, status는 NOT NULL, last_ingested_at은 nullable 가능.(provider, source_type) 유니크 검토, status 인덱스 권장.source_type은 TLE, EPH, OEM. status는 active, paused, deprecated.tle_id, FK는 satellite_id -> SATELLITE.satellite_id, orbit_source_id -> ORBIT_SOURCE.orbit_source_id.epoch_time, line1, line2, ingested_at은 NOT NULL 권장.(satellite_id, epoch_time DESC) 인덱스, (orbit_source_id, epoch_time DESC) 인덱스 권장.(satellite_id, epoch_time) 유니크 검토.station_id.name, latitude, longitude, status는 NOT NULL, altitude는 기본값 0 검토.name 유니크 검토, status 인덱스, 위치 기반 조회 많으면 공간 인덱스 검토.status는 active, maintenance, offline, retired.pass_id, FK는 satellite_id, station_id, orbit_source_id.aos_time, los_time, max_elevation_deg, predicted_at은 NOT NULL 권장.(satellite_id, aos_time), (station_id, aos_time), (predicted_at) 인덱스 권장.aos_time < los_time 체크 제약 권장.antenna_id, FK는 station_id -> GROUND_STATION.station_id.station_id, antenna_name, band_capability, status는 NOT NULL 권장.(station_id, antenna_name) 유니크, (station_id, status) 인덱스 권장.band_capability는 S, X, Ka, S/X. status는 active, reserved, maintenance.session_id, FK는 satellite_id, station_id, antenna_id.satellite_id, station_id, antenna_id, planned_start, planned_end, session_type, status는 NOT NULL, 실제 시각은 nullable 가능.(satellite_id, planned_start), (station_id, planned_start), (antenna_id, planned_start) 인덱스 권장.session_type은 command, downlink, mixed. status는 planned, active, completed, cancelled, failed.