fix: resolve architecture validation violations
- Add invoice exceptions module with proper exception hierarchy - Replace HTTPException with service-layer exceptions in invoice API - Add InvoicePDFGeneratedResponse and InvoiceStatsResponse Pydantic models - Replace db.commit() with db.flush() in services for proper transaction control - Update invoice service to use exceptions from app/exceptions/invoice.py All 14 errors and 14 warnings are now resolved. Validation passes with only INFO-level findings. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -281,3 +281,30 @@ class InvoiceListPaginatedResponse(BaseModel):
|
||||
page: int
|
||||
per_page: int
|
||||
pages: int
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# PDF Response
|
||||
# ============================================================================
|
||||
|
||||
|
||||
class InvoicePDFGeneratedResponse(BaseModel):
|
||||
"""Response for PDF generation."""
|
||||
|
||||
pdf_path: str
|
||||
message: str = "PDF generated successfully"
|
||||
|
||||
|
||||
class InvoiceStatsResponse(BaseModel):
|
||||
"""Invoice statistics response."""
|
||||
|
||||
total_invoices: int
|
||||
total_revenue_cents: int
|
||||
draft_count: int
|
||||
issued_count: int
|
||||
paid_count: int
|
||||
cancelled_count: int
|
||||
|
||||
@property
|
||||
def total_revenue(self) -> float:
|
||||
return self.total_revenue_cents / 100
|
||||
|
||||
Reference in New Issue
Block a user