Add profile generate refine via manager hint and auto-preview.
When Preview leaves fields empty, managers can send a hint plus the current profile so DeepSeek revises rules; generate now returns preview and empty_fields for the UI. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -20,10 +20,14 @@ router = APIRouter(prefix="/admin/parser-profiles", tags=["parser-profiles"])
|
||||
|
||||
class GenerateRequest(BaseModel):
|
||||
sample_post: str = Field(min_length=1)
|
||||
hint: str | None = None
|
||||
current_profile: dict[str, Any] | None = None
|
||||
|
||||
|
||||
class GenerateResponse(BaseModel):
|
||||
profile: dict[str, Any]
|
||||
preview: dict[str, str]
|
||||
empty_fields: list[str] = Field(default_factory=list)
|
||||
|
||||
|
||||
class PreviewRequest(BaseModel):
|
||||
@@ -65,7 +69,11 @@ async def generate_profile(payload: GenerateRequest):
|
||||
detail="DEEPSEEK_API_KEY is not set on ca-api. Add it to .env for parser generation.",
|
||||
)
|
||||
try:
|
||||
profile = await builder.generate_profile(payload.sample_post)
|
||||
profile = await builder.generate_profile(
|
||||
payload.sample_post,
|
||||
hint=payload.hint,
|
||||
current_profile=payload.current_profile,
|
||||
)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
except Exception as exc:
|
||||
@@ -73,7 +81,13 @@ async def generate_profile(payload: GenerateRequest):
|
||||
status_code=502,
|
||||
detail=f"DeepSeek generate failed: {exc}",
|
||||
) from exc
|
||||
return GenerateResponse(profile=profile.model_dump())
|
||||
dumped = profile.model_dump()
|
||||
preview = builder.preview_with_profile(payload.sample_post, dumped)
|
||||
return GenerateResponse(
|
||||
profile=dumped,
|
||||
preview=preview,
|
||||
empty_fields=builder.empty_preview_fields(preview),
|
||||
)
|
||||
|
||||
|
||||
@router.post("/preview", response_model=PreviewResponse)
|
||||
|
||||
Reference in New Issue
Block a user