Files
2026-05-29 13:27:41 +08:00

39 lines
1.0 KiB
Python

from __future__ import annotations
import logging
from fastapi import APIRouter, HTTPException
from app.extractor import extract
from app.schemas import ParseRequest, ParseResponse
logger = logging.getLogger("shagua.parse")
router = APIRouter(prefix="/api/v1")
@router.post("/parse", response_model=ParseResponse)
def parse(req: ParseRequest) -> ParseResponse:
logger.info(
"parse request package=%s tree=%s clusters=%d",
req.package_name,
bool(req.tree),
len(req.clusters),
)
result = extract(req.package_name, req.tree, req.clusters)
if not result.get("success"):
logger.info("parse failed: reason=%s raw=%s", result.get("reason"), result.get("raw"))
raise HTTPException(
status_code=422,
detail=result.get("reason", "extract_failed"),
)
return ParseResponse(
title=result["title"],
price=result["price"],
source_app=result["source_app"],
cluster_id=result.get("cluster_id"),
typical_price=result["typical_price"],
)