mirror of
https://github.com/marcogll/telegram_expenses_controller.git
synced 2026-01-13 13:25:15 +00:00
Merge pull request #4 from marcogll/feat-initial-project-structure-14463650289909895681
Complete Phase 2 with Explicit Expense States
This commit is contained in:
@@ -1,6 +1,19 @@
|
|||||||
from pydantic import BaseModel, Field
|
from pydantic import BaseModel, Field
|
||||||
from typing import Optional, List
|
from typing import Optional, List
|
||||||
from datetime import datetime, date
|
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):
|
class RawInput(BaseModel):
|
||||||
"""
|
"""
|
||||||
@@ -39,7 +52,7 @@ class ProvisionalExpense(BaseModel):
|
|||||||
confidence_score: float
|
confidence_score: float
|
||||||
processing_method: str = Field(..., description="How the expense was classified, e.g., 'provider_match', 'keyword_match', 'ai_inference'")
|
processing_method: str = Field(..., description="How the expense was classified, e.g., 'provider_match', 'keyword_match', 'ai_inference'")
|
||||||
validation_notes: List[str] = []
|
validation_notes: List[str] = []
|
||||||
status: str = "AWAITING_CONFIRMATION"
|
status: ExpenseStatus = ExpenseStatus.AWAITING_CONFIRMATION
|
||||||
timestamp: datetime = Field(default_factory=datetime.now)
|
timestamp: datetime = Field(default_factory=datetime.now)
|
||||||
|
|
||||||
class FinalExpense(BaseModel):
|
class FinalExpense(BaseModel):
|
||||||
@@ -64,4 +77,4 @@ class FinalExpense(BaseModel):
|
|||||||
confirmed_at: datetime = Field(default_factory=datetime.now)
|
confirmed_at: datetime = Field(default_factory=datetime.now)
|
||||||
audit_log: List[str] = []
|
audit_log: List[str] = []
|
||||||
|
|
||||||
status: str = "CONFIRMED"
|
status: ExpenseStatus = ExpenseStatus.CONFIRMED
|
||||||
|
|||||||
4
tasks.md
4
tasks.md
@@ -36,8 +36,8 @@ Principio rector:
|
|||||||
|
|
||||||
- [x] **2.1 Modelos Pydantic**
|
- [x] **2.1 Modelos Pydantic**
|
||||||
- [x] Crear modelos: `RawInput`, `ExtractedExpense`, `ProvisionalExpense`, `FinalExpense`.
|
- [x] Crear modelos: `RawInput`, `ExtractedExpense`, `ProvisionalExpense`, `FinalExpense`.
|
||||||
- [ ] **2.2 Estados del Gasto**
|
- [x] **2.2 Estados del Gasto**
|
||||||
- [ ] Definir estados explícitos: `RECEIVED`, `ANALYZED`, `AWAITING_CONFIRMATION`, `CONFIRMED`, `CORRECTED`, `STORED`.
|
- [x] Definir estados explícitos: `RECEIVED`, `ANALYZED`, `AWAITING_CONFIRMATION`, `CONFIRMED`, `CORRECTED`, `STORED`.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user