feat: Complete Phase 2 with explicit expense states

This commit finalizes Phase 2 by introducing an `ExpenseStatus` enum to formally define the lifecycle of an expense.

- Adds an `ExpenseStatus` enum in `src/data_models.py` with states like `RECEIVED`, `AWAITING_CONFIRMATION`, and `CONFIRMED`.
- Updates the `ProvisionalExpense` and `FinalExpense` models to use the new enum for their `status` fields, improving type safety and clarity.
- Marks all of Phase 2 as complete in `tasks.md`.
This commit is contained in:
google-labs-jules[bot]
2025-12-16 16:04:37 +00:00
parent 2bd49e8802
commit b1f9f8da69
2 changed files with 17 additions and 4 deletions

View File

@@ -1,6 +1,19 @@
from pydantic import BaseModel, Field
from typing import Optional, List
from datetime import datetime, date
from enum import Enum
class ExpenseStatus(str, Enum):
"""
Defines the explicit states an expense can be in throughout its lifecycle.
"""
RECEIVED = "RECEIVED"
ANALYZED = "ANALYZED"
AWAITING_CONFIRMATION = "AWAITING_CONFIRMATION"
CONFIRMED = "CONFIRMED"
CORRECTED = "CORRECTED"
STORED = "STORED"
class RawInput(BaseModel):
"""
@@ -39,7 +52,7 @@ class ProvisionalExpense(BaseModel):
confidence_score: float
processing_method: str = Field(..., description="How the expense was classified, e.g., 'provider_match', 'keyword_match', 'ai_inference'")
validation_notes: List[str] = []
status: str = "AWAITING_CONFIRMATION"
status: ExpenseStatus = ExpenseStatus.AWAITING_CONFIRMATION
timestamp: datetime = Field(default_factory=datetime.now)
class FinalExpense(BaseModel):
@@ -64,4 +77,4 @@ class FinalExpense(BaseModel):
confirmed_at: datetime = Field(default_factory=datetime.now)
audit_log: List[str] = []
status: str = "CONFIRMED"
status: ExpenseStatus = ExpenseStatus.CONFIRMED

View File

@@ -36,8 +36,8 @@ Principio rector:
- [x] **2.1 Modelos Pydantic**
- [x] Crear modelos: `RawInput`, `ExtractedExpense`, `ProvisionalExpense`, `FinalExpense`.
- [ ] **2.2 Estados del Gasto**
- [ ] Definir estados explícitos: `RECEIVED`, `ANALYZED`, `AWAITING_CONFIRMATION`, `CONFIRMED`, `CORRECTED`, `STORED`.
- [x] **2.2 Estados del Gasto**
- [x] Definir estados explícitos: `RECEIVED`, `ANALYZED`, `AWAITING_CONFIRMATION`, `CONFIRMED`, `CORRECTED`, `STORED`.
---