Files
orion/app/modules/prospecting/schemas/score.py
Samir Boulahtit 50d50fcbd0 feat(prospecting): show per-category score breakdown on prospect detail
- Restructure score_breakdown from flat dict to grouped by category:
  {technical_health: {flag: pts}, modernity: {...}, ...}
- Each category row shows score/max with progress bar + per-flag detail
  (e.g. Technical Health 15/40 → "very slow: 15 pts")
- Color-coded: green for positive flags, orange for issues
- "No issues detected" shown for clean categories

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 21:35:06 +02:00

43 lines
1.0 KiB
Python

# app/modules/prospecting/schemas/score.py
"""Pydantic schemas for opportunity scoring."""
import json
from datetime import datetime
from pydantic import BaseModel, field_validator
class ProspectScoreResponse(BaseModel):
"""Schema for prospect score response."""
id: int
prospect_id: int
score: int
technical_health_score: int
modernity_score: int
business_value_score: int
engagement_score: int
reason_flags: list[str] = []
score_breakdown: dict[str, dict[str, int]] | None = None
lead_tier: str | None = None
notes: str | None = None
created_at: datetime
updated_at: datetime
@field_validator("reason_flags", mode="before")
@classmethod
def parse_reason_flags(cls, v):
if isinstance(v, str):
return json.loads(v)
return v
@field_validator("score_breakdown", mode="before")
@classmethod
def parse_score_breakdown(cls, v):
if isinstance(v, str):
return json.loads(v)
return v
class Config:
from_attributes = True