Files
2026-07-13 12:39:17 +08:00

34 lines
1.4 KiB
Python

from typing import Literal
from pydantic import BaseModel, Field
class FinancialMetric(BaseModel):
source_file: str = Field(
description="Workspace-relative source path under data/, such as data/10-k-mdna-overview.txt."
)
filing_section: Literal[
"Part II, Item 7. Management's Discussion and Analysis of Financial Condition and Results of Operations",
"Part II, Item 8. Financial Statements and Supplementary Data",
] = Field(description="Normalized 10-K filing section for the source document.")
metric_name: str = Field(
description="Metric label exactly as written in the source document or table."
)
fiscal_period: Literal["FY2025", "FY2024", "2025-12-31", "2024-12-31"] = Field(
description="Annual period label for statement rows, or balance-sheet date for point-in-time rows."
)
value: float = Field(description="Numeric value from the source row.")
unit: Literal["USD millions", "percent"] = Field(
description="Unit for `value`; use USD millions for dollar amounts and percent for margins."
)
segment: str | None = Field(
default=None,
description="Reportable segment or geography when the row is segment-specific, otherwise null.",
)
class FinancialMetricBatch(BaseModel):
metrics: list[FinancialMetric] = Field(
description="One row per metric-period pair extracted from each source document."
)