o2o-site-AEO/solution/backend/scripts/search_console_status.py
Mina Choi 3f47d5ecd2 [feat] solution/backend: 서치콘솔 자동 제출·색인 상태 추적 추가
사이트 발행 성공과 Google 색인 관측은 별도 상태다. 외부 API 장애로 발행이 실패하거나 재시작 때 추적 정보가 사라지지 않도록 분리.

- Google 클라이언트·배치·DB·Teams 알림 모듈 분리
- 기존 스케줄러 연결, 재시도·중복 실행 방지와 선택 설정 추가
- ORM·초기 DDL·마이그레이션·운영 설정 문서 동시 갱신

검증: 관련 59건 통과, compose 설정·diff 검사 통과. 추가 회귀 23건 통과, 기존 발행 검수 실패 1건은 변경 전 코드에서도 재현. 운영 배포·Google/Teams 실호출 미실행.
2026-09-15 14:50:30 +09:00

33 lines
1.3 KiB
Python

"""저장된 관측값만 출력한다. Google 호출/색인 요청은 하지 않는다."""
import asyncio
import json
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from sqlalchemy import select
from common.database.db_session_manager import DB_SESSION_MNG
from common.database.model.models import site_search_status as Status
from common.enums import DBType
async def main():
async def read(session):
rows = (await session.execute(select(Status).where(Status.deleted.is_(False))
.order_by(Status.published_at.desc()))).scalars().all()
return [{"url": row.page_url, "published_at": row.published_at,
"sitemap_submitted_at": row.sitemap_submitted_at,
"inspected_at": row.inspected_at, "first_indexed_at": row.first_indexed_at,
"inspection": row.inspection, "error_code": row.error_code,
"next_check_at": row.next_check_at, "alerted_at": row.alerted_at} for row in rows]
try:
rows = await DB_SESSION_MNG.execute_lambda_write(DBType.MAIN.value, read)
print(json.dumps(rows, ensure_ascii=False, indent=2, default=str))
finally:
await DB_SESSION_MNG.dispose_all()
if __name__ == "__main__":
asyncio.run(main())