Fix analytics case() bug, add privacy mode, add prod DB sync script
All checks were successful
Deploy to VPS / deploy (push) Successful in 28s

Fix SQLAlchemy case() import in monthly-trend endpoint. Add
data-sensitive attributes to Analytics charts and tables for privacy
blur. Add scripts/sync-db.sh for one-click prod-to-local PostgreSQL
sync. Remove SQLite artifacts from gitignore.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Carlos Escalante
2026-04-03 20:10:58 -06:00
parent 78e20f30cb
commit 792cef5006
4 changed files with 114 additions and 13 deletions

View File

@@ -3,12 +3,13 @@ from typing import Optional
from fastapi import APIRouter, Depends
from pydantic import BaseModel
from sqlalchemy import case
from sqlmodel import Session, func, select
from app.auth import get_current_user
from app.db import get_session
from app.models.models import Category, Transaction
from app.api.v1.endpoints.transactions import get_cycle_range
from app.services.budget_projection import get_cycle_range
router = APIRouter(prefix="/analytics", tags=["analytics"])
@@ -104,7 +105,7 @@ def monthly_trend(
func.count(),
func.coalesce(
func.sum(
func.case(
case(
(Transaction.currency == "CRC", Transaction.amount),
else_=0,
)
@@ -113,7 +114,7 @@ def monthly_trend(
),
func.coalesce(
func.sum(
func.case(
case(
(Transaction.currency == "USD", Transaction.amount),
else_=0,
)