Initial commit: AutonetSellCar platform with deployment system
- Frontend: Next.js 14 with TypeScript - Backend: FastAPI with SQLAlchemy - Agent: Carmodoo sync agent - Deployment: Docker Compose based staging/production setup - Scripts: Automated deployment with rollback support 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
107
backend/fetch_performance_check.py
Normal file
107
backend/fetch_performance_check.py
Normal file
@@ -0,0 +1,107 @@
|
||||
"""
|
||||
기존 차량의 성능점검표를 가져오는 스크립트
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
sys.path.insert(0, '.')
|
||||
|
||||
from sqlalchemy.orm import Session
|
||||
from app.database import SessionLocal, engine
|
||||
from app.models import Car, CarPerformanceCheck
|
||||
from app.api.carmodoo import carmodoo_client
|
||||
|
||||
|
||||
async def fetch_and_save_performance_check(car_id: int, car_no: str):
|
||||
"""특정 차량의 성능점검표를 가져와서 저장"""
|
||||
db = SessionLocal()
|
||||
|
||||
try:
|
||||
# 이미 있는지 확인
|
||||
existing = db.query(CarPerformanceCheck).filter(
|
||||
CarPerformanceCheck.car_id == car_id
|
||||
).first()
|
||||
|
||||
if existing:
|
||||
print(f"Car {car_id} already has performance check")
|
||||
return False
|
||||
|
||||
# 카모두에서 성능점검표 가져오기
|
||||
print(f"Fetching performance check for car_no: {car_no}")
|
||||
result = await carmodoo_client.get_performance_check(car_no)
|
||||
|
||||
# raw_html 저장 (디버깅용)
|
||||
if result.get("raw_html"):
|
||||
with open(f"./debug_perf_check_{car_no}.html", "w", encoding="utf-8") as f:
|
||||
f.write(result["raw_html"])
|
||||
print(f" Raw HTML saved to debug_perf_check_{car_no}.html (length: {len(result['raw_html'])})")
|
||||
|
||||
if not result.get("found"):
|
||||
print(f"Performance check not found for car_no: {car_no}")
|
||||
return False
|
||||
|
||||
perf_data = result["data"]
|
||||
print(f"Performance check found: {perf_data.get('check_number', 'N/A')}")
|
||||
|
||||
# CarPerformanceCheck 생성
|
||||
performance_check = CarPerformanceCheck(
|
||||
car_id=car_id,
|
||||
check_number=perf_data.get("check_number"),
|
||||
check_date=perf_data.get("check_date"),
|
||||
valid_until=perf_data.get("valid_until"),
|
||||
car_number=perf_data.get("car_number"),
|
||||
first_registration=perf_data.get("first_registration"),
|
||||
mileage=perf_data.get("mileage"),
|
||||
mileage_status=perf_data.get("mileage_status"),
|
||||
seize_count=perf_data.get("seize_count", 0),
|
||||
collateral_count=perf_data.get("collateral_count", 0),
|
||||
is_flood_damaged=perf_data.get("is_flood_damaged", False),
|
||||
is_fire_damaged=perf_data.get("is_fire_damaged", False),
|
||||
is_total_loss=perf_data.get("is_total_loss", False),
|
||||
usage_history=perf_data.get("usage_history"),
|
||||
is_rental_used=perf_data.get("is_rental_used", False),
|
||||
engine_status=perf_data.get("engine_status"),
|
||||
transmission_status=perf_data.get("transmission_status"),
|
||||
power_delivery_status=perf_data.get("power_delivery_status"),
|
||||
steering_status=perf_data.get("steering_status"),
|
||||
brake_status=perf_data.get("brake_status"),
|
||||
electrical_status=perf_data.get("electrical_status"),
|
||||
fuel_system_status=perf_data.get("fuel_system_status"),
|
||||
raw_data=perf_data,
|
||||
raw_html=result.get("raw_html", "")[:50000],
|
||||
report_image_url=perf_data.get("report_image_url"),
|
||||
)
|
||||
db.add(performance_check)
|
||||
db.commit()
|
||||
|
||||
print(f"Performance check saved for car {car_id}")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
db.rollback()
|
||||
return False
|
||||
finally:
|
||||
db.close()
|
||||
|
||||
|
||||
async def main():
|
||||
# 모든 차량 조회
|
||||
db = SessionLocal()
|
||||
cars = db.query(Car).filter(
|
||||
Car.source == "carmodoo",
|
||||
Car.source_id.isnot(None)
|
||||
).all()
|
||||
db.close()
|
||||
|
||||
print(f"Found {len(cars)} cars from carmodoo")
|
||||
|
||||
for car in cars:
|
||||
print(f"\n--- Processing Car ID: {car.id}, Source ID: {car.source_id} ---")
|
||||
await fetch_and_save_performance_check(car.id, car.source_id)
|
||||
await asyncio.sleep(1) # 서버 부하 방지
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user