cosmo/update_unified_ratio.py

63 lines
2.1 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#!/usr/bin/env python3
"""Update celestial_type_configs to use unified ratio"""
import asyncio
import sys
import os
import json
sys.path.append(os.path.join(os.getcwd(), "backend"))
from app.database import AsyncSessionLocal
from app.services.system_settings_service import system_settings_service
# Unified ratio for all types
# This ensures consistent scaling based on real physical size
UNIFIED_RATIO = 0.00008
async def update_unified_ratio():
"""Update all type ratios to use unified value"""
async with AsyncSessionLocal() as session:
# Get current config
current_config = await system_settings_service.get_setting_value('celestial_type_configs', session)
print("=" * 70)
print("CURRENT celestial_type_configs:")
print("=" * 70)
print(json.dumps(current_config, indent=2))
# Update all ratios to unified value
updated_config = {}
for body_type, config in current_config.items():
updated_config[body_type] = {
'ratio': UNIFIED_RATIO,
'default': config.get('default', 0.5) # Keep existing defaults
}
print("\n" + "=" * 70)
print(f"UPDATED celestial_type_configs (unified ratio = {UNIFIED_RATIO}):")
print("=" * 70)
print(json.dumps(updated_config, indent=2))
# Save updated config
await system_settings_service.update_setting(
'celestial_type_configs',
updated_config,
session
)
await session.commit()
print("\n" + "=" * 70)
print("✅ All type ratios unified successfully!")
print("=" * 70)
print("\nNOW ALL BODIES WILL USE:")
print(f" Display Size = real_radius (km) × {UNIFIED_RATIO}")
print("\nThis ensures:")
print(" • Consistent scaling across all body types")
print(" • Jupiter is correctly 10.97x larger than Earth")
print(" • Ceres is correctly 0.07x the size of Earth")
print(" • Pluto is correctly 0.19x the size of Earth")
if __name__ == "__main__":
asyncio.run(update_unified_ratio())