데이터베이스 구조 재설계: 단일 DB -> 2개 DB 분리

- kis_data_collection.db: KIS API 데이터 수집용 (data_feed 테이블)
- snapshot_admin.db: 성능/포지션 관리용 (performance, positions 테이블)

도구 경로 업데이트:
- auto_collect_t20_ledger_v1.py: kis_data_collection.db 사용
- measure_sector_flow_reliability_v1.py: kis_data_collection.db 사용
- validate_data_collection_v1.py: snapshot_admin.db 사용
- monitor_wbs_progress_v1.py: snapshot_admin.db 사용
- backup_recovery_manager_v1.py: 2개 DB 모두 백업

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-06-23 00:19:49 +09:00
parent 1dddffca5c
commit f5c29f7ddf
11 changed files with 451 additions and 17 deletions
+17 -13
View File
@@ -45,7 +45,8 @@ class BackupRecoveryManager:
try:
# 필요한 파일 목록
files_to_backup = [
self.data_dir / "data_feed.db",
self.data_dir / "kis_data_collection.db",
self.data_dir / "snapshot_admin.db",
self.data_dir / "calibration_registry.yaml",
Path("spec") / "12_field_dictionary.yaml",
Path("spec") / "13_formula_registry.yaml",
@@ -294,18 +295,21 @@ class BackupRecoveryManager:
actual_files = len(list(backup_path.glob("*"))) - 1 # metadata 제외
expected_files = metadata.get("files_backed_up", actual_files)
# DB 무결성 검증
db_file = backup_path / "data_feed.db"
db_integrity = "OK"
if db_file.exists():
try:
conn = sqlite3.connect(db_file)
cursor = conn.execute("PRAGMA integrity_check")
result = cursor.fetchone()
db_integrity = result[0] if result else "UNKNOWN"
conn.close()
except Exception:
db_integrity = "FAILED"
# DB 무결성 검증 (2개 DB)
db_integrity = {}
for db_name in ["kis_data_collection.db", "snapshot_admin.db"]:
db_file = backup_path / db_name
if db_file.exists():
try:
conn = sqlite3.connect(db_file)
cursor = conn.execute("PRAGMA integrity_check")
result = cursor.fetchone()
db_integrity[db_name] = result[0] if result else "UNKNOWN"
conn.close()
except Exception:
db_integrity[db_name] = "FAILED"
else:
db_integrity[db_name] = "NOT_FOUND"
return {
"backup_name": backup_name,