feat: sync latest ARR implementation

This commit is contained in:
Wyndham ARR
2026-07-31 15:11:42 +08:00
parent d6f8a747fa
commit bf7939dd1a
185 changed files with 17527 additions and 2260 deletions

View File

@@ -148,7 +148,7 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
connect=lambda _dsn: connection,
)
snapshot = repository.load_snapshot(2026, 7, date(2026, 7, 26))
snapshot = repository.load_snapshot(2026, 7, date(2026, 7, 2))
self.assertTrue(connection.closed)
self.assertEqual(snapshot.facts[0].daily_record_id, 501)
@@ -159,6 +159,33 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
executed = " ".join(sql for sql, _params in connection.cursor_instance.calls)
self.assertIn("REPEATABLE READ READ ONLY", executed)
self.assertIn("finance.v_active_daily_facts", executed)
self.assertIn("facts.arrival BETWEEN", executed)
def test_daily_event_scope_uses_arrival_and_month_maximum(self):
def handler(sql: str, _params: Optional[Sequence[Any]]):
if sql == "SELECT current_database()":
return [("booking_test",)], 1
if "SELECT min(record.arrival), max(record.arrival)" in sql:
return [(date(2026, 7, 21), date(2026, 7, 21))], 1
if "SELECT max(fact.arrival)" in sql:
return [(date(2026, 7, 27),)], 1
return [], 0
connection = FakeConnection(handler)
repository = PostgresReportRepository(
DatabaseConfig("postgresql://synthetic"),
connect=lambda _dsn: connection,
)
request = repository.derive_monthly_request(4)
self.assertIsNotNone(request)
self.assertEqual(request.report_year, 2026)
self.assertEqual(request.report_month, 7)
self.assertEqual(request.as_of_date, date(2026, 7, 27))
executed = " ".join(sql for sql, _params in connection.cursor_instance.calls)
self.assertIn("record.arrival", executed)
self.assertIn("fact.arrival", executed)
def test_reservation_freezes_daily_and_channel_manifests(self):
snapshot_connection = FakeConnection(
@@ -194,8 +221,8 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
report = build_monthly_report(
2026,
7,
date(2026, 7, 26),
repository.load_snapshot(2026, 7, date(2026, 7, 26)),
date(2026, 7, 2),
repository.load_snapshot(2026, 7, date(2026, 7, 2)),
)
def reserve_handler(sql: str, _params: Optional[Sequence[Any]]):
@@ -203,6 +230,12 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
return [("booking_test",)], 1
if "FROM finance.current_daily_versions" in sql:
return [(date(2026, 7, 2), 102)], 1
if "FROM reporting.monthly_runs AS run" in sql:
return [], 0
if "SELECT COALESCE(max(version_no), 0) + 1" in sql:
return [(2,)], 1
if "INSERT INTO reporting.monthly_runs" in sql:
return [(44,)], 1
return [], 1
reserve_connection = FakeConnection(reserve_handler)
@@ -212,20 +245,21 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
)
reservation = repository.reserve_report(report)
self.assertGreater(reservation.report_version_id, 0)
self.assertEqual(
reservation.report_version_id,
reservation.version_no,
)
self.assertEqual(reservation.report_version_id, 44)
self.assertEqual(reservation.version_no, 2)
self.assertEqual(reservation.period_start, date(2026, 7, 1))
self.assertEqual(reservation.as_of_date, date(2026, 7, 26))
self.assertEqual(reservation.as_of_date, date(2026, 7, 2))
self.assertEqual(reservation.daily_versions, report.daily_versions)
self.assertRegex(reservation.source_snapshot_sha256 or "", r"^[0-9a-f]{64}$")
self.assertTrue(reserve_connection.closed)
self.assertEqual(len(reserve_connection.cursor_instance.many_calls), 0)
executed = " ".join(
sql for sql, _params in reserve_connection.cursor_instance.calls
)
self.assertNotIn("finance.report_versions", executed)
self.assertIn("INSERT INTO reporting.monthly_runs", executed)
self.assertIn("INSERT INTO reporting.monthly_run_daily_versions", executed)
self.assertIn("INSERT INTO reporting.monthly_channel_manifest", executed)
def test_stale_snapshot_is_rejected_before_version_insert(self):
from monthly_reports.contracts import (
@@ -251,7 +285,7 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
report = build_monthly_report(
2026,
7,
date(2026, 7, 26),
date(2026, 7, 2),
MonthlySnapshot(
(source,),
(DailyVersionPin(date(2026, 7, 2), 102),),
@@ -281,13 +315,20 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
)
)
def test_activation_rechecks_pins_without_persisting_monthly_rows(self):
def handler(sql: str, _params: Optional[Sequence[Any]]):
def test_activation_registers_artifacts_and_supersedes_atomically(self):
def handler(sql: str, params: Optional[Sequence[Any]]):
if sql == "SELECT current_database()":
return [("booking_test",)], 1
if "FROM finance.current_daily_versions" in sql:
return [(date(2026, 7, 2), 102)], 1
return [], 0
if "SELECT report_status, source_snapshot_sha256" in sql:
return [("reserved", "c" * 64)], 1
if "FROM ingestion.artifacts" in sql:
return [], 0
if "INSERT INTO ingestion.artifacts" in sql:
artifact_id = 701 if params and params[0] == "monthly_xlsx" else 702
return [(artifact_id,)], 1
return [], 1
connection = FakeConnection(handler)
repository = PostgresReportRepository(
@@ -299,8 +340,9 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
44,
44,
date(2026, 7, 1),
date(2026, 7, 26),
date(2026, 7, 2),
(DailyVersionPin(date(2026, 7, 2), 102),),
"c" * 64,
),
FileMetadata(
"monthly_xlsx",
@@ -318,11 +360,16 @@ class MonthlyReportsRepositoryTests(unittest.TestCase):
50,
"application/json",
),
"d" * 64,
)
self.assertTrue(connection.closed)
executed = " ".join(sql for sql, _params in connection.cursor_instance.calls)
self.assertIn("finance.current_daily_versions", executed)
self.assertEqual(executed.count("INSERT INTO ingestion.artifacts"), 2)
self.assertIn("SET report_status = 'superseded'", executed)
self.assertIn("SET report_status = 'active'", executed)
self.assertIn("workbook_artifact_id", executed)
self.assertNotIn("finance.report_versions", executed)
self.assertNotIn("booking.file_objects", executed)