perf: optimize revenue forecast effective document links

This commit is contained in:
plx
2026-08-14 12:06:26 +00:00
parent 69116f620c
commit 91ba85fc92
3 changed files with 188 additions and 24 deletions

View File

@@ -320,9 +320,13 @@ def _historical_stage_rates(conn: Any) -> dict[str, dict[str, Any]]:
}
def _realised_for_period(conn: Any, *, metric: str, period_start: date, period_end: date) -> dict[str, Any]:
def _realised_for_period(
conn: Any, *, metric: str, period_start: date, period_end: date,
effective_links_prepared: bool = False,
) -> dict[str, Any]:
from app.document_reconciliation_service import prepare_effective_document_links
prepare_effective_document_links(conn)
if not effective_links_prepared:
prepare_effective_document_links(conn)
if metric == "cash_received":
rows = conn.execute(text("""
WITH latest_doc AS (
@@ -385,9 +389,12 @@ def _realised_for_period(conn: Any, *, metric: str, period_start: date, period_e
}
def _already_realised_ids(conn: Any, *, metric: str) -> set[str]:
def _already_realised_ids(
conn: Any, *, metric: str, effective_links_prepared: bool = False,
) -> set[str]:
from app.document_reconciliation_service import prepare_effective_document_links
prepare_effective_document_links(conn)
if not effective_links_prepared:
prepare_effective_document_links(conn)
if metric == "cash_received":
sql = """
SELECT DISTINCT opportunity_id::text
@@ -441,8 +448,13 @@ def get_revenue_forecast(*, limit: int = 1000, month: str | None = None, metric:
from app.document_reconciliation_service import prepare_effective_document_links
prepare_effective_document_links(conn)
historical = _historical_stage_rates(conn)
realised = _realised_for_period(conn, metric=metric, period_start=period_start, period_end=period_end)
already_realised_ids = _already_realised_ids(conn, metric=metric)
realised = _realised_for_period(
conn, metric=metric, period_start=period_start, period_end=period_end,
effective_links_prepared=True,
)
already_realised_ids = _already_realised_ids(
conn, metric=metric, effective_links_prepared=True,
)
rows = conn.execute(text("""
WITH latest_doc AS (
SELECT DISTINCT ON (l.opportunity_id)