feat: add quote sync command

This commit is contained in:
Windows
2026-09-11 19:51:51 +08:00
parent 5de5c6c6b5
commit fbb1171a45
2 changed files with 41 additions and 1 deletions
+40
View File
@@ -0,0 +1,40 @@
"""Refresh listed-fund quotes through the dual-source health pipeline."""
from __future__ import annotations
import argparse
import asyncio
import sys
from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))
from app.service.market_quote_sync_service import MarketQuoteSyncService # noqa: E402
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description="Sync listed Southern Fund market quotes")
parser.add_argument(
"--product-code", action="append", dest="product_codes",
help="Limit sync to a product code; can be repeated",
)
return parser.parse_args()
async def run(args: argparse.Namespace) -> None:
codes = tuple(args.product_codes) if args.product_codes else None
result = await MarketQuoteSyncService().sync(product_codes=codes)
print(
f"sync_run_no={result['sync_run_no']} requested={result['requested_count']} "
f"quotes={result['quote_count']} degraded={result['degraded']}"
)
for source in result["sources"]:
print(
f"source={source['source']} status={source['status']} "
f"quotes={source['quote_count']} error={source['error_type']}"
)
if __name__ == "__main__":
asyncio.run(run(parse_args()))