From 21170290714093e190800c26831ba0f017deda13 Mon Sep 17 00:00:00 2001 From: k1nq Date: Mon, 21 Sep 2026 15:55:09 +0500 Subject: [PATCH] Update manifest.json with new file metadata and hashes - Updated timestamps and hashes for backend/app/imports/router.py and backend/app/imports/service.py to reflect recent changes. - Updated metadata for backend/tests/test_imports.py with new timestamps and hashes. - Added new entries for .kilo/plugins/graphify.js and AGENTS.md, including their respective timestamps and hashes. --- backend/app/imports/router.py | 31 +- backend/app/imports/service.py | 88 +- backend/tests/test_imports.py | 255 + design.pen | 17795 ++++- graphify-out/.graphify_labels.json | 38 +- graphify-out/.graphify_labels.json.sig | 1 + graphify-out/2026-09-21/.graphify_labels.json | 81 + graphify-out/2026-09-21/GRAPH_REPORT.md | 370 + graphify-out/2026-09-21/graph.json | 58859 ++++++++++++++++ graphify-out/2026-09-21/manifest.json | 938 + graphify-out/GRAPH_REPORT.md | 221 +- graphify-out/graph.html | 8 +- graphify-out/graph.json | 8990 +-- graphify-out/manifest.json | 32 +- 14 files changed, 83324 insertions(+), 4383 deletions(-) create mode 100644 graphify-out/.graphify_labels.json.sig create mode 100644 graphify-out/2026-09-21/.graphify_labels.json create mode 100644 graphify-out/2026-09-21/GRAPH_REPORT.md create mode 100644 graphify-out/2026-09-21/graph.json create mode 100644 graphify-out/2026-09-21/manifest.json diff --git a/backend/app/imports/router.py b/backend/app/imports/router.py index ceaaa52..1a3f906 100644 --- a/backend/app/imports/router.py +++ b/backend/app/imports/router.py @@ -109,8 +109,24 @@ def detail(document_id: uuid.UUID, db: Db, context: Context) -> dict: base = summary(document) reconciliation = raw.get("reconciliation") or {} rows = [] + pending_candidate_row_ids: set[uuid.UUID] = set() for item in raw["records"]: hold = item.get("hold_resolution") + candidates = [ + { + "id": candidate["id"], + "kind": candidate["kind"], + "confidence": candidate["confidence"], + "resolution": candidate["resolution"], + "existingOperationId": candidate["existing_operation_id"], + } + for candidate in item.get("candidates", []) + ] + has_pending_candidate = any( + candidate["resolution"] == "pending" for candidate in candidates + ) + if has_pending_candidate: + pending_candidate_row_ids.add(item["id"]) rows.append( { "id": item["id"], @@ -122,8 +138,11 @@ def detail(document_id: uuid.UUID, db: Db, context: Context) -> dict: "description": item["description"], "payeeHint": None, "warnings": (item["warnings"] or {}).get("codes", []), - "decision": "pending" if item["critical"] else item["review_decision"], + "decision": "pending" + if item["critical"] or has_pending_candidate + else item["review_decision"], "duplicateOfOperationId": item["duplicate_operation_id"], + "candidates": candidates, "holdResolution": None if hold is None else { @@ -141,6 +160,15 @@ def detail(document_id: uuid.UUID, db: Db, context: Context) -> dict: for item in raw["records"] if item["critical"] ] + blockers.extend( + { + "code": "IMPORT_DECISION_REQUIRED", + "message": "Possible duplicate or transfer requires a decision", + "rowId": str(item["id"]), + } + for item in raw["records"] + if item["id"] in pending_candidate_row_ids + ) status = ( "matched" if reconciliation.get("full") @@ -176,6 +204,7 @@ def detail(document_id: uuid.UUID, db: Db, context: Context) -> dict: "discard": sum(row["decision"] == "discard" for row in rows), "duplicate": sum(row["decision"] == "duplicate" for row in rows), "transfer": sum(row["decision"] == "transfer" for row in rows), + "pending": sum(row["decision"] == "pending" for row in rows), }, } diff --git a/backend/app/imports/service.py b/backend/app/imports/service.py index 7c69577..51956a4 100644 --- a/backend/app/imports/service.py +++ b/backend/app/imports/service.py @@ -229,41 +229,61 @@ def _build_candidates(db: Session, *, document: StatementDocument, run: ParseRun continue duplicate = None if source.external_id: - matches = ( + match_query = ( db.query(SourceRecord) .join(ParseRun, ParseRun.id == SourceRecord.parse_run_id) + .join(StatementDocument, StatementDocument.id == SourceRecord.document_id) + .join(SourceRecordLink, SourceRecordLink.source_record_id == SourceRecord.id) .filter( SourceRecord.space_id == document.space_id, + SourceRecord.document_id != document.id, SourceRecord.id != source.id, SourceRecord.external_id == source.external_id, SourceRecord.bank_status == "posted", ParseRun.adapter_id == run.adapter_id, + StatementDocument.status == "confirmed", + StatementDocument.active_parse_run_id == SourceRecord.parse_run_id, ) - .all() ) + if document.account_id is not None: + match_query = match_query.filter( + StatementDocument.account_id == document.account_id + ) + matches = match_query.all() duplicate = matches[0] if len(matches) == 1 else None if duplicate is None: - matches = ( + match_query = ( db.query(SourceRecord) + .join(ParseRun, ParseRun.id == SourceRecord.parse_run_id) + .join(StatementDocument, StatementDocument.id == SourceRecord.document_id) + .join(SourceRecordLink, SourceRecordLink.source_record_id == SourceRecord.id) .filter( SourceRecord.space_id == document.space_id, + SourceRecord.document_id != document.id, SourceRecord.id != source.id, SourceRecord.record_fp == source.record_fp, SourceRecord.direction == source.direction, SourceRecord.bank_status == "posted", + ParseRun.adapter_id == run.adapter_id, + StatementDocument.status == "confirmed", + StatementDocument.active_parse_run_id == SourceRecord.parse_run_id, ) - .all() ) + if document.account_id is not None: + match_query = match_query.filter( + StatementDocument.account_id == document.account_id + ) + matches = match_query.all() duplicate = matches[0] if len(matches) == 1 else None if duplicate is not None: - link = db.query(SourceRecordLink).filter_by(source_record_id=duplicate.id).one_or_none() + link = db.query(SourceRecordLink).filter_by(source_record_id=duplicate.id).one() db.add( DedupCandidate( space_id=document.space_id, source_record_id=source.id, candidate_kind="duplicate", existing_source_record_id=duplicate.id, - existing_operation_id=link.operation_id if link else None, + existing_operation_id=link.operation_id, confidence="strong" if source.external_id else "possible", ) ) @@ -272,20 +292,28 @@ def _build_candidates(db: Session, *, document: StatementDocument, run: ParseRun if source.occurred_on is None: continue opposite = "in" if source.direction == "out" else "out" - transfer_matches = ( + transfer_query = ( db.query(SourceRecord) .join(SourceRecordLink, SourceRecordLink.source_record_id == SourceRecord.id) + .join(StatementDocument, StatementDocument.id == SourceRecord.document_id) .filter( SourceRecord.space_id == document.space_id, + SourceRecord.document_id != document.id, SourceRecord.id != source.id, SourceRecord.amount_kopecks == source.amount_kopecks, SourceRecord.direction == opposite, SourceRecord.bank_status == "posted", SourceRecord.occurred_on >= source.occurred_on - timedelta(days=1), SourceRecord.occurred_on <= source.occurred_on + timedelta(days=1), + StatementDocument.status == "confirmed", + StatementDocument.active_parse_run_id == SourceRecord.parse_run_id, ) - .all() ) + if document.account_id is not None: + transfer_query = transfer_query.filter( + StatementDocument.account_id != document.account_id + ) + transfer_matches = transfer_query.all() if len(transfer_matches) == 1: counterpart = transfer_matches[0] link = db.query(SourceRecordLink).filter_by(source_record_id=counterpart.id).one() @@ -504,14 +532,15 @@ def document_detail(db: Session, *, space_id: uuid.UUID, document_id: uuid.UUID) .order_by(SourceRecord.created_at) .all() ) - hold_ids = [record.id for record in records] + record_ids = [record.id for record in records] resolutions: dict[uuid.UUID, dict[str, Any]] = {} - if hold_ids: + candidates: dict[uuid.UUID, list[dict[str, Any]]] = {} + if record_ids: for item in ( db.query(HoldResolution) .filter( HoldResolution.space_id == space_id, - HoldResolution.hold_source_record_id.in_(hold_ids), + HoldResolution.hold_source_record_id.in_(record_ids), ) .all() ): @@ -523,6 +552,24 @@ def document_detail(db: Session, *, space_id: uuid.UUID, document_id: uuid.UUID) "reason": item.reason, "resolved_at": item.resolved_at, } + for candidate in ( + db.query(DedupCandidate) + .filter( + DedupCandidate.space_id == space_id, + DedupCandidate.source_record_id.in_(record_ids), + ) + .order_by(DedupCandidate.created_at) + .all() + ): + candidates.setdefault(candidate.source_record_id, []).append( + { + "id": candidate.id, + "kind": candidate.candidate_kind, + "confidence": candidate.confidence, + "resolution": candidate.resolution, + "existing_operation_id": candidate.existing_operation_id, + } + ) return { "id": document.id, "status": document.status, @@ -546,6 +593,7 @@ def document_detail(db: Session, *, space_id: uuid.UUID, document_id: uuid.UUID) "review_decision": item.review_decision, "duplicate_operation_id": item.duplicate_operation_id, "hold_resolution": resolutions.get(item.id), + "candidates": candidates.get(item.id, []), } for item in records ], @@ -783,15 +831,8 @@ def confirm_document( db.refresh(document, with_for_update=True) if document.status == "confirmed": return document - if document.status != "ready" or document.account_id is None: + if document.status not in {"ready", "review_required"} or document.account_id is None: raise conflict("IMPORT_NOT_READY", "Import review is not complete") - reconciliation = document.reconciliation or {} - if not reconciliation.get("full") and not reconciliation.get( - "confirmed_without_full_reconciliation" - ): - raise conflict("IMPORT_RECONCILIATION_REQUIRED", "Reconciliation must be confirmed") - if reconciliation.get("matched") is False: - raise conflict("IMPORT_RECONCILIATION_MISMATCH", "Statement arithmetic does not reconcile") pending = ( db.query(DedupCandidate.id) .join(SourceRecord, SourceRecord.id == DedupCandidate.source_record_id) @@ -806,6 +847,15 @@ def confirm_document( records = db.query(SourceRecord).filter_by(parse_run_id=document.active_parse_run_id).all() if any(item.critical for item in records): raise conflict("IMPORT_FIELDS_UNRESOLVED", "Critical source fields remain unresolved") + reconciliation = document.reconciliation or {} + if not reconciliation.get("full") and not reconciliation.get( + "confirmed_without_full_reconciliation" + ): + raise conflict("IMPORT_RECONCILIATION_REQUIRED", "Reconciliation must be confirmed") + if reconciliation.get("matched") is False: + raise conflict("IMPORT_RECONCILIATION_MISMATCH", "Statement arithmetic does not reconcile") + if document.status != "ready": + raise conflict("IMPORT_NOT_READY", "Import review is not complete") run = db.get(ParseRun, document.active_parse_run_id) if run is not None: _apply_hold_matches( diff --git a/backend/tests/test_imports.py b/backend/tests/test_imports.py index 6d7b79c..77fc010 100644 --- a/backend/tests/test_imports.py +++ b/backend/tests/test_imports.py @@ -1,12 +1,14 @@ import uuid from contextlib import contextmanager from datetime import date +from types import SimpleNamespace import pytest from sqlalchemy.orm import Session from app.errors import AppError from app.identity.models import User +from app.imports import router as imports_router from app.imports import service from app.imports.adapters.base import SourceRow from app.imports.models import ( @@ -217,6 +219,259 @@ def test_duplicate_candidate_can_reuse_unique_operation_without_client_id(db: Se assert db.query(Operation).filter_by(space_id=space.id).count() == 1 +def test_duplicate_candidates_ignore_rows_from_same_parse_run(db: Session) -> None: + user, space, document = ready_document(db) + service.confirm_document(db, space_id=space.id, document_id=document.id, user=user) + first_source = ( + db.query(SourceRecord).filter_by(parse_run_id=document.active_parse_run_id).one() + ) + existing_link = db.query(SourceRecordLink).filter_by(source_record_id=first_source.id).one() + second_source = SourceRecord( + space_id=first_source.space_id, + document_id=document.id, + parse_run_id=document.active_parse_run_id, + occurred_on=first_source.occurred_on, + amount_kopecks=first_source.amount_kopecks, + direction=first_source.direction, + row_ref="sheet0:row3", + record_fp=first_source.record_fp, + ) + db.add(second_source) + db.flush() + db.add( + SourceRecordLink( + space_id=space.id, + source_record_id=second_source.id, + operation_id=existing_link.operation_id, + kind="duplicate", + ) + ) + db.flush() + + run = db.get(ParseRun, document.active_parse_run_id) + assert run is not None + assert service._build_candidates(db, document=document, run=run) is False + assert db.query(DedupCandidate).filter_by(space_id=document.space_id).count() == 0 + + +def test_duplicate_candidates_ignore_inactive_parse_runs(db: Session) -> None: + user, space, source_document = ready_document(db) + service.confirm_document(db, space_id=space.id, document_id=source_document.id, user=user) + active_source = ( + db.query(SourceRecord).filter_by(parse_run_id=source_document.active_parse_run_id).one() + ) + active_link = db.query(SourceRecordLink).filter_by(source_record_id=active_source.id).one() + inactive_run = ParseRun( + space_id=space.id, + document_id=source_document.id, + adapter_id="alfa_debit_xlsx", + status="succeeded", + ) + db.add(inactive_run) + db.flush() + inactive_source = SourceRecord( + space_id=space.id, + document_id=source_document.id, + parse_run_id=inactive_run.id, + occurred_on=active_source.occurred_on, + amount_kopecks=active_source.amount_kopecks, + direction=active_source.direction, + row_ref="sheet0:old-row", + record_fp="inactive-run-fingerprint", + ) + db.add(inactive_source) + db.flush() + db.add( + SourceRecordLink( + space_id=space.id, + source_record_id=inactive_source.id, + operation_id=active_link.operation_id, + kind="duplicate", + ) + ) + target_document = StatementDocument( + space_id=space.id, + account_id=source_document.account_id, + original_filename="target.xlsx", + size_bytes=100, + content_sha256=uuid.uuid4().hex + uuid.uuid4().hex, + object_key=uuid.uuid4().hex, + status="review_required", + reconciliation={"full": True, "matched": True}, + ) + db.add(target_document) + db.flush() + target_run = ParseRun( + space_id=space.id, + document_id=target_document.id, + adapter_id="alfa_debit_xlsx", + status="succeeded", + ) + db.add(target_run) + db.flush() + target_document.active_parse_run_id = target_run.id + db.add( + SourceRecord( + space_id=space.id, + document_id=target_document.id, + parse_run_id=target_run.id, + occurred_on=inactive_source.occurred_on, + amount_kopecks=inactive_source.amount_kopecks, + direction=inactive_source.direction, + row_ref="sheet0:row2", + record_fp=inactive_source.record_fp, + ) + ) + db.flush() + + assert service._build_candidates(db, document=target_document, run=target_run) is False + assert db.query(DedupCandidate).filter_by(space_id=space.id).count() == 0 + + +def test_duplicate_candidates_ignore_unconfirmed_documents(db: Session) -> None: + _user, space, first_document = ready_document(db) + first_source = ( + db.query(SourceRecord).filter_by(parse_run_id=first_document.active_parse_run_id).one() + ) + second_document = StatementDocument( + space_id=space.id, + account_id=first_document.account_id, + original_filename="second.xlsx", + size_bytes=100, + content_sha256=uuid.uuid4().hex + uuid.uuid4().hex, + object_key=uuid.uuid4().hex, + status="review_required", + reconciliation={"full": True, "matched": True}, + ) + db.add(second_document) + db.flush() + second_run = ParseRun( + space_id=space.id, + document_id=second_document.id, + adapter_id="alfa_debit_xlsx", + status="succeeded", + ) + db.add(second_run) + db.flush() + second_document.active_parse_run_id = second_run.id + db.add( + SourceRecord( + space_id=space.id, + document_id=second_document.id, + parse_run_id=second_run.id, + occurred_on=first_source.occurred_on, + amount_kopecks=first_source.amount_kopecks, + direction=first_source.direction, + row_ref="sheet0:row2", + record_fp=first_source.record_fp, + ) + ) + db.flush() + + assert service._build_candidates(db, document=second_document, run=second_run) is False + assert db.query(DedupCandidate).filter_by(space_id=space.id).count() == 0 + + +def test_duplicate_candidates_are_retained_before_account_mapping(db: Session) -> None: + user, space, first_document = ready_document(db) + service.confirm_document(db, space_id=space.id, document_id=first_document.id, user=user) + first_source = ( + db.query(SourceRecord).filter_by(parse_run_id=first_document.active_parse_run_id).one() + ) + second_document = StatementDocument( + space_id=space.id, + account_id=None, + original_filename="unmapped.xlsx", + size_bytes=100, + content_sha256=uuid.uuid4().hex + uuid.uuid4().hex, + object_key=uuid.uuid4().hex, + status="review_required", + reconciliation={"full": True, "matched": True}, + ) + db.add(second_document) + db.flush() + second_run = ParseRun( + space_id=space.id, + document_id=second_document.id, + adapter_id="alfa_debit_xlsx", + status="succeeded", + ) + db.add(second_run) + db.flush() + second_document.active_parse_run_id = second_run.id + source = SourceRecord( + space_id=space.id, + document_id=second_document.id, + parse_run_id=second_run.id, + occurred_on=first_source.occurred_on, + amount_kopecks=first_source.amount_kopecks, + direction=first_source.direction, + row_ref="sheet0:row2", + record_fp=first_source.record_fp, + ) + db.add(source) + db.flush() + + assert service._build_candidates(db, document=second_document, run=second_run) is True + candidate = db.query(DedupCandidate).filter_by(source_record_id=source.id).one() + assert candidate.existing_source_record_id == first_source.id + + +def test_import_detail_exposes_pending_candidate_and_blocker(db: Session) -> None: + _user, space, document = ready_document(db) + document.status = "review_required" + source = db.query(SourceRecord).filter_by(parse_run_id=document.active_parse_run_id).one() + candidate = DedupCandidate( + space_id=space.id, + source_record_id=source.id, + candidate_kind="duplicate", + confidence="possible", + ) + db.add(candidate) + db.flush() + + response = imports_router.detail(document.id, db, SimpleNamespace(space=space)) + + assert response["rows"][0]["decision"] == "pending" + assert response["rows"][0]["candidates"] == [ + { + "id": candidate.id, + "kind": "duplicate", + "confidence": "possible", + "resolution": "pending", + "existingOperationId": None, + } + ] + assert response["blockers"] == [ + { + "code": "IMPORT_DECISION_REQUIRED", + "message": "Possible duplicate or transfer requires a decision", + "rowId": str(source.id), + } + ] + assert response["totals"]["pending"] == 1 + + +def test_confirm_reports_pending_candidate_instead_of_generic_not_ready(db: Session) -> None: + user, space, document = ready_document(db) + document.status = "review_required" + source = db.query(SourceRecord).filter_by(parse_run_id=document.active_parse_run_id).one() + db.add( + DedupCandidate( + space_id=space.id, + source_record_id=source.id, + candidate_kind="duplicate", + confidence="possible", + ) + ) + db.flush() + + with pytest.raises(AppError) as exc: + service.confirm_document(db, space_id=space.id, document_id=document.id, user=user) + + assert exc.value.code == "IMPORT_DECISIONS_REQUIRED" + + def test_transfer_merge_revert_restores_counterpart_operation(db: Session) -> None: user, space, first_document = ready_document(db) service.confirm_document(db, space_id=space.id, document_id=first_document.id, user=user) diff --git a/design.pen b/design.pen index 7328931..5e2f605 100644 --- a/design.pen +++ b/design.pen @@ -6,13 +6,17798 @@ "id": "bi8Au", "x": 0, "y": 0, - "name": "Frame", + "name": "00 · Foundations", "clip": true, - "width": 800, - "height": 600, - "fill": "#FFFFFF", - "layout": "none" + "width": 1440, + "height": 800, + "fill": "$paper", + "gap": 64, + "padding": 64, + "children": [ + { + "type": "frame", + "id": "V4ovGz", + "name": "Identity Panel", + "width": 480, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "padding": 40, + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "jllqu", + "name": "Identity Header", + "width": "fill_container", + "layout": "vertical", + "gap": 24, + "children": [ + { + "type": "frame", + "id": "ITYaE", + "name": "Fin Space Mark", + "width": 48, + "height": 48, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "vuwY8", + "name": "Mark Label", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 15, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "Ym6Wm", + "name": "Foundation Eyebrow", + "fill": "#A9C4FF", + "content": "FINSPACE / PRODUCT SYSTEM", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600", + "letterSpacing": 1.2 + }, + { + "type": "text", + "id": "Px6R5", + "name": "Foundation Title", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Money without the fog.", + "lineHeight": 0.96, + "fontFamily": "$font-ui", + "fontSize": 56, + "fontWeight": "600", + "letterSpacing": -1.6 + }, + { + "type": "text", + "id": "J6LUv", + "name": "Foundation Description", + "fill": "#B9B9B6", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "A precise household finance workspace: every ruble traceable, every month explainable.", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "fM137", + "name": "Identity Footer", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "text", + "id": "PoAhm", + "name": "Identity Principle", + "fill": "#7E9EE0", + "content": "CALM DATA / SHARP DECISIONS", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 1.1 + }, + { + "type": "text", + "id": "E94N8", + "name": "Identity Locale", + "fill": "#8E8E8A", + "content": "RUB · Desktop · Mobile", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "v1veyC", + "name": "System Specimen", + "width": 768, + "height": "fill_container", + "layout": "vertical", + "gap": 30, + "children": [ + { + "type": "frame", + "id": "p2M18g", + "name": "Specimen Heading", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "LawwN", + "name": "Specimen Heading Copy", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "kbJu5", + "name": "Specimen Index", + "fill": "$blue", + "content": "00 / FOUNDATION", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "QS8zO", + "name": "Specimen Title", + "fill": "$ink", + "content": "Visual grammar", + "fontFamily": "$font-ui", + "fontSize": 30, + "fontWeight": "600", + "letterSpacing": -0.5 + } + ] + }, + { + "type": "text", + "id": "l8D7h", + "name": "Version", + "fill": "$muted", + "content": "SYSTEM 01 · 2026", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "rectangle", + "id": "d3ddRP", + "name": "Header Rule", + "fill": "$ink", + "width": "fill_container", + "height": 1 + }, + { + "type": "frame", + "id": "MLs9g", + "name": "Palette", + "width": "fill_container", + "height": 92, + "children": [ + { + "type": "frame", + "id": "auAOo", + "name": "INK Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$ink", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "lqF3r", + "name": "INK Label", + "fill": "$white", + "content": "INK", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "jOXUc", + "name": "PAPER Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$paper", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "D59ch", + "name": "PAPER Label", + "fill": "$ink", + "content": "PAPER", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "O19Ur4", + "name": "SIGNAL Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$blue", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "ycX0x", + "name": "SIGNAL Label", + "fill": "$white", + "content": "SIGNAL", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "Xh0J9", + "name": "POSITIVE Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$green", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "NgFo0", + "name": "POSITIVE Label", + "fill": "$white", + "content": "POSITIVE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "ZmD6L", + "name": "ATTENTION Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$amber-soft", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "BswvQ", + "name": "ATTENTION Label", + "fill": "$ink", + "content": "ATTENTION", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "Bqrmi", + "name": "CRITICAL Swatch", + "width": "fill_container", + "height": "fill_container", + "fill": "$red", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "padding": 12, + "justifyContent": "end", + "children": [ + { + "type": "text", + "id": "og918", + "name": "CRITICAL Label", + "fill": "$white", + "content": "CRITICAL", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + } + ] + } + ] + }, + { + "type": "frame", + "id": "D4Q2s", + "name": "Typography", + "width": "fill_container", + "gap": 32, + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "SuwlD", + "name": "Display Type", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "OSgUj", + "name": "Display Label", + "fill": "$muted", + "content": "DISPLAY / FUNNEL SANS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "X6A0E", + "name": "Display Sample", + "fill": "$ink", + "content": "₽184,250", + "fontFamily": "$font-ui", + "fontSize": 46, + "fontWeight": "600", + "letterSpacing": -1.5 + } + ] + }, + { + "type": "frame", + "id": "zXzl7", + "name": "Data Type", + "width": "fill_container", + "layout": "vertical", + "gap": 6, + "children": [ + { + "type": "text", + "id": "E1jJHl", + "name": "Data Label", + "fill": "$muted", + "content": "DATA / GEIST MONO", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "FpBJC", + "name": "Data Sample", + "fill": "$blue", + "content": "+12.4% · 21 SEP", + "fontFamily": "$font-data", + "fontSize": 18, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "X1Hq4", + "name": "Controls", + "width": "fill_container", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "aJ3q1", + "name": "Primary Action", + "fill": "$blue", + "gap": 10, + "padding": [ + 12, + 18 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "peaBG", + "name": "Primary Action Icon", + "width": 16, + "height": 16, + "icon": "plus", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "AgiOH", + "name": "Primary Action Label", + "fill": "$white", + "content": "New operation", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "WTYET", + "name": "Secondary Action", + "stroke": "$ink", + "strokeWidth": 1, + "gap": 10, + "padding": [ + 12, + 18 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "lVGdP", + "name": "Secondary Action Icon", + "width": 16, + "height": 16, + "icon": "upload", + "library": "lucide", + "fill": "$ink" + }, + { + "type": "text", + "id": "a9UDY", + "name": "Secondary Action Label", + "fill": "$ink", + "content": "Import statement", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "vVSW4", + "name": "READY Status", + "fill": "$green-soft", + "padding": [ + 8, + 10 + ], + "children": [ + { + "type": "text", + "id": "eulKF", + "name": "READY Status Label", + "fill": "$green", + "content": "READY", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "CjT7P", + "name": "REVIEW Status", + "fill": "$amber-soft", + "padding": [ + 8, + 10 + ], + "children": [ + { + "type": "text", + "id": "IkL4c", + "name": "REVIEW Status Label", + "fill": "$amber", + "content": "REVIEW", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "Nxrjv", + "name": "VOIDED Status", + "fill": "$red-soft", + "padding": [ + 8, + 10 + ], + "children": [ + { + "type": "text", + "id": "fLZGU", + "name": "VOIDED Status Label", + "fill": "$red", + "content": "VOIDED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + } + ] + }, + { + "type": "frame", + "id": "RW7Bc", + "name": "Metric Strip", + "width": "fill_container", + "height": "fill_container", + "fill": "$blue", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Uxzqg", + "name": "AVAILABLE Metric", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF66", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 20, + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "P8Hb0", + "name": "AVAILABLE Metric Label", + "fill": "#D8E5FF", + "content": "AVAILABLE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "Qei6N", + "name": "AVAILABLE Metric Value", + "fill": "$white", + "content": "₽61 420", + "fontFamily": "$font-data", + "fontSize": 22, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "wgRNM", + "name": "PLANNED Metric", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF66", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 20, + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "PUmBd", + "name": "PLANNED Metric Label", + "fill": "#D8E5FF", + "content": "PLANNED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "yWmfm", + "name": "PLANNED Metric Value", + "fill": "$white", + "content": "₽94 000", + "fontFamily": "$font-data", + "fontSize": 22, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "aSMVc", + "name": "SPENT Metric", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF66", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 20, + "justifyContent": "center", + "children": [ + { + "type": "text", + "id": "UmDR0", + "name": "SPENT Metric Label", + "fill": "#D8E5FF", + "content": "SPENT", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "aG8rj", + "name": "SPENT Metric Value", + "fill": "$white", + "content": "₽72 580", + "fontFamily": "$font-data", + "fontSize": 22, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Ogiv3", + "x": 1520, + "y": 0, + "name": "01 · Access / Invitation", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "U50bC", + "name": "Access Identity", + "width": 560, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "padding": 56, + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "f4fbUb", + "name": "Access Identity Top", + "width": "fill_container", + "layout": "vertical", + "gap": 30, + "children": [ + { + "type": "frame", + "id": "fkxfn", + "name": "Access Brand", + "gap": 14, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "v1KgQ", + "name": "Access Brand Mark", + "width": 40, + "height": 40, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "vD7tJ", + "name": "Access Brand Mark Label", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "tgyB0", + "name": "Access Brand Name", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 13, + "fontWeight": "700", + "letterSpacing": 1.6 + } + ] + }, + { + "type": "text", + "id": "xTvbt", + "name": "Access Statement", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Your household ledger, sealed by design.", + "lineHeight": 1.02, + "fontFamily": "$font-ui", + "fontSize": 50, + "fontWeight": "600", + "letterSpacing": -1.2 + }, + { + "type": "text", + "id": "rrco7", + "name": "Access Explanation", + "fill": "#AAA9A5", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Invite-only access. Every account, operation and statement stays inside one encrypted financial space.", + "lineHeight": 1.45, + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ElaS8", + "name": "Security Facts", + "width": "fill_container", + "stroke": "#FFFFFF33", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "djDBh", + "name": "Security Fact 01", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 18, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "CYBWh", + "name": "Security Fact Index 01", + "fill": "#6F8BC6", + "content": "01", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "lStLM", + "name": "Security Fact Text 01", + "fill": "#D5D5D1", + "content": "14-day secure session", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "UfLlU", + "name": "Security Fact 02", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 18, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "d33Tf", + "name": "Security Fact Index 02", + "fill": "#6F8BC6", + "content": "02", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "fxcc5", + "name": "Security Fact Text 02", + "fill": "#D5D5D1", + "content": "AES-GCM statement encryption", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "s95Uti", + "name": "Security Fact 03", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 18, + "padding": [ + 16, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "xj2H4", + "name": "Security Fact Index 03", + "fill": "#6F8BC6", + "content": "03", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "t7Dz4l", + "name": "Security Fact Text 03", + "fill": "#D5D5D1", + "content": "Space-isolated financial data", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "OlQ6d", + "name": "Invitation Form Area", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 34, + "padding": [ + 54, + 82 + ], + "children": [ + { + "type": "frame", + "id": "ChTYZ", + "name": "Invitation Topbar", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "qL6H7", + "name": "Invitation Step", + "fill": "$blue", + "content": "ACCESS / INVITATION", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "F73nq", + "name": "Sign In Link", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "xH2b0", + "name": "Sign In Prompt", + "fill": "$muted", + "content": "Already joined?", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "kZB9P", + "name": "Sign In Label", + "fill": "$ink", + "content": "Sign in", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "y7s57", + "name": "Invitation Form", + "width": 550, + "layout": "vertical", + "gap": 22, + "children": [ + { + "type": "frame", + "id": "y5AO1R", + "name": "Invitation Space Badge", + "fill": "#E8EEFC", + "gap": 14, + "padding": [ + 12, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "sJQWh", + "name": "Invitation Space Icon", + "width": 18, + "height": 18, + "icon": "users", + "library": "lucide", + "fill": "$blue" + }, + { + "type": "frame", + "id": "AP6Dq", + "name": "Invitation Space Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "pY51W", + "name": "Invitation Space Name", + "fill": "$ink", + "content": "Alexey’s finance", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "text", + "id": "zpW3k", + "name": "Invitation Space Meta", + "fill": "$muted", + "content": "Member access · expires in 6 days", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "text", + "id": "kmNJ4", + "name": "Invitation Title", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Join your financial space", + "lineHeight": 1.05, + "fontFamily": "$font-ui", + "fontSize": 38, + "fontWeight": "600", + "letterSpacing": -0.8 + }, + { + "type": "text", + "id": "Rx4Mc", + "name": "Invitation Subtitle", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Set up your profile. The invitation can be used once.", + "lineHeight": 1.4, + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "y2ocWH", + "name": "Email Field", + "width": "fill_container", + "layout": "vertical", + "gap": 7, + "children": [ + { + "type": "frame", + "id": "e8UJ4E", + "name": "Email Field Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "ooU8O", + "name": "Email Field Label", + "fill": "$ink", + "content": "EMAIL", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "BCk17", + "name": "Email Field Meta", + "fill": "$muted", + "content": "FROM INVITE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "WAqIP", + "name": "Email Input", + "width": "fill_container", + "height": 48, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "loooa", + "name": "Email Input Value", + "fill": "$ink", + "content": "alexey@example.com", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "KIZ6a", + "name": "Full name Field", + "width": "fill_container", + "layout": "vertical", + "gap": 7, + "children": [ + { + "type": "frame", + "id": "DJbVl", + "name": "Full name Field Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "J6R9Ph", + "name": "Full name Field Label", + "fill": "$ink", + "content": "FULL NAME", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "RA0fE", + "name": "Full name Input", + "width": "fill_container", + "height": 48, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oLAXS", + "name": "Full name Input Value", + "fill": "$ink", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "gNvvV", + "name": "Password Field", + "width": "fill_container", + "layout": "vertical", + "gap": 7, + "children": [ + { + "type": "frame", + "id": "W8CY8", + "name": "Password Field Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "WUS2L", + "name": "Password Field Label", + "fill": "$ink", + "content": "PASSWORD", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "nlhQ8", + "name": "Password Field Meta", + "fill": "$muted", + "content": "12+ CHARACTERS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "j62Ve", + "name": "Password Input", + "width": "fill_container", + "height": 48, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "t2oQS", + "name": "Password Input Value", + "fill": "$ink", + "content": "••••••••••••", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "QaQSm", + "name": "Locale And Timezone", + "width": "fill_container", + "gap": 12, + "children": [ + { + "type": "frame", + "id": "lcqiI", + "name": "LANGUAGE Select", + "width": "fill_container", + "layout": "vertical", + "gap": 7, + "children": [ + { + "type": "text", + "id": "ipQqS", + "name": "LANGUAGE Select Label", + "fill": "$ink", + "content": "LANGUAGE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "frame", + "id": "Iz6LY", + "name": "LANGUAGE Select Box", + "width": "fill_container", + "height": 48, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "PGamd", + "name": "LANGUAGE Select Value", + "fill": "$ink", + "content": "Русский · RU", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon", + "id": "mTGVu", + "name": "LANGUAGE Select Chevron", + "width": 16, + "height": 16, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + } + ] + }, + { + "type": "frame", + "id": "a6lKO", + "name": "TIMEZONE Select", + "width": "fill_container", + "layout": "vertical", + "gap": 7, + "children": [ + { + "type": "text", + "id": "pPtje", + "name": "TIMEZONE Select Label", + "fill": "$ink", + "content": "TIMEZONE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "frame", + "id": "Xk7a5", + "name": "TIMEZONE Select Box", + "width": "fill_container", + "height": 48, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "OC0Uo", + "name": "TIMEZONE Select Value", + "fill": "$ink", + "content": "Europe / Moscow", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "normal" + }, + { + "type": "icon", + "id": "M2L3cC", + "name": "TIMEZONE Select Chevron", + "width": 16, + "height": 16, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Upf5H", + "name": "Accept Invitation Button", + "width": "fill_container", + "height": 52, + "fill": "$blue", + "padding": [ + 0, + 18 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "xotSX", + "name": "Accept Invitation Label", + "fill": "$white", + "content": "Accept invitation", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "f2Mtj", + "name": "Accept Invitation Arrow", + "width": 18, + "height": 18, + "icon": "arrow-right", + "library": "lucide", + "fill": "$white" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ilSY7", + "name": "Other Access States", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "children": [ + { + "type": "frame", + "id": "Ey3Yb", + "name": "SIGN IN State", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 18, + 16 + ], + "children": [ + { + "type": "text", + "id": "V0GM1w", + "name": "SIGN IN State Title", + "fill": "$blue", + "content": "SIGN IN", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "j8RPnD", + "name": "SIGN IN State Description", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Email + password", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "pnUIQ", + "name": "RESET REQUEST State", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 18, + 16 + ], + "children": [ + { + "type": "text", + "id": "fbjwQ", + "name": "RESET REQUEST State Title", + "fill": "$blue", + "content": "RESET REQUEST", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "tE0dN", + "name": "RESET REQUEST State Description", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Private 202 response", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "r7OY5v", + "name": "NEW PASSWORD State", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 18, + 16 + ], + "children": [ + { + "type": "text", + "id": "tPIEg", + "name": "NEW PASSWORD State Title", + "fill": "$blue", + "content": "NEW PASSWORD", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "n3ikos", + "name": "NEW PASSWORD State Description", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Revokes all sessions", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "OMSgv", + "name": "LOG OUT State", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 18, + 16 + ], + "children": [ + { + "type": "text", + "id": "VFmfR", + "name": "LOG OUT State Title", + "fill": "$blue", + "content": "LOG OUT", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "ottvG", + "name": "LOG OUT State Description", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Revokes current session", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "b0pIQf", + "x": 0, + "y": 880, + "name": "UX Contract · Feature Coverage", + "clip": true, + "width": 1440, + "height": 900, + "fill": "$paper", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "yp7da", + "name": "Contract Header", + "width": "fill_container", + "height": 210, + "fill": "$ink", + "padding": [ + 44, + 56 + ], + "justifyContent": "space_between", + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "g8Jg6a", + "name": "Contract Header Copy", + "width": 760, + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "text", + "id": "NWxG8", + "name": "Contract Kicker", + "fill": "#8FAEFF", + "content": "BACKEND-DERIVED PRODUCT CONTRACT", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.2 + }, + { + "type": "text", + "id": "VBrsb", + "name": "Contract Title", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Every implemented capability has a visible home.", + "lineHeight": 1.02, + "fontFamily": "$font-ui", + "fontSize": 42, + "fontWeight": "600", + "letterSpacing": -0.9 + } + ] + }, + { + "type": "text", + "id": "C67oi", + "name": "Contract Scope", + "fill": "#8D8D89", + "textGrowth": "fixed-width", + "width": 240, + "content": "API · DOMAIN · TESTS\nNO FRONTEND REFERENCES", + "lineHeight": 1.5, + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "eMkVi", + "name": "Contract Body", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 28, + "padding": [ + 34, + 56 + ], + "children": [ + { + "type": "frame", + "id": "P1SaK", + "name": "Capability Columns", + "width": "fill_container", + "children": [ + { + "type": "frame", + "id": "jQHTM", + "name": "MONEY Contract", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 14, + "padding": [ + 0, + 20, + 0, + 0 + ], + "children": [ + { + "type": "text", + "id": "CTYZd", + "name": "MONEY Contract Title", + "fill": "$blue", + "content": "MONEY", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "o8JbsD", + "name": "MONEY Capability 1", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "Y50r6", + "name": "MONEY Capability Mark 1", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "DIs9E", + "name": "MONEY Capability Text 1", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Accounts · cash / debit / credit", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "j8Twcq", + "name": "MONEY Capability 2", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "f4H70V", + "name": "MONEY Capability Mark 2", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "iEkdI", + "name": "MONEY Capability Text 2", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Expense · income · transfer · refund", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "kVMjC", + "name": "MONEY Capability 3", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "ungl3", + "name": "MONEY Capability Mark 3", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "pEFCC", + "name": "MONEY Capability Text 3", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Edit category · void with reason", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "zmaZS", + "name": "MONEY Capability 4", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "j5zY8", + "name": "MONEY Capability Mark 4", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "OFpJY", + "name": "MONEY Capability Text 4", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Archive at zero · delete unused", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "PsM6I", + "name": "MONTH Contract", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 14, + "padding": [ + 0, + 20, + 0, + 0 + ], + "children": [ + { + "type": "text", + "id": "pyTgL", + "name": "MONTH Contract Title", + "fill": "$blue", + "content": "MONTH", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "zv7sw", + "name": "MONTH Capability 1", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "wvHWa", + "name": "MONTH Capability Mark 1", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "mDosA", + "name": "MONTH Capability Text 1", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Plan assignments · fund / unfund", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "BZiHT", + "name": "MONTH Capability 2", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "XdKtu", + "name": "MONTH Capability Mark 2", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "Mcej2", + "name": "MONTH Capability Text 2", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Expected income · matched states", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "s6SAw", + "name": "MONTH Capability 3", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "iU7Ok", + "name": "MONTH Capability Mark 3", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "vXnDa", + "name": "MONTH Capability Text 3", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Monthly + savings envelopes", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "kesC8", + "name": "MONTH Capability 4", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "WhUxc", + "name": "MONTH Capability Mark 4", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "JtAZU", + "name": "MONTH Capability Text 4", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Close · blockers · reopen cascade · copy", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "boMM1", + "name": "STATEMENTS Contract", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 14, + "padding": [ + 0, + 20, + 0, + 0 + ], + "children": [ + { + "type": "text", + "id": "HKRiu", + "name": "STATEMENTS Contract Title", + "fill": "$blue", + "content": "STATEMENTS", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "uLY6Y", + "name": "STATEMENTS Capability 1", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "qMp6w", + "name": "STATEMENTS Capability Mark 1", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "B6u7F", + "name": "STATEMENTS Capability Text 1", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Upload XLSX / PDF · auto-detect", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "IDQbQ", + "name": "STATEMENTS Capability 2", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "Q5Rra", + "name": "STATEMENTS Capability Mark 2", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "Jccx2", + "name": "STATEMENTS Capability Text 2", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Parse status · account mapping", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Z9S6Y", + "name": "STATEMENTS Capability 3", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "wQUNl", + "name": "STATEMENTS Capability Mark 3", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "P3s6m", + "name": "STATEMENTS Capability Text 3", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Create / discard / duplicate / transfer", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "l9FzU", + "name": "STATEMENTS Capability 4", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "d9CAPe", + "name": "STATEMENTS Capability Mark 4", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "VKwmz", + "name": "STATEMENTS Capability Text 4", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Reconcile · holds · confirm · revert", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "w9hAw", + "name": "SPACE & DATA Contract", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "gap": 14, + "padding": [ + 0, + 20, + 0, + 0 + ], + "children": [ + { + "type": "text", + "id": "Ajd7X", + "name": "SPACE & DATA Contract Title", + "fill": "$blue", + "content": "SPACE & DATA", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "XkGGg", + "name": "SPACE & DATA Capability 1", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "myPMh", + "name": "SPACE & DATA Capability Mark 1", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "etcZw", + "name": "SPACE & DATA Capability Text 1", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Invite-only auth · reset · logout", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "DMwdo", + "name": "SPACE & DATA Capability 2", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "M8j4qM", + "name": "SPACE & DATA Capability Mark 2", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "sCRd2", + "name": "SPACE & DATA Capability Text 2", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Owner/member · invite member", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "f3Ozso", + "name": "SPACE & DATA Capability 3", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "dcrq0", + "name": "SPACE & DATA Capability Mark 3", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "ngM8h", + "name": "SPACE & DATA Capability Text 3", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "One-time encrypted export", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "L0nh9k", + "name": "SPACE & DATA Capability 4", + "width": "fill_container", + "gap": 10, + "children": [ + { + "type": "rectangle", + "id": "JPyzt", + "name": "SPACE & DATA Capability Mark 4", + "fill": "$ink", + "width": 6, + "height": 6 + }, + { + "type": "text", + "id": "BAuT4", + "name": "SPACE & DATA Capability Text 4", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "30-day deletion schedule · cancel", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "rectangle", + "id": "AkYG0", + "name": "Contract Divider", + "fill": "$ink", + "width": "fill_container", + "height": 1 + }, + { + "type": "text", + "id": "GQYnt", + "name": "State Machines Label", + "fill": "$muted", + "content": "STATE MACHINES / MUST REMAIN LEGIBLE", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700", + "letterSpacing": 1.1 + }, + { + "type": "frame", + "id": "dVAsQ", + "name": "State Machines", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1, + "left": 1 + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "inyij", + "name": "BUDGET PERIOD Flow", + "width": "fill_container", + "height": 62, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "z1Kfm", + "name": "BUDGET PERIOD Flow Label Cell", + "width": 210, + "height": "fill_container", + "fill": "$ink", + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "w4OI3P", + "name": "BUDGET PERIOD Flow Label", + "fill": "$white", + "content": "BUDGET PERIOD", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "y2CWf", + "name": "BUDGET PERIOD State 0", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ppDrc", + "name": "BUDGET PERIOD State Text 0", + "fill": "$ink", + "content": "OPEN", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "EYLAN", + "name": "BUDGET PERIOD State Arrow 0", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "iJeVq", + "name": "BUDGET PERIOD State 1", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "EBLsw", + "name": "BUDGET PERIOD State Text 1", + "fill": "$ink", + "content": "CLOSED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "hpFzD", + "name": "BUDGET PERIOD State Arrow 1", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "o4zVC", + "name": "BUDGET PERIOD State 2", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "UDpQz", + "name": "BUDGET PERIOD State Text 2", + "fill": "$blue", + "content": "REOPEN → OPEN", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "byXo6", + "name": "STATEMENT Flow", + "width": "fill_container", + "height": 62, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "StpyP", + "name": "STATEMENT Flow Label Cell", + "width": 210, + "height": "fill_container", + "fill": "$ink", + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "FANhQ", + "name": "STATEMENT Flow Label", + "fill": "$white", + "content": "STATEMENT", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "uRGRK", + "name": "STATEMENT State 0", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "KaAWu", + "name": "STATEMENT State Text 0", + "fill": "$ink", + "content": "UPLOADED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "eqEH0", + "name": "STATEMENT State Arrow 0", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "Dapkh", + "name": "STATEMENT State 1", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eVALg", + "name": "STATEMENT State Text 1", + "fill": "$ink", + "content": "PROCESSING", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "WAbOp", + "name": "STATEMENT State Arrow 1", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "dB34o", + "name": "STATEMENT State 2", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "g5g1L", + "name": "STATEMENT State Text 2", + "fill": "$ink", + "content": "REVIEW / READY", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "srRiF", + "name": "STATEMENT State Arrow 2", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "ozqP4", + "name": "STATEMENT State 3", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Vdrx8", + "name": "STATEMENT State Text 3", + "fill": "$ink", + "content": "CONFIRMED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "bTf0p", + "name": "STATEMENT State Arrow 3", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "xNnCS", + "name": "STATEMENT State 4", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eHq7a", + "name": "STATEMENT State Text 4", + "fill": "$blue", + "content": "DELETED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "Gzogw", + "name": "EXPORT Flow", + "width": "fill_container", + "height": 62, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "u5jnPS", + "name": "EXPORT Flow Label Cell", + "width": 210, + "height": "fill_container", + "fill": "$ink", + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "JpBbK", + "name": "EXPORT Flow Label", + "fill": "$white", + "content": "EXPORT", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "Y9fOY", + "name": "EXPORT State 0", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "NFylI", + "name": "EXPORT State Text 0", + "fill": "$ink", + "content": "QUEUED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "ypvQH", + "name": "EXPORT State Arrow 0", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "BIlmo", + "name": "EXPORT State 1", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "L1yaS", + "name": "EXPORT State Text 1", + "fill": "$ink", + "content": "PROCESSING", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "Nw7ys", + "name": "EXPORT State Arrow 1", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "zVVz2", + "name": "EXPORT State 2", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "cN8Wh", + "name": "EXPORT State Text 2", + "fill": "$ink", + "content": "READY · 1H", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "UIhJN", + "name": "EXPORT State Arrow 2", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "x6p4uA", + "name": "EXPORT State 3", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "IwYr7", + "name": "EXPORT State Text 3", + "fill": "$blue", + "content": "CONSUMED", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "W1UVK0", + "name": "SPACE Flow", + "width": "fill_container", + "height": 62, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "qYQ2u", + "name": "SPACE Flow Label Cell", + "width": 210, + "height": "fill_container", + "fill": "$ink", + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TIBvC", + "name": "SPACE Flow Label", + "fill": "$white", + "content": "SPACE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "EnVJa", + "name": "SPACE State 0", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "V5XO1", + "name": "SPACE State Text 0", + "fill": "$ink", + "content": "ACTIVE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "U8DHV", + "name": "SPACE State Arrow 0", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "ZMtpM", + "name": "SPACE State 1", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "uv3AZ", + "name": "SPACE State Text 1", + "fill": "$ink", + "content": "BLOCKED · 30D", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "Dd1lW", + "name": "SPACE State Arrow 1", + "width": 14, + "height": 14, + "icon": "arrow-right", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "beM6i", + "name": "SPACE State 2", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "right": 1 + }, + "strokeAlignment": "inner", + "gap": 10, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "rNanV", + "name": "SPACE State Text 2", + "fill": "$blue", + "content": "CANCEL / PURGE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Br3jE", + "x": 3040, + "y": 0, + "name": "02 · Month Overview", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "TgawJ", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "DNgGr", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "sZgHZ", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "F44BfU", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "j5Zpi", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "z85S5t", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "RERRe", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "PfVq9", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "KLFMt", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "hWEA9", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "bJkkp", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "rZjib", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "tOyOn", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "HVTs8", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "PNPCW", + "name": "Nav Label · This month", + "fill": "$white", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "cbyqB", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Bgkbe", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Y4Cp4", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "TJ3tu", + "name": "Nav Label · Ledger", + "fill": "#C0C0BC", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "Lriem", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Aq0u1", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "dv3Fk", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "qDVZ0", + "name": "Nav Label · Statements", + "fill": "#C0C0BC", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + }, + { + "type": "frame", + "id": "sarkX", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ufPli", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "wYREV", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "dZvRS", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "RrSAD", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "OjuSc", + "name": "Nav Label · Analytics", + "fill": "#C0C0BC", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "B59IKO", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "x55Bh", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "gCekS", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "nwhof", + "name": "Nav Label · Accounts", + "fill": "#C0C0BC", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "n6Tdqd", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "p1CQ7F", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "juXuG", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "MaXfH", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Q7Opm", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "h2zmYQ", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "k6p2C", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "H0cXd", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "YJnRI", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "lQ215", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Xw1Ac", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "ZFuDd", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "xij2o", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Gqyly", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "nQbuB", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "GcZsR", + "name": "Overview Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 24, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "I4XGZ9", + "name": "Overview Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "pQ07Q", + "name": "Overview Header Copy", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "ISr2P", + "name": "Overview Month Line", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "EKSar", + "name": "Overview Month", + "fill": "$ink", + "content": "September 2026", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "frame", + "id": "MYC2A", + "name": "Overview Open Status", + "fill": "$green-soft", + "padding": [ + 6, + 9 + ], + "children": [ + { + "type": "text", + "id": "jeSQU", + "name": "Overview Open Status Text", + "fill": "$green", + "content": "OPEN", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + } + ] + }, + { + "type": "text", + "id": "y7gDy8", + "name": "Overview Date Range", + "fill": "$muted", + "content": "01–30 SEP · 8 DAYS LEFT", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "BDnLo", + "name": "Overview Header Actions", + "gap": 10, + "children": [ + { + "type": "frame", + "id": "VmCLC", + "name": "Copy Previous Action", + "stroke": "$ink", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 11, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "rLwJV", + "name": "Copy Previous Icon", + "width": 15, + "height": 15, + "icon": "copy", + "library": "lucide", + "fill": "$ink" + }, + { + "type": "text", + "id": "tUQ4A", + "name": "Copy Previous Label", + "fill": "$ink", + "content": "Copy previous", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "fpQYO", + "name": "New Operation Action", + "fill": "$blue", + "gap": 8, + "padding": [ + 11, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "BYemH", + "name": "New Operation Icon", + "width": 15, + "height": 15, + "icon": "plus", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "aHeCA", + "name": "New Operation Label", + "fill": "$white", + "content": "New operation", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "leqqt", + "name": "Overview Metric Grid", + "width": "fill_container", + "height": 150, + "fill": "$blue", + "children": [ + { + "type": "frame", + "id": "HpIoW", + "name": "Overview Metric · ACTUAL POOL", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "uBpH7", + "name": "Overview Metric Label · ACTUAL POOL", + "fill": "#CADBFF", + "content": "ACTUAL POOL", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "iEOmt", + "name": "Overview Metric Value · ACTUAL POOL", + "fill": "$white", + "content": "₽61 420", + "fontFamily": "$font-data", + "fontSize": 24, + "fontWeight": "600" + }, + { + "type": "text", + "id": "quv08", + "name": "Overview Metric Detail · ACTUAL POOL", + "fill": "#C8D9FF", + "content": "cash available now", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "W6nbG", + "name": "Overview Metric · PROJECTED POOL", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "lo6JH", + "name": "Overview Metric Label · PROJECTED POOL", + "fill": "#CADBFF", + "content": "PROJECTED POOL", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "YM9iW", + "name": "Overview Metric Value · PROJECTED POOL", + "fill": "$white", + "content": "₽18 250", + "fontFamily": "$font-data", + "fontSize": 24, + "fontWeight": "600" + }, + { + "type": "text", + "id": "UN0yF", + "name": "Overview Metric Detail · PROJECTED POOL", + "fill": "#C8D9FF", + "content": "after plan + expected", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "z6uKf", + "name": "Overview Metric · FUNDED", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "VNIVr", + "name": "Overview Metric Label · FUNDED", + "fill": "#CADBFF", + "content": "FUNDED", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "w0ulBG", + "name": "Overview Metric Value · FUNDED", + "fill": "$white", + "content": "₽94 000", + "fontFamily": "$font-data", + "fontSize": 24, + "fontWeight": "600" + }, + { + "type": "text", + "id": "bLR0M", + "name": "Overview Metric Detail · FUNDED", + "fill": "#C8D9FF", + "content": "reserved into categories", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "QjkT9", + "name": "Overview Metric · SPENT", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "zkUuV", + "name": "Overview Metric Label · SPENT", + "fill": "#CADBFF", + "content": "SPENT", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.9 + }, + { + "type": "text", + "id": "JtQtA", + "name": "Overview Metric Value · SPENT", + "fill": "$white", + "content": "₽72 580", + "fontFamily": "$font-data", + "fontSize": 24, + "fontWeight": "600" + }, + { + "type": "text", + "id": "MkHPD", + "name": "Overview Metric Detail · SPENT", + "fill": "#C8D9FF", + "content": "77.2% of funded", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "f3aMV", + "name": "Overview Working Row", + "width": "fill_container", + "height": 330, + "gap": 26, + "children": [ + { + "type": "frame", + "id": "D2dCW", + "name": "Month Story", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "b9mjY5", + "name": "Month Story Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "end", + "children": [ + { + "type": "text", + "id": "BweUo", + "name": "Month Story Title", + "fill": "$ink", + "content": "How the month is moving", + "fontFamily": "$font-ui", + "fontSize": 20, + "fontWeight": "600" + }, + { + "type": "text", + "id": "KgB3h", + "name": "Month Story Meta", + "fill": "$blue", + "content": "LIVE STATE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "DnPoy", + "name": "Month Story Flow", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1, + "right": 1, + "left": 1 + }, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "Xffq6", + "name": "Story Step 01", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "gap": 16, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "BjR6P", + "name": "Story Step Index 01", + "fill": "$blue", + "content": "01", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "S3Kokm", + "name": "Story Step Copy 01", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "mNmNP", + "name": "Story Step Title 01", + "fill": "$ink", + "content": "Carry + actual income", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "pb3Zp", + "name": "Story Step Detail 01", + "fill": "$muted", + "content": "General pool", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "ot2O3", + "name": "Story Step Value 01", + "fill": "$ink", + "content": "₽155 420", + "fontFamily": "$font-data", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "A6ySZ", + "name": "Story Step 02", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "gap": 16, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "T6MKb", + "name": "Story Step Index 02", + "fill": "$blue", + "content": "02", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "F9O1cG", + "name": "Story Step Copy 02", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "xBdDW", + "name": "Story Step Title 02", + "fill": "$ink", + "content": "Funded to categories", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "FT2c1", + "name": "Story Step Detail 02", + "fill": "$muted", + "content": "Planned ≠ funded", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "s0Iai9", + "name": "Story Step Value 02", + "fill": "$ink", + "content": "−₽94 000", + "fontFamily": "$font-data", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "P7WCp", + "name": "Story Step 03", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "gap": 16, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "GYv6O", + "name": "Story Step Index 03", + "fill": "$blue", + "content": "03", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "Qyk7X", + "name": "Story Step Copy 03", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "jm6nw", + "name": "Story Step Title 03", + "fill": "$ink", + "content": "Uncategorized expenses", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "fmFjg", + "name": "Story Step Detail 03", + "fill": "$muted", + "content": "Needs attention", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "hBU1b", + "name": "Story Step Value 03", + "fill": "$amber", + "content": "−₽4 260", + "fontFamily": "$font-data", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "nLV9G", + "name": "Story Step 04", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "gap": 16, + "padding": [ + 0, + 16 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ElrkF", + "name": "Story Step Index 04", + "fill": "$blue", + "content": "04", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "i7eHm", + "name": "Story Step Copy 04", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "liykM", + "name": "Story Step Title 04", + "fill": "$ink", + "content": "Pool remaining", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Cheev", + "name": "Story Step Detail 04", + "fill": "$muted", + "content": "Before future income", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "l4n4X", + "name": "Story Step Value 04", + "fill": "$ink", + "content": "₽57 160", + "fontFamily": "$font-data", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "N7Bks", + "name": "Close Readiness", + "width": 360, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 13, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "ZucZo", + "name": "Close Readiness Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ALWjl", + "name": "Close Readiness Title", + "fill": "$white", + "content": "Close readiness", + "fontFamily": "$font-ui", + "fontSize": 19, + "fontWeight": "600" + }, + { + "type": "text", + "id": "rgRrT", + "name": "Close Readiness Count", + "fill": "#FFCC7A", + "content": "2 BLOCKERS", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + } + ] + }, + { + "type": "frame", + "id": "N90A1", + "name": "Readiness · 3 uncategorized expenses", + "width": "fill_container", + "stroke": "#FFFFFF24", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "icon", + "id": "qaxZ6", + "name": "Readiness Icon · 3 uncategorized expenses", + "width": 16, + "height": 16, + "icon": "circle-alert", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "frame", + "id": "E2cmG7", + "name": "Readiness Copy · 3 uncategorized expenses", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "V5MLK", + "name": "Readiness Title · 3 uncategorized expenses", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "3 uncategorized expenses", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "wGWIL", + "name": "Readiness Detail · 3 uncategorized expenses", + "fill": "#8D8D89", + "content": "Assign before closing", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "r9o69B", + "name": "Readiness · 2 unresolved statement holds", + "width": "fill_container", + "stroke": "#FFFFFF24", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "icon", + "id": "SA7Wm", + "name": "Readiness Icon · 2 unresolved statement holds", + "width": 16, + "height": 16, + "icon": "clock-3", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "frame", + "id": "i1u68O", + "name": "Readiness Copy · 2 unresolved statement holds", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "xCeDr", + "name": "Readiness Title · 2 unresolved statement holds", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "2 unresolved statement holds", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "d7X80", + "name": "Readiness Detail · 2 unresolved statement holds", + "fill": "#8D8D89", + "content": "Review September holds", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "y1Ygjc", + "name": "Readiness · Credit reserve underfunded", + "width": "fill_container", + "stroke": "#FFFFFF24", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "icon", + "id": "kEGNA", + "name": "Readiness Icon · Credit reserve underfunded", + "width": 16, + "height": 16, + "icon": "triangle-alert", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "BqawT", + "name": "Readiness Copy · Credit reserve underfunded", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "Gf2lr", + "name": "Readiness Title · Credit reserve underfunded", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Credit reserve underfunded", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "T6Y2A", + "name": "Readiness Detail · Credit reserve underfunded", + "fill": "#8D8D89", + "content": "Warning only", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "TozId", + "name": "Close Month Disabled", + "width": "fill_container", + "height": 40, + "fill": "#30302E", + "gap": 8, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "go7ts", + "name": "Close Month Disabled Icon", + "width": 15, + "height": 15, + "icon": "lock-keyhole", + "library": "lucide", + "fill": "#777773" + }, + { + "type": "text", + "id": "hWvEi", + "name": "Close Month Disabled Label", + "fill": "#777773", + "content": "Resolve blockers to close", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZMqJR", + "name": "Overview Category Strip", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "children": [ + { + "type": "frame", + "id": "joOoK", + "name": "Overview Category Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "EzYY8", + "name": "Overview Category Title", + "fill": "$ink", + "content": "Category pulse", + "fontFamily": "$font-ui", + "fontSize": 18, + "fontWeight": "600" + }, + { + "type": "text", + "id": "DCAy3", + "name": "Overview Category Link", + "fill": "$blue", + "content": "Open full budget →", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "J3lz3", + "name": "Overview Categories", + "width": "fill_container", + "height": 90, + "gap": 12, + "children": [ + { + "type": "frame", + "id": "ZlmIs", + "name": "Category Pulse · Groceries", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 6, + "padding": 12, + "children": [ + { + "type": "frame", + "id": "UFV6I", + "name": "Category Pulse Header · Groceries", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "wTDhp", + "name": "Category Pulse Label · Groceries", + "fill": "$ink", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "O22Ay", + "name": "Category Pulse Value · Groceries", + "fill": "$ink", + "content": "₽8 240", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "gVAAU", + "name": "Category Pulse Detail · Groceries", + "fill": "$muted", + "content": "of ₽14 000", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "IOA0x", + "name": "Category Pulse Track · Groceries", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "L0Uaet", + "name": "Category Pulse Bar · Groceries", + "fill": "$blue", + "width": 100.3, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "TgpIX", + "name": "Category Pulse · Transport", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 6, + "padding": 12, + "children": [ + { + "type": "frame", + "id": "gq6DQ", + "name": "Category Pulse Header · Transport", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "vWfs7", + "name": "Category Pulse Label · Transport", + "fill": "$ink", + "content": "Transport", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "F8ljRG", + "name": "Category Pulse Value · Transport", + "fill": "$ink", + "content": "₽4 870", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "Bbeks", + "name": "Category Pulse Detail · Transport", + "fill": "$muted", + "content": "of ₽6 000", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "Te9fW", + "name": "Category Pulse Track · Transport", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "LmWIU", + "name": "Category Pulse Bar · Transport", + "fill": "$amber", + "width": 137.7, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "qBl8t", + "name": "Category Pulse · Travel envelope", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 6, + "padding": 12, + "children": [ + { + "type": "frame", + "id": "p7Gd7", + "name": "Category Pulse Header · Travel envelope", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "M6zj4m", + "name": "Category Pulse Label · Travel envelope", + "fill": "$ink", + "content": "Travel envelope", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "s5Oh27", + "name": "Category Pulse Value · Travel envelope", + "fill": "$ink", + "content": "₽21 000", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "F9GCox", + "name": "Category Pulse Detail · Travel envelope", + "fill": "$muted", + "content": "saved", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "gjGD9", + "name": "Category Pulse Track · Travel envelope", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "X8Bx7", + "name": "Category Pulse Bar · Travel envelope", + "fill": "$blue", + "width": 119, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "pugy5", + "name": "Category Pulse · Credit reserve", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 6, + "padding": 12, + "children": [ + { + "type": "frame", + "id": "aTp0Z", + "name": "Category Pulse Header · Credit reserve", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "P4zg67", + "name": "Category Pulse Label · Credit reserve", + "fill": "$ink", + "content": "Credit reserve", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Mnnfr", + "name": "Category Pulse Value · Credit reserve", + "fill": "$ink", + "content": "₽12 480", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "y3Ktjg", + "name": "Category Pulse Detail · Credit reserve", + "fill": "$muted", + "content": "of ₽18 100", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "t3SMr", + "name": "Category Pulse Track · Credit reserve", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "aTKMM", + "name": "Category Pulse Bar · Credit reserve", + "fill": "$blue", + "width": 117.3, + "height": 4 + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "DEToL", + "x": 4560, + "y": 0, + "name": "03 · Ledger / Operation Composer", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "UaZlP", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "YbCGQ", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "iWXG5", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "L88km", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "zuEpt", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "VM1aH", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "LRLUe", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "jdmOW", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "PYPLC", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "moxAZ", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "NMoFi", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "DR6Gx", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JTVs7", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "dS4nH", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "F6h3VG", + "name": "Nav Label · This month", + "fill": "#C0C0BC", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "hjL0E", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "lK2gP", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "RIumC", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "M6Wky", + "name": "Nav Label · Ledger", + "fill": "$white", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "JqUV3", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "J2Tkc", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "LQuHd", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "zQfIK", + "name": "Nav Label · Statements", + "fill": "#C0C0BC", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + }, + { + "type": "frame", + "id": "b03noZ", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "eBgBf", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "d7nWH", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "kPipa", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "YzzYx", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "RAh2d", + "name": "Nav Label · Analytics", + "fill": "#C0C0BC", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "B1C6K", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "aJDXV", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "VE3SP", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "JpVjY", + "name": "Nav Label · Accounts", + "fill": "#C0C0BC", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "lgW9T", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "k6bDxD", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "WIOVb", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "V8Owx", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f697D", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "vqizh", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "Z96gm", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "GzeVk", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "qNtiz", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "I1pOO", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Y4M1t1", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "m8dgLm", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "y2P0t", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "TAyUD", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "pZNXJ", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Cu7OX", + "name": "Ledger Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 20, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "XhF6L", + "name": "Ledger Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "AKXTC", + "name": "Ledger Header Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "Qb9v3", + "name": "Ledger Title", + "fill": "$ink", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "text", + "id": "DryIr", + "name": "Ledger Meta", + "fill": "$muted", + "content": "426 OPERATIONS · SEPTEMBER 2026", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "eKiye", + "name": "Ledger New Operation", + "fill": "$blue", + "gap": 8, + "padding": [ + 11, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "ENX7U", + "name": "Ledger New Operation Icon", + "width": 15, + "height": 15, + "icon": "plus", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "RMeIN", + "name": "Ledger New Operation Label", + "fill": "$white", + "content": "New operation", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "B1pbe", + "name": "Ledger Filters", + "width": "fill_container", + "height": 50, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "I4nGIg", + "name": "Ledger Search", + "width": "fill_container", + "gap": 9, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "UDhSP", + "name": "Ledger Search Icon", + "width": 16, + "height": 16, + "icon": "search", + "library": "lucide", + "fill": "$muted" + }, + { + "type": "text", + "id": "ksfLm", + "name": "Ledger Search Placeholder", + "fill": "$muted", + "content": "Search description…", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "N8x6x4", + "name": "Ledger Filter · TYPE", + "stroke": "$line", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 9, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "FhojK", + "name": "Ledger Filter Label · TYPE", + "fill": "$muted", + "content": "TYPE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "x5dDpk", + "name": "Ledger Filter Value · TYPE", + "fill": "$ink", + "content": "All", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "P7Wj6Z", + "name": "Ledger Filter Chevron · TYPE", + "width": 13, + "height": 13, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "Z2i7OO", + "name": "Ledger Filter · ACCOUNT", + "stroke": "$line", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 9, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "YGny8", + "name": "Ledger Filter Label · ACCOUNT", + "fill": "$muted", + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "T6ya0", + "name": "Ledger Filter Value · ACCOUNT", + "fill": "$ink", + "content": "All", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "plDCx", + "name": "Ledger Filter Chevron · ACCOUNT", + "width": 13, + "height": 13, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "FdktT", + "name": "Ledger Filter · CATEGORY", + "stroke": "$line", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 9, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "m0NSZ9", + "name": "Ledger Filter Label · CATEGORY", + "fill": "$muted", + "content": "CATEGORY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "yco4t", + "name": "Ledger Filter Value · CATEGORY", + "fill": "$ink", + "content": "All", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "W0uGl", + "name": "Ledger Filter Chevron · CATEGORY", + "width": 13, + "height": 13, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "frame", + "id": "BKSA8", + "name": "Ledger Filter · STATUS", + "stroke": "$line", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 9, + 10 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "mSoU4", + "name": "Ledger Filter Label · STATUS", + "fill": "$muted", + "content": "STATUS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "t4m4n", + "name": "Ledger Filter Value · STATUS", + "fill": "$ink", + "content": "Confirmed", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "powPh", + "name": "Ledger Filter Chevron · STATUS", + "width": 13, + "height": 13, + "icon": "chevron-down", + "library": "lucide", + "fill": "$muted" + } + ] + } + ] + }, + { + "type": "frame", + "id": "WEiDL", + "name": "Ledger Content", + "width": "fill_container", + "height": "fill_container", + "gap": 18, + "children": [ + { + "type": "frame", + "id": "X4Fks", + "name": "Operations Table", + "width": "fill_container", + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "DXd9M", + "name": "Operations Table Header", + "width": "fill_container", + "height": 42, + "fill": "#EFEEE9", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "t2ggeP", + "name": "Operations Header · DATE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "DATE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "AJrri", + "name": "Operations Header · DESCRIPTION", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "DESCRIPTION", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "u8eari", + "name": "Operations Header · CATEGORY", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 130, + "content": "CATEGORY", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "kt8d5", + "name": "Operations Header · ACCOUNT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "GSChG", + "name": "Operations Header · AMOUNT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "AMOUNT", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "G3VVT", + "name": "Operations Header · STATE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "STATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "Bnnpn", + "name": "Operation Row · Magnit · weekly groceries", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "o2ZiMC", + "name": "Operation Date · Magnit · weekly groceries", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "21 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "ICG7i", + "name": "Operation Description Cell · Magnit · weekly groceries", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "n7vzfc", + "name": "Operation Description · Magnit · weekly groceries", + "fill": "$ink", + "content": "Magnit · weekly groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "QulEG", + "name": "Operation Kind · Magnit · weekly groceries", + "fill": "$muted", + "content": "EXPENSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "MErKk", + "name": "Operation Category · Magnit · weekly groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "dD1qZ", + "name": "Operation Account · Magnit · weekly groceries", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Alfa debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "syzm9", + "name": "Operation Amount · Magnit · weekly groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "−₽3 840", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "UXdDM", + "name": "Operation State · Magnit · weekly groceries", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "CONFIRMED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "lXlhf", + "name": "Operation Row · Salary · Acme Studio", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "jJmQO", + "name": "Operation Date · Salary · Acme Studio", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "20 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "goVzs", + "name": "Operation Description Cell · Salary · Acme Studio", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "x9ltQX", + "name": "Operation Description · Salary · Acme Studio", + "fill": "$ink", + "content": "Salary · Acme Studio", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "h3SaZ", + "name": "Operation Kind · Salary · Acme Studio", + "fill": "$muted", + "content": "INCOME", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "Jik41", + "name": "Operation Category · Salary · Acme Studio", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Income", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "kZszF", + "name": "Operation Account · Salary · Acme Studio", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Alfa debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "F4NbUk", + "name": "Operation Amount · Salary · Acme Studio", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 110, + "content": "+₽95 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "xCS0W", + "name": "Operation State · Salary · Acme Studio", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "CONFIRMED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "WCJEe", + "name": "Operation Row · Card payment", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TyvAj", + "name": "Operation Date · Card payment", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "19 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "ZjGI8", + "name": "Operation Description Cell · Card payment", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "A0O19f", + "name": "Operation Description · Card payment", + "fill": "$ink", + "content": "Card payment", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Sbpwr", + "name": "Operation Kind · Card payment", + "fill": "$muted", + "content": "TRANSFER", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "hRx4K", + "name": "Operation Category · Card payment", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Transfer", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "gw98g", + "name": "Operation Account · Card payment", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Alfa → Credit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "z6nx7y", + "name": "Operation Amount · Card payment", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "−₽18 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "q6CpQb", + "name": "Operation State · Card payment", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "CONFIRMED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "IDdqs", + "name": "Operation Row · Ozon marketplace", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Jzvxc", + "name": "Operation Date · Ozon marketplace", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "18 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "FZsfi", + "name": "Operation Description Cell · Ozon marketplace", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "p7pFPB", + "name": "Operation Description · Ozon marketplace", + "fill": "$ink", + "content": "Ozon marketplace", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Q9g1AZ", + "name": "Operation Kind · Ozon marketplace", + "fill": "$muted", + "content": "EXPENSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "x0Rq8", + "name": "Operation Category · Ozon marketplace", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Shopping", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "kveOd", + "name": "Operation Account · Ozon marketplace", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Ozon debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "OBTNU", + "name": "Operation Amount · Ozon marketplace", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "−₽2 490", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "DRgl2", + "name": "Operation State · Ozon marketplace", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "IMPORTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "G24VsQ", + "name": "Operation Row · Coffee Point", + "width": "fill_container", + "height": 68, + "fill": "#FFF8E7", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "cKgpm", + "name": "Operation Date · Coffee Point", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "17 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "m9yL2", + "name": "Operation Description Cell · Coffee Point", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "BQAJt", + "name": "Operation Description · Coffee Point", + "fill": "$ink", + "content": "Coffee Point", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "lVs4w", + "name": "Operation Kind · Coffee Point", + "fill": "$muted", + "content": "EXPENSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "hbGbf", + "name": "Operation Category · Coffee Point", + "fill": "$amber", + "textGrowth": "fixed-width", + "width": 130, + "content": "Uncategorized", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Av1m4", + "name": "Operation Account · Coffee Point", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Cash", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "GprdG", + "name": "Operation Amount · Coffee Point", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "−₽450", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "xAUeH", + "name": "Operation State · Coffee Point", + "fill": "$amber", + "textGrowth": "fixed-width", + "width": 74, + "content": "ATTENTION", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "EMWP0", + "name": "Operation Row · Refund · Railway tickets", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "L3Ys5", + "name": "Operation Date · Refund · Railway tickets", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "16 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "yd1ly", + "name": "Operation Description Cell · Refund · Railway tickets", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "Mqhtg", + "name": "Operation Description · Refund · Railway tickets", + "fill": "$ink", + "content": "Refund · Railway tickets", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "hWSKd", + "name": "Operation Kind · Refund · Railway tickets", + "fill": "$muted", + "content": "REFUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "nLx0E", + "name": "Operation Category · Refund · Railway tickets", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Travel", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "J1Wj7f", + "name": "Operation Account · Refund · Railway tickets", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Alfa debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ejuTV", + "name": "Operation Amount · Refund · Railway tickets", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 110, + "content": "+₽1 280", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "zbO1i", + "name": "Operation State · Refund · Railway tickets", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 74, + "content": "REFUND", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "dMnS2", + "name": "Operation Row · Restaurant · voided", + "width": "fill_container", + "height": 68, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "sDY7Y", + "name": "Operation Date · Restaurant · voided", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 70, + "content": "14 SEP", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "oyoqA", + "name": "Operation Description Cell · Restaurant · voided", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "jqBo1", + "name": "Operation Description · Restaurant · voided", + "fill": "#999792", + "content": "Restaurant · voided", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "yznZl", + "name": "Operation Kind · Restaurant · voided", + "fill": "$muted", + "content": "VOIDED · duplicate charge", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "text", + "id": "lKMw0", + "name": "Operation Category · Restaurant · voided", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 130, + "content": "Dining", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "R1ttN", + "name": "Operation Account · Restaurant · voided", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "Credit card", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "Hjzli", + "name": "Operation Amount · Restaurant · voided", + "fill": "#999792", + "textGrowth": "fixed-width", + "width": 110, + "content": "−₽2 700", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "JmknS", + "name": "Operation State · Restaurant · voided", + "fill": "$red", + "textGrowth": "fixed-width", + "width": 74, + "content": "VOIDED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "l4Ipt", + "name": "Operations Table Footer", + "width": "fill_container", + "height": "fill_container", + "padding": [ + 0, + 14 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "uZF3R", + "name": "Operations Cursor", + "fill": "$muted", + "content": "Showing 1–7 of 426", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "W4kqO", + "name": "Operations Next", + "fill": "$blue", + "content": "NEXT 200 →", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "sxmTd", + "name": "Operation Composer", + "width": 360, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 16, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "R0W4ji", + "name": "Composer Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "KXSAe", + "name": "Composer Title", + "fill": "$white", + "content": "New operation", + "fontFamily": "$font-ui", + "fontSize": 20, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "dqpaV", + "name": "Composer Close", + "width": 18, + "height": 18, + "icon": "x", + "library": "lucide", + "fill": "#8D8D89" + } + ] + }, + { + "type": "frame", + "id": "UXp5M", + "name": "Composer Kind Tabs", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF33", + "strokeWidth": 1, + "children": [ + { + "type": "frame", + "id": "WxWzq", + "name": "Composer Tab · EXPENSE", + "width": "fill_container", + "height": "fill_container", + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "k6YAr", + "name": "Composer Tab Label · EXPENSE", + "fill": "$white", + "content": "EXPENSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "TqloN", + "name": "Composer Tab · INCOME", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "S3CoH", + "name": "Composer Tab Label · INCOME", + "fill": "#8D8D89", + "content": "INCOME", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "V988iQ", + "name": "Composer Tab · TRANSFER", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TYs8j", + "name": "Composer Tab Label · TRANSFER", + "fill": "#8D8D89", + "content": "TRANSFER", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "YdO9L", + "name": "Composer Tab · REFUND", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "o4IeeP", + "name": "Composer Tab Label · REFUND", + "fill": "#8D8D89", + "content": "REFUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "MmMpJ", + "name": "Composer Amount", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": [ + 16, + 0 + ], + "children": [ + { + "type": "text", + "id": "lXBwi", + "name": "Composer Amount Label", + "fill": "#8D8D89", + "content": "AMOUNT · RUB", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "J8zfW", + "name": "Composer Amount Value", + "fill": "$white", + "content": "₽ 3 840,00", + "fontFamily": "$font-data", + "fontSize": 30, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "ihq42", + "name": "Composer Field · ACCOUNT", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "r5qLze", + "name": "Composer Field Label · ACCOUNT", + "fill": "#777773", + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "YxjhM", + "name": "Composer Field Value · ACCOUNT", + "fill": "$white", + "content": "Alfa debit · •4821", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "vc3ff", + "name": "Composer Field · CATEGORY", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "o0xNFJ", + "name": "Composer Field Label · CATEGORY", + "fill": "#777773", + "content": "CATEGORY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "t6oCx", + "name": "Composer Field Value · CATEGORY", + "fill": "$white", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "xbsYI", + "name": "Composer Field · PAYEE", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hm6RM", + "name": "Composer Field Label · PAYEE", + "fill": "#777773", + "content": "PAYEE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "kZqdb", + "name": "Composer Field Value · PAYEE", + "fill": "$white", + "content": "Magnit", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "E7jyy", + "name": "Composer Field · OCCURRED", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "M39oEG", + "name": "Composer Field Label · OCCURRED", + "fill": "#777773", + "content": "OCCURRED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "Ejmvg", + "name": "Composer Field Value · OCCURRED", + "fill": "$white", + "content": "21 Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "oJD10", + "name": "Composer Field · POSTED", + "width": "fill_container", + "height": 38, + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "UT10x", + "name": "Composer Field Label · POSTED", + "fill": "#777773", + "content": "POSTED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "KPsdQ", + "name": "Composer Field Value · POSTED", + "fill": "$white", + "content": "21 Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "K4dd8b", + "name": "Composer Description", + "width": "fill_container", + "height": 74, + "stroke": "#FFFFFF33", + "strokeWidth": 1, + "layout": "vertical", + "gap": 8, + "padding": 12, + "children": [ + { + "type": "text", + "id": "b6Lgc", + "name": "Composer Description Label", + "fill": "#777773", + "content": "DESCRIPTION", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "wQQYm", + "name": "Composer Description Value", + "fill": "$white", + "content": "Weekly groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "o6Pvf", + "name": "Composer Footer", + "width": "fill_container", + "layout": "vertical", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "iJWvd", + "name": "Composer Save", + "width": "fill_container", + "height": 46, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "nmpYn", + "name": "Composer Save Label", + "fill": "$white", + "content": "Save expense", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "rWm1o", + "name": "Composer Period Hint", + "fill": "#777773", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "September is open · operation can be edited or voided", + "textAlign": "center", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Iql1E", + "x": 6080, + "y": 0, + "name": "04 · Budget Workspace", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "sEU25", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "b2Gdo", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "flw2u", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "GPq5a", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "u1FXIn", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "e8eDa", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "Li6EQ", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "SGX2J", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "D1bAI", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "CqNEa", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "PmwF8", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "wUVFq", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "s1hWqj", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "gYt06", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "mRaiT", + "name": "Nav Label · This month", + "fill": "$white", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "rFfUe", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "I91Oh", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "DLxdG", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "vimbV", + "name": "Nav Label · Ledger", + "fill": "#C0C0BC", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "wsK4F", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "qyKPx", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "RK0wC", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "glDIG", + "name": "Nav Label · Statements", + "fill": "#C0C0BC", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + }, + { + "type": "frame", + "id": "ZAR3V", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "kEljI", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "WIRcm", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "PPMbR", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "tKOrM", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "rYguV", + "name": "Nav Label · Analytics", + "fill": "#C0C0BC", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "nbX1m", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "mS64p", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Kp9Pz", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "j5ZfZv", + "name": "Nav Label · Accounts", + "fill": "#C0C0BC", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "apMGa", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "skhZa", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "V4Nqmt", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "hWg7v", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uEV1u", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "D6S8MP", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "huyBK", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "pf48a", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "wQyHb", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "iQSQk", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "iXmmH", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "x0alLI", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "rQB5e", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "DyWpv", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "cxXiz", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "yFX1n", + "name": "Budget Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 20, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "nPxuE", + "name": "Budget Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JtdMQ", + "name": "Budget Header Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "vowQE", + "name": "Budget Title Line", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "TmPsS", + "name": "Budget Title", + "fill": "$ink", + "content": "September budget", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "frame", + "id": "z5hh16", + "name": "Budget Open Status", + "fill": "$green-soft", + "padding": [ + 6, + 9 + ], + "children": [ + { + "type": "text", + "id": "t6SoI", + "name": "Budget Open Status Label", + "fill": "$green", + "content": "OPEN", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + } + ] + }, + { + "type": "text", + "id": "i4ACZD", + "name": "Budget Subtitle", + "fill": "$muted", + "content": "Plan is intention. Funding is money actually reserved.", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "eo5LQ", + "name": "Budget Header Actions", + "gap": 9, + "children": [ + { + "type": "frame", + "id": "maKUP", + "name": "Budget Action · Copy previous", + "fill": "#00000000", + "stroke": "$ink", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 11, + 13 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "x9OJF5", + "name": "Budget Action Icon · Copy previous", + "width": 15, + "height": 15, + "icon": "copy", + "library": "lucide", + "fill": "$ink" + }, + { + "type": "text", + "id": "aJ9U7", + "name": "Budget Action Label · Copy previous", + "fill": "$ink", + "content": "Copy previous", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "Eny1x", + "name": "Budget Action · Add category", + "fill": "#00000000", + "stroke": "$ink", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 11, + 13 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "tMCfZ", + "name": "Budget Action Icon · Add category", + "width": 15, + "height": 15, + "icon": "plus", + "library": "lucide", + "fill": "$ink" + }, + { + "type": "text", + "id": "LloDM", + "name": "Budget Action Label · Add category", + "fill": "$ink", + "content": "Add category", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "pxNue", + "name": "Budget Action · Close month", + "fill": "$ink", + "stroke": "#00000000", + "strokeWidth": 1, + "gap": 8, + "padding": [ + 11, + 13 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "S1Nfa", + "name": "Budget Action Icon · Close month", + "width": 15, + "height": 15, + "icon": "lock-keyhole", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "bo54A", + "name": "Budget Action Label · Close month", + "fill": "$white", + "content": "Close month", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "dNsnT", + "name": "Budget Summary", + "width": "fill_container", + "height": 140, + "fill": "$blue", + "children": [ + { + "type": "frame", + "id": "tBqkk", + "name": "Budget Summary · GENERAL POOL", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "gQEvc", + "name": "Budget Summary Label · GENERAL POOL", + "fill": "#CADBFF", + "content": "GENERAL POOL", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "dLlhp", + "name": "Budget Summary Value · GENERAL POOL", + "fill": "$white", + "content": "₽61 420", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "SScg3", + "name": "Budget Summary Detail · GENERAL POOL", + "fill": "#C8D9FF", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "actual cash not funded", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "D8hed2", + "name": "Budget Summary · PLANNED", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "HKj2J", + "name": "Budget Summary Label · PLANNED", + "fill": "#CADBFF", + "content": "PLANNED", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "S6ZjUt", + "name": "Budget Summary Value · PLANNED", + "fill": "$white", + "content": "₽112 000", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "pCdQT", + "name": "Budget Summary Detail · PLANNED", + "fill": "#C8D9FF", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "assignments for this month", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "O17ntO", + "name": "Budget Summary · EXPECTED INCOME", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "UO7Ln", + "name": "Budget Summary Label · EXPECTED INCOME", + "fill": "#CADBFF", + "content": "EXPECTED INCOME", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "avn8t", + "name": "Budget Summary Value · EXPECTED INCOME", + "fill": "$white", + "content": "₽30 000", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "vVhIk", + "name": "Budget Summary Detail · EXPECTED INCOME", + "fill": "#C8D9FF", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "₽15 000 already matched", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "e28wfa", + "name": "Budget Summary · PROJECTED POOL", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 18, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "txo2O", + "name": "Budget Summary Label · PROJECTED POOL", + "fill": "#CADBFF", + "content": "PROJECTED POOL", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "NKkiT", + "name": "Budget Summary Value · PROJECTED POOL", + "fill": "$white", + "content": "₽18 250", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Gzo8E", + "name": "Budget Summary Detail · PROJECTED POOL", + "fill": "#C8D9FF", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "carry + expected − planned", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "x2Jg5", + "name": "Budget Body", + "width": "fill_container", + "height": "fill_container", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "UgRfN", + "name": "Budget Categories", + "width": "fill_container", + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "ZpYlI", + "name": "Budget Categories Header", + "width": "fill_container", + "height": 48, + "fill": "#EFEEE9", + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "HK8t6", + "name": "Budget Column · CATEGORY", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "CATEGORY", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "Z2gZT", + "name": "Budget Column · PLAN", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 100, + "content": "PLAN", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "b9887p", + "name": "Budget Column · FUNDED", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 100, + "content": "FUNDED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "j4yYC", + "name": "Budget Column · SPENT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 100, + "content": "SPENT", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "H9T45r", + "name": "Budget Column · AVAILABLE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 110, + "content": "AVAILABLE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "pjSU6", + "name": "Budget Column · ACTION", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 64, + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "afOf7", + "name": "Budget Category · Groceries", + "width": "fill_container", + "height": 78, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JukyP", + "name": "Budget Category Info · Groceries", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "text", + "id": "qfEEN", + "name": "Budget Category Name · Groceries", + "fill": "$ink", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "BsaWj", + "name": "Budget Category Kind · Groceries", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hWxfv", + "name": "Budget Category Kind Label · Groceries", + "fill": "$muted", + "content": "MONTHLY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "n1EV5A", + "name": "Budget Category Track · Groceries", + "width": 82, + "height": 3, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "e9meA", + "name": "Budget Category Bar · Groceries", + "fill": "$blue", + "width": 48.379999999999995, + "height": 3 + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "flOBq", + "name": "Budget PLAN · Groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽14 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "kZkK8", + "name": "Budget FUNDED · Groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽14 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "dhzrg", + "name": "Budget SPENT · Groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽8 240", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "b4IJAb", + "name": "Budget AVAILABLE · Groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "₽5 760", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "L5dB6", + "name": "Budget Fund Action · Groceries", + "width": 64, + "height": 30, + "stroke": "$blue", + "strokeWidth": 1, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "XbBAq", + "name": "Budget Fund Action Label · Groceries", + "fill": "$blue", + "content": "FUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "w832I", + "name": "Budget Category · Transport", + "width": "fill_container", + "height": 78, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "d1eIu", + "name": "Budget Category Info · Transport", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "text", + "id": "dI36U", + "name": "Budget Category Name · Transport", + "fill": "$ink", + "content": "Transport", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "l1Cu5B", + "name": "Budget Category Kind · Transport", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "plydb", + "name": "Budget Category Kind Label · Transport", + "fill": "$muted", + "content": "MONTHLY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "YvQEB", + "name": "Budget Category Track · Transport", + "width": 82, + "height": 3, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "T5UKxn", + "name": "Budget Category Bar · Transport", + "fill": "$blue", + "width": 66.42, + "height": 3 + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "pi3jc", + "name": "Budget PLAN · Transport", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽6 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "S12jAT", + "name": "Budget FUNDED · Transport", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽6 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "m2JC74", + "name": "Budget SPENT · Transport", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽4 870", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "M9uEnT", + "name": "Budget AVAILABLE · Transport", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "₽1 130", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "Hsc59", + "name": "Budget Fund Action · Transport", + "width": 64, + "height": 30, + "stroke": "$blue", + "strokeWidth": 1, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "nKwfO", + "name": "Budget Fund Action Label · Transport", + "fill": "$blue", + "content": "FUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "zrdfZ", + "name": "Budget Category · Home", + "width": "fill_container", + "height": 78, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "LZHWA", + "name": "Budget Category Info · Home", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "text", + "id": "EHDiS", + "name": "Budget Category Name · Home", + "fill": "$ink", + "content": "Home", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "D2hO2X", + "name": "Budget Category Kind · Home", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "cs4qn", + "name": "Budget Category Kind Label · Home", + "fill": "$muted", + "content": "MONTHLY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "K2juIx", + "name": "Budget Category Track · Home", + "width": 82, + "height": 3, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "xLCgH", + "name": "Budget Category Bar · Home", + "fill": "$amber", + "width": 74.61999999999999, + "height": 3 + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "s52bR", + "name": "Budget PLAN · Home", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽32 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "SzoQd", + "name": "Budget FUNDED · Home", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽32 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "lGdrr", + "name": "Budget SPENT · Home", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽29 100", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "j2gCxa", + "name": "Budget AVAILABLE · Home", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "₽2 900", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "sJa0b", + "name": "Budget Fund Action · Home", + "width": 64, + "height": 30, + "stroke": "$blue", + "strokeWidth": 1, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "pB7ER", + "name": "Budget Fund Action Label · Home", + "fill": "$blue", + "content": "FUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "niSDx", + "name": "Budget Category · Travel", + "width": "fill_container", + "height": 78, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Gncf4", + "name": "Budget Category Info · Travel", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "text", + "id": "bfcTS", + "name": "Budget Category Name · Travel", + "fill": "$ink", + "content": "Travel", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "P82tp", + "name": "Budget Category Kind · Travel", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "RtnXH", + "name": "Budget Category Kind Label · Travel", + "fill": "$muted", + "content": "ENVELOPE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "SKW2Q", + "name": "Budget Category Track · Travel", + "width": 82, + "height": 3, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "fPrkv", + "name": "Budget Category Bar · Travel", + "fill": "$blue", + "width": 3, + "height": 3 + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "pLaer", + "name": "Budget PLAN · Travel", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽20 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "jCaG7", + "name": "Budget FUNDED · Travel", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽12 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "QO0bP", + "name": "Budget SPENT · Travel", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽0", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "GrCMY", + "name": "Budget AVAILABLE · Travel", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "₽21 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "u1TK5", + "name": "Budget Fund Action · Travel", + "width": 64, + "height": 30, + "stroke": "$blue", + "strokeWidth": 1, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "qC43E", + "name": "Budget Fund Action Label · Travel", + "fill": "$blue", + "content": "FUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "a8Rr3A", + "name": "Budget Category · Credit reserve", + "width": "fill_container", + "height": 78, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "k3Hfj", + "name": "Budget Category Info · Credit reserve", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "text", + "id": "hV9uu", + "name": "Budget Category Name · Credit reserve", + "fill": "$ink", + "content": "Credit reserve", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "JjnzA", + "name": "Budget Category Kind · Credit reserve", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "zvAnZ", + "name": "Budget Category Kind Label · Credit reserve", + "fill": "$muted", + "content": "SYSTEM · CREDIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "frame", + "id": "AKpu1", + "name": "Budget Category Track · Credit reserve", + "width": 82, + "height": 3, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "sSgk7", + "name": "Budget Category Bar · Credit reserve", + "fill": "$blue", + "width": 25.419999999999998, + "height": 3 + } + ] + } + ] + } + ] + }, + { + "type": "text", + "id": "aWXOi", + "name": "Budget PLAN · Credit reserve", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "—", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "B5mle", + "name": "Budget FUNDED · Credit reserve", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽18 100", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "IdAIG", + "name": "Budget SPENT · Credit reserve", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 100, + "content": "₽5 620", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "500" + }, + { + "type": "text", + "id": "UeKL6", + "name": "Budget AVAILABLE · Credit reserve", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 110, + "content": "₽12 480", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "frame", + "id": "H6Sapx", + "name": "Budget Fund Action · Credit reserve", + "width": 64, + "height": 30, + "stroke": "$blue", + "strokeWidth": 1, + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "XTRKI", + "name": "Budget Fund Action Label · Credit reserve", + "fill": "$blue", + "content": "FUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "PJbuM", + "name": "Budget Add Category", + "width": "fill_container", + "height": "fill_container", + "gap": 8, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "zStmm", + "name": "Budget Add Category Icon", + "width": 15, + "height": 15, + "icon": "plus", + "library": "lucide", + "fill": "$blue" + }, + { + "type": "text", + "id": "a4aBZ", + "name": "Budget Add Category Label", + "fill": "$blue", + "content": "Create monthly category or savings envelope", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "VJIW3", + "name": "Budget Aside", + "width": 350, + "height": "fill_container", + "layout": "vertical", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "Hd2FH", + "name": "Expected Incomes", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "qmjns", + "name": "Expected Incomes Header", + "width": "fill_container", + "fill": "#EFEEE9", + "padding": 14, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Fqzwl", + "name": "Expected Incomes Title", + "fill": "$ink", + "content": "Expected income", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "icon", + "id": "qBrRB", + "name": "Expected Incomes Add", + "width": 16, + "height": 16, + "icon": "plus", + "library": "lucide", + "fill": "$blue" + } + ] + }, + { + "type": "frame", + "id": "iGfGo", + "name": "Expected Income · Salary · Acme", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": 14, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "v2Cuy", + "name": "Expected Income Copy · Salary · Acme", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "V0V12", + "name": "Expected Income Source · Salary · Acme", + "fill": "$ink", + "content": "Salary · Acme", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "ZXtPq", + "name": "Expected Income Meta · Salary · Acme", + "fill": "$green", + "content": "05 SEP · MATCHED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "text", + "id": "ssP1D", + "name": "Expected Income Amount · Salary · Acme", + "fill": "$ink", + "content": "₽95 000", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "VLDB4", + "name": "Expected Income · Freelance", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": 14, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Tpck9", + "name": "Expected Income Copy · Freelance", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "pOuip", + "name": "Expected Income Source · Freelance", + "fill": "$ink", + "content": "Freelance", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "N7ADeU", + "name": "Expected Income Meta · Freelance", + "fill": "$amber", + "content": "25 SEP · PARTIAL", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "text", + "id": "JzdjS", + "name": "Expected Income Amount · Freelance", + "fill": "$ink", + "content": "₽15 000", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "K5qCe", + "name": "Expected Income · Tax return", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": 14, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "XQe7A", + "name": "Expected Income Copy · Tax return", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "Zqg0g", + "name": "Expected Income Source · Tax return", + "fill": "$ink", + "content": "Tax return", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "NHaQ2", + "name": "Expected Income Meta · Tax return", + "fill": "$muted", + "content": "28 SEP · EXPECTED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "text", + "id": "YA5Gn", + "name": "Expected Income Amount · Tax return", + "fill": "$ink", + "content": "₽15 000", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "IyQWz", + "name": "Budget Lifecycle", + "width": "fill_container", + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 14, + "padding": 18, + "children": [ + { + "type": "text", + "id": "MCj2q", + "name": "Budget Lifecycle Kicker", + "fill": "#8FAEFF", + "content": "MONTH LIFECYCLE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "AV9wz", + "name": "Budget Lifecycle Title", + "fill": "$white", + "content": "Close with confidence", + "fontFamily": "$font-ui", + "fontSize": 20, + "fontWeight": "600" + }, + { + "type": "text", + "id": "p2jlbx", + "name": "Budget Lifecycle Description", + "fill": "#A5A5A1", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Closing freezes operations and writes an immutable snapshot. Reopening also opens every later closed month.", + "lineHeight": 1.4, + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "mKlzR", + "name": "Budget Blocker · Unresolved imports · 1", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 10, + "padding": [ + 9, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "vjvZG", + "name": "Budget Blocker Icon · Unresolved imports · 1", + "width": 15, + "height": 15, + "icon": "circle-alert", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "text", + "id": "gs7kZ", + "name": "Budget Blocker Text · Unresolved imports · 1", + "fill": "$white", + "content": "Unresolved imports · 1", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "i2cot", + "name": "Budget Blocker · Unresolved holds · 2", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 10, + "padding": [ + 9, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "tg3OT", + "name": "Budget Blocker Icon · Unresolved holds · 2", + "width": 15, + "height": 15, + "icon": "clock-3", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "text", + "id": "IeyDc", + "name": "Budget Blocker Text · Unresolved holds · 2", + "fill": "$white", + "content": "Unresolved holds · 2", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "lWfav", + "name": "Budget Blocker · Uncategorized expenses · 3", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 10, + "padding": [ + 9, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "EX1Ti", + "name": "Budget Blocker Icon · Uncategorized expenses · 3", + "width": 15, + "height": 15, + "icon": "tag", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "text", + "id": "UeB7H", + "name": "Budget Blocker Text · Uncategorized expenses · 3", + "fill": "$white", + "content": "Uncategorized expenses · 3", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "kj4Dq", + "name": "Budget Blocker · Negative envelopes · 0", + "width": "fill_container", + "stroke": "#FFFFFF22", + "strokeWidth": { + "bottom": 1 + }, + "gap": 10, + "padding": [ + 9, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "zUFpW", + "name": "Budget Blocker Icon · Negative envelopes · 0", + "width": 15, + "height": 15, + "icon": "triangle-alert", + "library": "lucide", + "fill": "$green" + }, + { + "type": "text", + "id": "rRALH", + "name": "Budget Blocker Text · Negative envelopes · 0", + "fill": "$white", + "content": "Negative envelopes · 0", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "l5G0F", + "name": "Budget Reopen Note", + "width": "fill_container", + "fill": "#252524", + "gap": 10, + "padding": 12, + "children": [ + { + "type": "icon", + "id": "Rxsyg", + "name": "Budget Reopen Note Icon", + "width": 15, + "height": 15, + "icon": "history", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "text", + "id": "qI9Oe", + "name": "Budget Reopen Note Text", + "fill": "#A5A5A1", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Closed month? Reopen from its status menu. Later periods reopen in cascade.", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "LOfkB", + "x": 7600, + "y": 0, + "name": "05 · Statement Review", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "CYpoR", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "mQLEE", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "Y234wG", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "j2NT8", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "hF8q0", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "PNmOs", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "wU9Ox", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "lfex1", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "E6a3Jw", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "UhIGw", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "TO77V", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "l0m9N", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "c4atJQ", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "yXble", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "Z3N427", + "name": "Nav Label · This month", + "fill": "#C0C0BC", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "SkhYf", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "gn9pq", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "omXBK", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "LgLYO", + "name": "Nav Label · Ledger", + "fill": "#C0C0BC", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "TdvA3", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "hGflo", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "JerA2", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "HrpNY", + "name": "Nav Label · Statements", + "fill": "$white", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "M4BHwY", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oBrEK", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "NrHj2", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "hCLXq", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Rtwol", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "S4w8Y", + "name": "Nav Label · Analytics", + "fill": "#C0C0BC", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "XnObT", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "MUVx4", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "pEDGm", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "Ib3e8", + "name": "Nav Label · Accounts", + "fill": "#C0C0BC", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "SxlDx", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "t8ZAv", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Fy8kp", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "Rdx9s", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "GjLnB", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "FSTYS", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "X9NZz", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "s8lPb", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "L8Q1p", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "c1zoCI", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "wDVkp", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "abml3", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "xdBKp", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "OW9xA", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "j4CVJL", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "uo3Nw", + "name": "Statement Review Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 18, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "ZsyK7", + "name": "Statements Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "j6Oc0C", + "name": "Statements Header Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "w8RxKV", + "name": "Statements Title", + "fill": "$ink", + "content": "Statement review", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "text", + "id": "ecQWZ", + "name": "Statements Subtitle", + "fill": "$muted", + "content": "Bank facts stay immutable. You decide what enters the ledger.", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "PHBCa", + "name": "Upload Statement", + "fill": "$blue", + "gap": 8, + "padding": [ + 11, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "DGhUU", + "name": "Upload Statement Icon", + "width": 15, + "height": 15, + "icon": "upload", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "e26jua", + "name": "Upload Statement Label", + "fill": "$white", + "content": "Upload XLSX or PDF", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "c1dTN", + "name": "Selected Statement Summary", + "width": "fill_container", + "height": 108, + "fill": "$ink", + "children": [ + { + "type": "frame", + "id": "I42zf", + "name": "Statement Summary · DOCUMENT", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF33", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 16, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "SvBFm", + "name": "Statement Summary Label · DOCUMENT", + "fill": "#777773", + "content": "DOCUMENT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "ssmmw", + "name": "Statement Summary Value · DOCUMENT", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Alfa · Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "700" + }, + { + "type": "text", + "id": "L82qbp", + "name": "Statement Summary Detail · DOCUMENT", + "fill": "#8D8D89", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "alfa_09.xlsx", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "xuqHg", + "name": "Statement Summary · STATUS", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF33", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 16, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "knZT8", + "name": "Statement Summary Label · STATUS", + "fill": "#777773", + "content": "STATUS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "e5ZHou", + "name": "Statement Summary Value · STATUS", + "fill": "#FFCC7A", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "REVIEW REQUIRED", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "La2fs", + "name": "Statement Summary Detail · STATUS", + "fill": "#8D8D89", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "87 rows · 5 attention", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "F3qoPX", + "name": "Statement Summary · ACCOUNT", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF33", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 16, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Fqklz", + "name": "Statement Summary Label · ACCOUNT", + "fill": "#777773", + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "y8rNOt", + "name": "Statement Summary Value · ACCOUNT", + "fill": "$white", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Alfa debit · •4821", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "h88MvI", + "name": "Statement Summary Detail · ACCOUNT", + "fill": "#8D8D89", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "mapped automatically", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "BzsJM", + "name": "Statement Summary · RECONCILIATION", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF33", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 16, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "tpIFi", + "name": "Statement Summary Label · RECONCILIATION", + "fill": "#777773", + "content": "RECONCILIATION", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "dMzm3", + "name": "Statement Summary Value · RECONCILIATION", + "fill": "#65D89A", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "MATCHED", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "VEMAo", + "name": "Statement Summary Detail · RECONCILIATION", + "fill": "#8D8D89", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "mismatch blocks · unavailable requires reason", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "FOwHq", + "name": "Statement Review Body", + "width": "fill_container", + "height": "fill_container", + "gap": 16, + "children": [ + { + "type": "frame", + "id": "FgAMr", + "name": "Statement Documents", + "width": 230, + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "Gbp0q", + "name": "Statement Documents Header", + "width": "fill_container", + "fill": "#EFEEE9", + "layout": "vertical", + "gap": 5, + "padding": 14, + "children": [ + { + "type": "text", + "id": "FJV4S", + "name": "Statement Documents Title", + "fill": "$ink", + "content": "Documents", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + }, + { + "type": "text", + "id": "v4OEsT", + "name": "Statement Documents Meta", + "fill": "$muted", + "content": "ALL SOURCES · ENCRYPTED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "OkkFw", + "name": "Statement Document · Alfa · Sep 2026", + "width": "fill_container", + "fill": "#E8EEFC", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 14, + "children": [ + { + "type": "text", + "id": "Z6UOt", + "name": "Statement Document Name · Alfa · Sep 2026", + "fill": "$ink", + "content": "Alfa · Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "uXa8k", + "name": "Statement Document Meta · Alfa · Sep 2026", + "fill": "$muted", + "content": "87 rows · XLSX", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "BFlbw", + "name": "Statement Document Status · Alfa · Sep 2026", + "fill": "$amber", + "content": "REVIEW · 5", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "vzDcQ", + "name": "Statement Document · Ozon · Sep 2026", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 14, + "children": [ + { + "type": "text", + "id": "mFhre", + "name": "Statement Document Name · Ozon · Sep 2026", + "fill": "$ink", + "content": "Ozon · Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "dwmF8", + "name": "Statement Document Meta · Ozon · Sep 2026", + "fill": "$muted", + "content": "42 rows · PDF", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "NUkh1", + "name": "Statement Document Status · Ozon · Sep 2026", + "fill": "$green", + "content": "READY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "qW8Tg", + "name": "Statement Document · Rocketbank · Aug", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 14, + "children": [ + { + "type": "text", + "id": "rHhZN", + "name": "Statement Document Name · Rocketbank · Aug", + "fill": "$ink", + "content": "Rocketbank · Aug", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "YDvIW", + "name": "Statement Document Meta · Rocketbank · Aug", + "fill": "$muted", + "content": "118 rows · PDF", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "cH4EO", + "name": "Statement Document Status · Rocketbank · Aug", + "fill": "$blue", + "content": "CONFIRMED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "jGsAK", + "name": "Statement Document · Alfa · Aug 2026", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 6, + "padding": 14, + "children": [ + { + "type": "text", + "id": "GMAOi", + "name": "Statement Document Name · Alfa · Aug 2026", + "fill": "$ink", + "content": "Alfa · Aug 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "mPGMF", + "name": "Statement Document Meta · Alfa · Aug 2026", + "fill": "$muted", + "content": "— · XLSX", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "veI4J", + "name": "Statement Document Status · Alfa · Aug 2026", + "fill": "$red", + "content": "FAILED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "mYviL", + "name": "Statement Dropzone", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 9, + "padding": 14, + "justifyContent": "end", + "children": [ + { + "type": "icon", + "id": "iJgs9", + "name": "Statement Dropzone Icon", + "width": 20, + "height": 20, + "icon": "file-up", + "library": "lucide", + "fill": "$blue" + }, + { + "type": "text", + "id": "ih5yV", + "name": "Statement Dropzone Title", + "fill": "$ink", + "content": "Drop a bank statement", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "P6q9Ar", + "name": "Statement Dropzone Meta", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Up to 20 MB · layout detected conservatively", + "lineHeight": 1.3, + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZZfBb", + "name": "Statement Rows", + "width": "fill_container", + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "V7R7s", + "name": "Statement Rows Header", + "width": "fill_container", + "height": 42, + "fill": "#EFEEE9", + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "sVqDu", + "name": "Statement Row Header · BANK FACT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "BANK FACT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "X05hUC", + "name": "Statement Row Header · AMOUNT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "AMOUNT", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "QIPiH", + "name": "Statement Row Header · STATUS", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "STATUS", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "k9qMQ8", + "name": "Statement Row Header · DECISION", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 96, + "content": "DECISION", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "ExcPY", + "name": "Source Row · 21 Sep · Magnit", + "width": "fill_container", + "height": 66, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "HoBvk", + "name": "Source Row Copy · 21 Sep · Magnit", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "l7wp5c", + "name": "Source Row Title · 21 Sep · Magnit", + "fill": "$ink", + "content": "21 Sep · Magnit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "ifZ0C", + "name": "Source Row Meta · 21 Sep · Magnit", + "fill": "$muted", + "content": "Groceries · posted", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "sVAvC", + "name": "Source Row Amount · 21 Sep · Magnit", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽3 840", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "J5ZcDH", + "name": "Source Row Status · 21 Sep · Magnit", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "fUr68", + "name": "Source Row Decision · 21 Sep · Magnit", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 96, + "content": "CREATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "L1xHK", + "name": "Source Row · 20 Sep · Salary", + "width": "fill_container", + "height": 66, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "k2p8K", + "name": "Source Row Copy · 20 Sep · Salary", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "ekVmh", + "name": "Source Row Title · 20 Sep · Salary", + "fill": "$ink", + "content": "20 Sep · Salary", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "onr26", + "name": "Source Row Meta · 20 Sep · Salary", + "fill": "$muted", + "content": "Acme Studio · posted", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "oT6ae", + "name": "Source Row Amount · 20 Sep · Salary", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 90, + "content": "+₽95 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "m0y57", + "name": "Source Row Status · 20 Sep · Salary", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "Mznsr", + "name": "Source Row Decision · 20 Sep · Salary", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 96, + "content": "CREATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "JZU80", + "name": "Source Row · 19 Sep · Transfer", + "width": "fill_container", + "height": 66, + "fill": "#FFF8E7", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Yt2yF", + "name": "Source Row Copy · 19 Sep · Transfer", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "LJVXf", + "name": "Source Row Title · 19 Sep · Transfer", + "fill": "$ink", + "content": "19 Sep · Transfer", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "JhGBA", + "name": "Source Row Meta · 19 Sep · Transfer", + "fill": "$muted", + "content": "Card payment · posted", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "fPhgj", + "name": "Source Row Amount · 19 Sep · Transfer", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽18 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "mYJ3j", + "name": "Source Row Status · 19 Sep · Transfer", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "OoJKf", + "name": "Source Row Decision · 19 Sep · Transfer", + "fill": "$blue", + "textGrowth": "fixed-width", + "width": 96, + "content": "TRANSFER", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "jo0TK", + "name": "Source Row · 18 Sep · Ozon", + "width": "fill_container", + "height": 66, + "fill": "#FFF8E7", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "JQ8j3", + "name": "Source Row Copy · 18 Sep · Ozon", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "sCNdP", + "name": "Source Row Title · 18 Sep · Ozon", + "fill": "$ink", + "content": "18 Sep · Ozon", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "yCK3D", + "name": "Source Row Meta · 18 Sep · Ozon", + "fill": "$muted", + "content": "Marketplace · posted", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "bSdOF", + "name": "Source Row Amount · 18 Sep · Ozon", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽2 490", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "cq19n", + "name": "Source Row Status · 18 Sep · Ozon", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "SSvZF", + "name": "Source Row Decision · 18 Sep · Ozon", + "fill": "$blue", + "textGrowth": "fixed-width", + "width": 96, + "content": "DUPLICATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "K3BvCW", + "name": "Source Row · 17 Sep · Coffee Point", + "width": "fill_container", + "height": 66, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "uBoUm", + "name": "Source Row Copy · 17 Sep · Coffee Point", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "I438Y", + "name": "Source Row Title · 17 Sep · Coffee Point", + "fill": "$ink", + "content": "17 Sep · Coffee Point", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "VUmhJ", + "name": "Source Row Meta · 17 Sep · Coffee Point", + "fill": "$muted", + "content": "No category · posted", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "nB3D3", + "name": "Source Row Amount · 17 Sep · Coffee Point", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽450", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "u4cIen", + "name": "Source Row Status · 17 Sep · Coffee Point", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "er8Z9", + "name": "Source Row Decision · 17 Sep · Coffee Point", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 96, + "content": "CREATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "FyBcm", + "name": "Source Row · 14 Sep · Railway", + "width": "fill_container", + "height": 66, + "fill": "$amber-soft", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "h7MFpE", + "name": "Source Row Copy · 14 Sep · Railway", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "GbU6F", + "name": "Source Row Title · 14 Sep · Railway", + "fill": "$ink", + "content": "14 Sep · Railway", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "l4eWwg", + "name": "Source Row Meta · 14 Sep · Railway", + "fill": "$muted", + "content": "Authorization · hold", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "vYrYJ", + "name": "Source Row Amount · 14 Sep · Railway", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽1 280", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "y37zYT", + "name": "Source Row Status · 14 Sep · Railway", + "fill": "$amber", + "textGrowth": "fixed-width", + "width": 80, + "content": "HOLD", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "V5JYMB", + "name": "Source Row Decision · 14 Sep · Railway", + "fill": "$red", + "textGrowth": "fixed-width", + "width": 96, + "content": "UNRESOLVED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "HA8Tp", + "name": "Source Row · 12 Sep · Rent", + "width": "fill_container", + "height": 66, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 12 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "l4zjB8", + "name": "Source Row Copy · 12 Sep · Rent", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "VFWEs", + "name": "Source Row Title · 12 Sep · Rent", + "fill": "$ink", + "content": "12 Sep · Rent", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "irG77", + "name": "Source Row Meta · 12 Sep · Rent", + "fill": "$muted", + "content": "Duplicate bank row", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "M9wwB", + "name": "Source Row Amount · 12 Sep · Rent", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 90, + "content": "−₽32 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + }, + { + "type": "text", + "id": "dRdyk", + "name": "Source Row Status · 12 Sep · Rent", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 80, + "content": "POSTED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "QM8am", + "name": "Source Row Decision · 12 Sep · Rent", + "fill": "$blue", + "textGrowth": "fixed-width", + "width": 96, + "content": "DISCARD", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "fYFv0", + "name": "Statement Rows Footer", + "width": "fill_container", + "height": "fill_container", + "padding": 12, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "G3UxVF", + "name": "Statement Rows Progress", + "fill": "$amber", + "content": "82 resolved · 5 need attention", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600" + }, + { + "type": "text", + "id": "HG481", + "name": "Statement Rows Bulk", + "fill": "$blue", + "content": "REVIEW NEXT →", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "R0kjbE", + "name": "Hold Resolution Panel", + "width": 318, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 16, + "padding": 18, + "children": [ + { + "type": "frame", + "id": "Vre63", + "name": "Hold Resolution Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "gcebp", + "name": "Hold Resolution Title", + "fill": "$white", + "content": "Resolve hold", + "fontFamily": "$font-ui", + "fontSize": 19, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "Fbcvo", + "name": "Hold Tag", + "fill": "$amber-soft", + "padding": [ + 6, + 8 + ], + "children": [ + { + "type": "text", + "id": "huDOM", + "name": "Hold Tag Label", + "fill": "$amber", + "content": "HOLD", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "text", + "id": "y9Rjw", + "name": "Hold Resolution Amount", + "fill": "$white", + "content": "−₽1 280,00", + "fontFamily": "$font-data", + "fontSize": 27, + "fontWeight": "600" + }, + { + "type": "text", + "id": "q3Mtu", + "name": "Hold Resolution Description", + "fill": "#A5A5A1", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Railway authorization\n14 Sep · Alfa debit · •4821", + "lineHeight": 1.45, + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "WD5xe", + "name": "Hold Match State", + "width": "fill_container", + "fill": "#252524", + "gap": 10, + "padding": 12, + "children": [ + { + "type": "icon", + "id": "a9QHH", + "name": "Hold Match Icon", + "width": 16, + "height": 16, + "icon": "scan-search", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "text", + "id": "HOlYd", + "name": "Hold Match Text", + "fill": "#B5B5B1", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "No unique posted match found. Manual reason is required.", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "CM4mO", + "name": "Hold Reason", + "width": "fill_container", + "height": 82, + "stroke": "#FFFFFF33", + "strokeWidth": 1, + "layout": "vertical", + "gap": 8, + "padding": 12, + "children": [ + { + "type": "text", + "id": "sVSot", + "name": "Hold Reason Label", + "fill": "#8D8D89", + "content": "REASON · REQUIRED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "PEvJm", + "name": "Hold Reason Value", + "fill": "$white", + "content": "Merchant cancelled the authorization", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "KiB0f", + "name": "Hold Action · CONFIRM AS POSTED", + "width": "fill_container", + "height": 44, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "NyVf1", + "name": "Hold Action Label · CONFIRM AS POSTED", + "fill": "$white", + "content": "CONFIRM AS POSTED", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "c8G1wU", + "name": "Hold Action · DISCARD AS CANCELLED", + "width": "fill_container", + "height": 44, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "xwVlx", + "name": "Hold Action Label · DISCARD AS CANCELLED", + "fill": "$white", + "content": "DISCARD AS CANCELLED", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "rectangle", + "id": "Ep6HP", + "name": "Hold Panel Divider", + "fill": "#FFFFFF2C", + "width": "fill_container", + "height": 1 + }, + { + "type": "text", + "id": "Z5dYo", + "name": "Statement Lifecycle Actions Label", + "fill": "#777773", + "content": "DOCUMENT ACTIONS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "x5vhWq", + "name": "Statement Lifecycle Action · Reparse source", + "fill": "#A5A5A1", + "content": "Reparse source", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "fY248", + "name": "Statement Lifecycle Action · Revert confirmed import", + "fill": "#A5A5A1", + "content": "Revert confirmed import", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "el2wB", + "name": "Statement Lifecycle Action · Delete encrypted source", + "fill": "#E27B72", + "content": "Delete encrypted source", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "o6tcR", + "name": "Confirm Statement Disabled", + "width": "fill_container", + "height": 46, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oxUSX", + "name": "Confirm Statement Disabled Label", + "fill": "#777773", + "content": "Resolve 5 items to confirm", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "tjtuk", + "x": 9120, + "y": 0, + "name": "06 · Analytics", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "x0oFQ", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "pxwJ1", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "t986un", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "AHnqI", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "EBTn7", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "uQNR8", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "r8Dtfa", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "s9jr0", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "h1d9Z", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "TybsH", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "h4PGA", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "WLUHU", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "aZi4X", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "q1qvm2", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "h1l19l", + "name": "Nav Label · This month", + "fill": "#C0C0BC", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "Y0kMt", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "gqtX1", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "LSigL", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "k5HDw", + "name": "Nav Label · Ledger", + "fill": "#C0C0BC", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZaErn", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "En66y", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "y7qZfb", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "Y80lLv", + "name": "Nav Label · Statements", + "fill": "#C0C0BC", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + }, + { + "type": "frame", + "id": "w55akq", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "M0jNG", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "lVYwG", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "GlDvR", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "I59jt", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "imgyx", + "name": "Nav Label · Analytics", + "fill": "$white", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ZTk48", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "h1LLDV", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "yIe0v", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "Z6MjU", + "name": "Nav Label · Accounts", + "fill": "#C0C0BC", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "LX8Tj", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "GPhhR", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "v0CPoP", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "XSUXA", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "L3S935", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "PqAFf", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "g2sDr5", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "rFPnz", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "Knmj0", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Xo45b", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Wqm9c", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "hsdUN", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "fcWrU", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "cjzSM", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "x82dU", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "JY971", + "name": "Analytics Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 20, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "z4c7fR", + "name": "Analytics Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "CRHfd", + "name": "Analytics Header Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "cdJU6", + "name": "Analytics Title", + "fill": "$ink", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "text", + "id": "x2FDVL", + "name": "Analytics Subtitle", + "fill": "$muted", + "content": "Transfers excluded from cash flow · refunds netted into spend", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "LNJLS", + "name": "Analytics Range", + "stroke": "$ink", + "strokeWidth": 1, + "children": [ + { + "type": "frame", + "id": "ahX05", + "name": "Analytics Range · MONTH", + "fill": "$ink", + "padding": [ + 10, + 13 + ], + "children": [ + { + "type": "text", + "id": "cU3v6", + "name": "Analytics Range Label · MONTH", + "fill": "$white", + "content": "MONTH", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "pHQik", + "name": "Analytics Range · QUARTER", + "fill": "#00000000", + "padding": [ + 10, + 13 + ], + "children": [ + { + "type": "text", + "id": "rR9r1", + "name": "Analytics Range Label · QUARTER", + "fill": "$ink", + "content": "QUARTER", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "wbfEQ", + "name": "Analytics Range · YEAR", + "fill": "#00000000", + "padding": [ + 10, + 13 + ], + "children": [ + { + "type": "text", + "id": "RDyg5", + "name": "Analytics Range Label · YEAR", + "fill": "$ink", + "content": "YEAR", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "VYhbz", + "name": "Analytics Range · CUSTOM", + "fill": "#00000000", + "padding": [ + 10, + 13 + ], + "children": [ + { + "type": "text", + "id": "i01FN", + "name": "Analytics Range Label · CUSTOM", + "fill": "$ink", + "content": "CUSTOM", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "JKE1J", + "name": "Analytics Balance Metrics", + "width": "fill_container", + "height": 130, + "fill": "$blue", + "children": [ + { + "type": "frame", + "id": "eTJFE", + "name": "Analytics Metric · ASSETS", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 17, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "TK3TR", + "name": "Analytics Metric Label · ASSETS", + "fill": "#CADBFF", + "content": "ASSETS", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "X6FQv", + "name": "Analytics Metric Value · ASSETS", + "fill": "$white", + "content": "₽438 620", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "h5Abri", + "name": "Analytics Metric Detail · ASSETS", + "fill": "#C8D9FF", + "content": "cash + debit balances", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "tFlEO", + "name": "Analytics Metric · LIABILITIES", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 17, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "CxVJv", + "name": "Analytics Metric Label · LIABILITIES", + "fill": "#CADBFF", + "content": "LIABILITIES", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "ASnjf", + "name": "Analytics Metric Value · LIABILITIES", + "fill": "$white", + "content": "₽72 900", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "ouEri", + "name": "Analytics Metric Detail · LIABILITIES", + "fill": "#C8D9FF", + "content": "credit debt", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "qROrV", + "name": "Analytics Metric · NET POSITION", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 17, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Ur9eK", + "name": "Analytics Metric Label · NET POSITION", + "fill": "#CADBFF", + "content": "NET POSITION", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "B7WEz3", + "name": "Analytics Metric Value · NET POSITION", + "fill": "$white", + "content": "₽365 720", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Ww3Xx", + "name": "Analytics Metric Detail · NET POSITION", + "fill": "#C8D9FF", + "content": "as of 21 Sep 2026", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "bfLEB", + "name": "Analytics Metric · MONTH NET", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 17, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "dFBSm", + "name": "Analytics Metric Label · MONTH NET", + "fill": "#CADBFF", + "content": "MONTH NET", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "sHPmU", + "name": "Analytics Metric Value · MONTH NET", + "fill": "$white", + "content": "+₽21 140", + "fontFamily": "$font-data", + "fontSize": 23, + "fontWeight": "600" + }, + { + "type": "text", + "id": "zfgnp", + "name": "Analytics Metric Detail · MONTH NET", + "fill": "#C8D9FF", + "content": "income − expenses + refunds", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "NleBN", + "name": "Analytics Charts", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 18, + "children": [ + { + "type": "frame", + "id": "t2EKNQ", + "name": "Analytics Top Charts", + "width": "fill_container", + "height": 300, + "gap": 18, + "children": [ + { + "type": "frame", + "id": "q7We2F", + "name": "Category Spend Chart", + "width": "fill_container", + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 15, + "padding": 18, + "children": [ + { + "type": "frame", + "id": "h4RHhX", + "name": "Category Spend Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "yxpSp", + "name": "Category Spend Title", + "fill": "$ink", + "content": "Net spend by category", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "jqu8A", + "name": "Category Spend Total", + "fill": "$blue", + "content": "₽72 580", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "ccTsp", + "name": "Category Spend · Home", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "ZXzPm", + "name": "Category Spend Label · Home", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "AB7vm", + "name": "Category Spend Name · Home", + "fill": "$ink", + "content": "Home", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "V5CkQ", + "name": "Category Spend Value · Home", + "fill": "$ink", + "content": "₽29 100", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "NU05S", + "name": "Category Spend Track · Home", + "width": "fill_container", + "height": 5, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "kwEsb", + "name": "Category Spend Bar · Home", + "fill": "$blue", + "width": 310, + "height": 5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "bI5Sy", + "name": "Category Spend · Groceries", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "s2hEHM", + "name": "Category Spend Label · Groceries", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Uzfoh", + "name": "Category Spend Name · Groceries", + "fill": "$ink", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "ZRVDz", + "name": "Category Spend Value · Groceries", + "fill": "$ink", + "content": "₽13 420", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "KMtJG", + "name": "Category Spend Track · Groceries", + "width": "fill_container", + "height": 5, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "TNyg0", + "name": "Category Spend Bar · Groceries", + "fill": "$blue", + "width": 143, + "height": 5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "v2RQTP", + "name": "Category Spend · Transport", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "cuQFe", + "name": "Category Spend Label · Transport", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "qldYk", + "name": "Category Spend Name · Transport", + "fill": "$ink", + "content": "Transport", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "O2Ipo", + "name": "Category Spend Value · Transport", + "fill": "$ink", + "content": "₽8 870", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "lX1Gz", + "name": "Category Spend Track · Transport", + "width": "fill_container", + "height": 5, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "aV4p4", + "name": "Category Spend Bar · Transport", + "fill": "$blue", + "width": 95, + "height": 5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "iAepw", + "name": "Category Spend · Dining", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "PBz1G", + "name": "Category Spend Label · Dining", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "RPJrd", + "name": "Category Spend Name · Dining", + "fill": "$ink", + "content": "Dining", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Hb3ot", + "name": "Category Spend Value · Dining", + "fill": "$ink", + "content": "₽7 240", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "CZeGY", + "name": "Category Spend Track · Dining", + "width": "fill_container", + "height": 5, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "L1tEhF", + "name": "Category Spend Bar · Dining", + "fill": "$amber", + "width": 77, + "height": 5 + } + ] + } + ] + }, + { + "type": "frame", + "id": "BBNr9", + "name": "Category Spend · Uncategorized", + "width": "fill_container", + "layout": "vertical", + "gap": 5, + "children": [ + { + "type": "frame", + "id": "mIT6R", + "name": "Category Spend Label · Uncategorized", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "q2eXe", + "name": "Category Spend Name · Uncategorized", + "fill": "$ink", + "content": "Uncategorized", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "TjXzJ", + "name": "Category Spend Value · Uncategorized", + "fill": "$ink", + "content": "₽4 260", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "TETJg", + "name": "Category Spend Track · Uncategorized", + "width": "fill_container", + "height": 5, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "T7u76", + "name": "Category Spend Bar · Uncategorized", + "fill": "$red", + "width": 45, + "height": 5 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "sj342", + "name": "Cash Flow Chart", + "width": 430, + "height": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 16, + "padding": 18, + "children": [ + { + "type": "frame", + "id": "gmNXo", + "name": "Cash Flow Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "D4LCQS", + "name": "Cash Flow Title", + "fill": "$white", + "content": "Cash flow", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "L0yaRp", + "name": "Cash Flow Meta", + "fill": "#8FAEFF", + "content": "6 MONTHS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + }, + { + "type": "frame", + "id": "uEg6I", + "name": "Cash Flow Bars", + "width": "fill_container", + "height": "fill_container", + "gap": 14, + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "SjcRF", + "name": "Cash Flow · APR", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "XHnUZ", + "name": "Cash Flow Value · APR", + "fill": "#65D89A", + "content": "+18k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "k5xfl", + "name": "Cash Flow Bar · APR", + "fill": "$blue", + "width": 34, + "height": 98 + }, + { + "type": "text", + "id": "p6trN", + "name": "Cash Flow Month · APR", + "fill": "#777773", + "content": "APR", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "ISi84", + "name": "Cash Flow · MAY", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "VbXRu", + "name": "Cash Flow Value · MAY", + "fill": "#65D89A", + "content": "+6k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "FZ9Sa", + "name": "Cash Flow Bar · MAY", + "fill": "$blue", + "width": 34, + "height": 72 + }, + { + "type": "text", + "id": "k1MWo", + "name": "Cash Flow Month · MAY", + "fill": "#777773", + "content": "MAY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "DmTFG", + "name": "Cash Flow · JUN", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "HANAx", + "name": "Cash Flow Value · JUN", + "fill": "#65D89A", + "content": "+31k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "MHKCz", + "name": "Cash Flow Bar · JUN", + "fill": "$blue", + "width": 34, + "height": 122 + }, + { + "type": "text", + "id": "i0bWn", + "name": "Cash Flow Month · JUN", + "fill": "#777773", + "content": "JUN", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "ftCgv", + "name": "Cash Flow · JUL", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "q5Bsh", + "name": "Cash Flow Value · JUL", + "fill": "#65D89A", + "content": "+12k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "M1uid", + "name": "Cash Flow Bar · JUL", + "fill": "$blue", + "width": 34, + "height": 88 + }, + { + "type": "text", + "id": "tt97k", + "name": "Cash Flow Month · JUL", + "fill": "#777773", + "content": "JUL", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "J7WIQ", + "name": "Cash Flow · AUG", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "iYRce", + "name": "Cash Flow Value · AUG", + "fill": "#E27B72", + "content": "−9k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "nPjBA", + "name": "Cash Flow Bar · AUG", + "fill": "$red", + "width": 34, + "height": 55 + }, + { + "type": "text", + "id": "qggl7", + "name": "Cash Flow Month · AUG", + "fill": "#777773", + "content": "AUG", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "N6iOmv", + "name": "Cash Flow · SEP", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 7, + "justifyContent": "end", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "GaQnj", + "name": "Cash Flow Value · SEP", + "fill": "#65D89A", + "content": "+21k", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "600" + }, + { + "type": "rectangle", + "id": "r2mzA", + "name": "Cash Flow Bar · SEP", + "fill": "$blue", + "width": 34, + "height": 106 + }, + { + "type": "text", + "id": "w1evkL", + "name": "Cash Flow Month · SEP", + "fill": "#777773", + "content": "SEP", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "oo5OJ", + "name": "Analytics Bottom Charts", + "width": "fill_container", + "height": "fill_container", + "gap": 18, + "children": [ + { + "type": "frame", + "id": "fmZTx", + "name": "Plan Fact Chart", + "width": "fill_container", + "height": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 12, + "padding": 18, + "children": [ + { + "type": "frame", + "id": "JgN0o", + "name": "Plan Fact Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "tvD1L", + "name": "Plan Fact Title", + "fill": "$ink", + "content": "Plan vs fact · September", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "cjVQi", + "name": "Plan Fact State", + "fill": "$green", + "content": "LIVE · OPEN", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "kdQOR", + "name": "Plan Fact · Groceries", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "QET7n", + "name": "Plan Fact Name · Groceries", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "lFUOO", + "name": "Plan Fact Planned · Groceries", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "PLAN ₽14 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "NcvVz", + "name": "Plan Fact Actual · Groceries", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 120, + "content": "FACT ₽13 420", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "Qpgmt", + "name": "Plan Fact · Transport", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "EGzKE", + "name": "Plan Fact Name · Transport", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Transport", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "mUCZi", + "name": "Plan Fact Planned · Transport", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "PLAN ₽6 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "XTaYg", + "name": "Plan Fact Actual · Transport", + "fill": "$red", + "textGrowth": "fixed-width", + "width": 120, + "content": "FACT ₽8 870", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "EdFhV", + "name": "Plan Fact · Home", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Rrful", + "name": "Plan Fact Name · Home", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Home", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "VCyoI", + "name": "Plan Fact Planned · Home", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "PLAN ₽32 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "dhI75", + "name": "Plan Fact Actual · Home", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 120, + "content": "FACT ₽29 100", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "hkKvt", + "name": "Plan Fact · Dining", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "ASkum", + "name": "Plan Fact Name · Dining", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Dining", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "QQ4U4", + "name": "Plan Fact Planned · Dining", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "PLAN ₽5 000", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "afo6C", + "name": "Plan Fact Actual · Dining", + "fill": "$red", + "textGrowth": "fixed-width", + "width": 120, + "content": "FACT ₽7 240", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "kkmUJ", + "name": "Balance Breakdown", + "width": 430, + "height": "fill_container", + "fill": "#EFEEE9", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 12, + "padding": 18, + "children": [ + { + "type": "text", + "id": "n1LRf", + "name": "Balance Breakdown Title", + "fill": "$ink", + "content": "Balances", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "eOs6x", + "name": "Balance · Alfa debit", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "YEdkY", + "name": "Balance Copy · Alfa debit", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "BWsGQ", + "name": "Balance Name · Alfa debit", + "fill": "$ink", + "content": "Alfa debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "G1gGtP", + "name": "Balance Type · Alfa debit", + "fill": "$muted", + "content": "DEBIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "ODOGW", + "name": "Balance Value · Alfa debit", + "fill": "$ink", + "content": "₽184 250", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "kFct3", + "name": "Balance · Ozon debit", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "N4nj5", + "name": "Balance Copy · Ozon debit", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "k3SxHC", + "name": "Balance Name · Ozon debit", + "fill": "$ink", + "content": "Ozon debit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "BZj9F", + "name": "Balance Type · Ozon debit", + "fill": "$muted", + "content": "DEBIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "Ql37J", + "name": "Balance Value · Ozon debit", + "fill": "$ink", + "content": "₽132 870", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "NDLw3", + "name": "Balance · Cash", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "q8YuMd", + "name": "Balance Copy · Cash", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "yz08Z", + "name": "Balance Name · Cash", + "fill": "$ink", + "content": "Cash", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "OQrjF", + "name": "Balance Type · Cash", + "fill": "$muted", + "content": "CASH", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "CpMcP", + "name": "Balance Value · Cash", + "fill": "$ink", + "content": "₽121 500", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "RD5H2", + "name": "Balance · Alfa credit", + "width": "fill_container", + "height": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "UsChO", + "name": "Balance Copy · Alfa credit", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "km3kG", + "name": "Balance Name · Alfa credit", + "fill": "$ink", + "content": "Alfa credit", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + }, + { + "type": "text", + "id": "F5QlvT", + "name": "Balance Type · Alfa credit", + "fill": "$muted", + "content": "LIABILITY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "TDjzX", + "name": "Balance Value · Alfa credit", + "fill": "$red", + "content": "−₽72 900", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "f7pnp", + "x": 10640, + "y": 0, + "name": "07 · Accounts / Space & Data", + "clip": true, + "width": 1440, + "height": 1024, + "fill": "$paper", + "children": [ + { + "type": "frame", + "id": "uXwoB", + "name": "Overview Sidebar", + "width": 238, + "height": 974, + "fill": "$ink", + "layout": "vertical", + "padding": [ + 32, + 24 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "r6z66", + "name": "Overview Sidebar Top", + "width": "fill_container", + "layout": "vertical", + "gap": 34, + "children": [ + { + "type": "frame", + "id": "snPhb", + "name": "Overview Brand", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "kjzQt", + "name": "Overview Brand Mark", + "width": 34, + "height": 34, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "a2EdW", + "name": "Overview Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "uelUd", + "name": "Overview Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700", + "letterSpacing": 1.3 + } + ] + }, + { + "type": "frame", + "id": "r8hUYU", + "name": "Overview Space", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 5, + "padding": [ + 0, + 0, + 18, + 0 + ], + "children": [ + { + "type": "text", + "id": "WNcXR", + "name": "Overview Space Label", + "fill": "#777773", + "content": "FINANCIAL SPACE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 1 + }, + { + "type": "text", + "id": "h5i7C", + "name": "Overview Space Name", + "fill": "$white", + "content": "Morozov household", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "text", + "id": "vOpas", + "name": "Overview Space Role", + "fill": "#8FAEFF", + "content": "OWNER · ACTIVE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "600", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "rt29J", + "name": "Overview Navigation", + "width": "fill_container", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "frame", + "id": "Auj6C", + "name": "Nav · This month", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "Iqo2l", + "name": "Nav Lead · This month", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "tyGTN", + "name": "Nav Icon · This month", + "width": 17, + "height": 17, + "icon": "calendar-range", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "fayy5", + "name": "Nav Label · This month", + "fill": "#C0C0BC", + "content": "This month", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "jZnm2", + "name": "Nav · Ledger", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "TVIet", + "name": "Nav Lead · Ledger", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "UOpIO", + "name": "Nav Icon · Ledger", + "width": 17, + "height": 17, + "icon": "rows-3", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "OHsek", + "name": "Nav Label · Ledger", + "fill": "#C0C0BC", + "content": "Ledger", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "l53vu", + "name": "Nav · Statements", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "KMbFo", + "name": "Nav Lead · Statements", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "MLyYF", + "name": "Nav Icon · Statements", + "width": 17, + "height": 17, + "icon": "inbox", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "o3yMDy", + "name": "Nav Label · Statements", + "fill": "#C0C0BC", + "content": "Statements", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + }, + { + "type": "frame", + "id": "gMWTS", + "name": "Nav Count · Statements", + "width": 22, + "height": 22, + "fill": "$amber-soft", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "tmcok", + "name": "Nav Count Text · Statements", + "fill": "$amber", + "content": "3", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "sC4PK", + "name": "Nav · Analytics", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "V7gY8", + "name": "Nav Lead · Analytics", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "kX2cZ", + "name": "Nav Icon · Analytics", + "width": 17, + "height": 17, + "icon": "chart-no-axes-combined", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "s6YWUL", + "name": "Nav Label · Analytics", + "fill": "#C0C0BC", + "content": "Analytics", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + }, + { + "type": "frame", + "id": "i8hN8Y", + "name": "Nav · Accounts", + "width": "fill_container", + "height": 42, + "fill": "$blue", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "k2a1Y", + "name": "Nav Lead · Accounts", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "S6y7o", + "name": "Nav Icon · Accounts", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "fjRPk", + "name": "Nav Label · Accounts", + "fill": "$white", + "content": "Accounts", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "jauNh", + "name": "Nav · Space & data", + "width": "fill_container", + "height": 42, + "fill": "#00000000", + "gap": 12, + "padding": [ + 0, + 12 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "iKZIm", + "name": "Nav Lead · Space & data", + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "jIX5F", + "name": "Nav Icon · Space & data", + "width": 17, + "height": 17, + "icon": "settings-2", + "library": "lucide", + "fill": "#8D8D89" + }, + { + "type": "text", + "id": "IkSPT", + "name": "Nav Label · Space & data", + "fill": "#C0C0BC", + "content": "Space & data", + "fontFamily": "$font-ui", + "fontSize": 14 + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Xdf8p", + "name": "Overview Sidebar Bottom", + "width": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "vWBES", + "name": "Overview Sync State", + "gap": 8, + "alignItems": "center", + "children": [ + { + "type": "ellipse", + "id": "yuVY1", + "name": "Overview Sync Dot", + "fill": "$green", + "width": 7, + "height": 7 + }, + { + "type": "text", + "id": "lquSr", + "name": "Overview Sync Text", + "fill": "#8D8D89", + "content": "All data synced", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "srOPf", + "name": "Overview Profile", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "top": 1 + }, + "gap": 10, + "padding": [ + 14, + 0, + 0, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "m9gpoE", + "name": "Overview Avatar", + "width": 34, + "height": 34, + "fill": "#30302E", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Qdhq5", + "name": "Overview Avatar Text", + "fill": "$white", + "content": "AM", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "zri2B", + "name": "Overview Profile Copy", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "w33pl", + "name": "Overview Profile Name", + "fill": "$white", + "content": "Alexey Morozov", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + }, + { + "type": "text", + "id": "bWHrF", + "name": "Overview Profile Meta", + "fill": "#777773", + "content": "RU · Europe/Moscow", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "WPJcW", + "name": "Logout Action", + "width": 15, + "height": 15, + "icon": "log-out", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "n6Gxg", + "name": "Accounts And Data Main", + "width": "fill_container", + "height": 974, + "layout": "vertical", + "gap": 20, + "padding": [ + 34, + 42 + ], + "children": [ + { + "type": "frame", + "id": "kmtPX", + "name": "Accounts Data Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "gSnnb", + "name": "Accounts Data Header Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "uBvh5", + "name": "Accounts Data Title", + "fill": "$ink", + "content": "Accounts & control", + "fontFamily": "$font-ui", + "fontSize": 34, + "fontWeight": "600", + "letterSpacing": -0.7 + }, + { + "type": "text", + "id": "Gve3z", + "name": "Accounts Data Subtitle", + "fill": "$muted", + "content": "RUB only · balances derived from confirmed postings", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "D18Xm", + "name": "Space Owner Badge", + "fill": "#E8EEFC", + "gap": 8, + "padding": [ + 9, + 11 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "BgZ3T", + "name": "Space Owner Icon", + "width": 15, + "height": 15, + "icon": "shield-check", + "library": "lucide", + "fill": "$blue" + }, + { + "type": "text", + "id": "S1rwc", + "name": "Space Owner Label", + "fill": "$blue", + "content": "OWNER · MOROZOV HOUSEHOLD", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.6 + } + ] + } + ] + }, + { + "type": "frame", + "id": "rLJLc", + "name": "Accounts Data Tabs", + "width": "fill_container", + "height": 42, + "stroke": "$line", + "strokeWidth": { + "bottom": 1 + }, + "children": [ + { + "type": "frame", + "id": "ndGJV", + "name": "Accounts Data Tab · ACCOUNTS", + "height": "fill_container", + "stroke": "$blue", + "strokeWidth": { + "bottom": 2 + }, + "padding": [ + 0, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "MGpLn", + "name": "Accounts Data Tab Label · ACCOUNTS", + "fill": "$blue", + "content": "ACCOUNTS", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "puOA0", + "name": "Accounts Data Tab · MEMBER INVITE", + "height": "fill_container", + "stroke": "#00000000", + "strokeWidth": { + "bottom": 2 + }, + "padding": [ + 0, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "T5D7yb", + "name": "Accounts Data Tab Label · MEMBER INVITE", + "fill": "$muted", + "content": "MEMBER INVITE", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "ry6lh", + "name": "Accounts Data Tab · DATA EXPORT", + "height": "fill_container", + "stroke": "#00000000", + "strokeWidth": { + "bottom": 2 + }, + "padding": [ + 0, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Cdh7b", + "name": "Accounts Data Tab Label · DATA EXPORT", + "fill": "$muted", + "content": "DATA EXPORT", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "CJJgl", + "name": "Accounts Data Tab · DELETION", + "height": "fill_container", + "stroke": "#00000000", + "strokeWidth": { + "bottom": 2 + }, + "padding": [ + 0, + 16 + ], + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "L4oo4Z", + "name": "Accounts Data Tab Label · DELETION", + "fill": "$muted", + "content": "DELETION", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + } + ] + }, + { + "type": "frame", + "id": "vHwfn", + "name": "Accounts Data Body", + "width": "fill_container", + "height": "fill_container", + "gap": 20, + "children": [ + { + "type": "frame", + "id": "pevqS", + "name": "Accounts Workspace", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "fcl15", + "name": "Accounts List", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "z8VY1V", + "name": "Accounts List Header", + "width": "fill_container", + "height": 44, + "fill": "#EFEEE9", + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "JVDrW", + "name": "Accounts Column · ACCOUNT", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "K8czgo", + "name": "Accounts Column · TYPE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "TYPE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "hGuwH", + "name": "Accounts Column · BALANCE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "BALANCE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "MRdwZ", + "name": "Accounts Column · STATE", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "STATE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + } + ] + }, + { + "type": "frame", + "id": "YHTg1", + "name": "Account · Alfa debit · •4821", + "width": "fill_container", + "height": 64, + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "IZTGd", + "name": "Account Name Cell · Alfa debit · •4821", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "Fza4S", + "name": "Account Name · Alfa debit · •4821", + "fill": "$ink", + "content": "Alfa debit · •4821", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "A3NLLt", + "name": "Account Rule · Alfa debit · •4821", + "fill": "$muted", + "content": "Archive only at zero balance", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "bQSv8", + "name": "Account Type · Alfa debit · •4821", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "DEBIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "LRhT3", + "name": "Account Balance · Alfa debit · •4821", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 120, + "content": "₽184 250", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "Euxue", + "name": "Account State · Alfa debit · •4821", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 90, + "content": "ACTIVE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "v7CRfo", + "name": "Account · Ozon debit · •9910", + "width": "fill_container", + "height": 64, + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "ddeH0", + "name": "Account Name Cell · Ozon debit · •9910", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "ZPrNb", + "name": "Account Name · Ozon debit · •9910", + "fill": "$ink", + "content": "Ozon debit · •9910", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "wAM1b", + "name": "Account Rule · Ozon debit · •9910", + "fill": "$muted", + "content": "Archive only at zero balance", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "Byg8V", + "name": "Account Type · Ozon debit · •9910", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "DEBIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "dixuI", + "name": "Account Balance · Ozon debit · •9910", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 120, + "content": "₽132 870", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "fGJ7F", + "name": "Account State · Ozon debit · •9910", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 90, + "content": "ACTIVE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "BeUpO", + "name": "Account · Cash", + "width": "fill_container", + "height": 64, + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "jL1Zj", + "name": "Account Name Cell · Cash", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "oJSMl", + "name": "Account Name · Cash", + "fill": "$ink", + "content": "Cash", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "PQUWy", + "name": "Account Rule · Cash", + "fill": "$muted", + "content": "Archive only at zero balance", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "p3B4s", + "name": "Account Type · Cash", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "CASH", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "fgwlK", + "name": "Account Balance · Cash", + "fill": "$ink", + "textGrowth": "fixed-width", + "width": 120, + "content": "₽121 500", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "tV1mb", + "name": "Account State · Cash", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 90, + "content": "ACTIVE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "I8aFO", + "name": "Account · Alfa credit · •1102", + "width": "fill_container", + "height": 64, + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "yZfTn", + "name": "Account Name Cell · Alfa credit · •1102", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "MuZq6", + "name": "Account Name · Alfa credit · •1102", + "fill": "$ink", + "content": "Alfa credit · •1102", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "ItGvt", + "name": "Account Rule · Alfa credit · •1102", + "fill": "$muted", + "content": "Archive only at zero balance", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "xpRs7", + "name": "Account Type · Alfa credit · •1102", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "CREDIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "mIJbx", + "name": "Account Balance · Alfa credit · •1102", + "fill": "$red", + "textGrowth": "fixed-width", + "width": 120, + "content": "−₽72 900", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "QUMjR", + "name": "Account State · Alfa credit · •1102", + "fill": "$green", + "textGrowth": "fixed-width", + "width": 90, + "content": "ACTIVE", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "hORZu", + "name": "Account · Old salary card", + "width": "fill_container", + "height": 64, + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 0, + 14 + ], + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "YS6dY", + "name": "Account Name Cell · Old salary card", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "K46Ne", + "name": "Account Name · Old salary card", + "fill": "$muted", + "content": "Old salary card", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "MXAC1", + "name": "Account Rule · Old salary card", + "fill": "$muted", + "content": "Delete only if never used", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "text", + "id": "o8aWu", + "name": "Account Type · Old salary card", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "DEBIT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "E1D3eW", + "name": "Account Balance · Old salary card", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 120, + "content": "₽0", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + }, + { + "type": "text", + "id": "R0Flz", + "name": "Account State · Old salary card", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": 90, + "content": "ARCHIVED", + "textAlign": "right", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "l3q6Q", + "name": "New Account Form", + "width": "fill_container", + "height": "fill_container", + "fill": "#E8EEFC", + "stroke": "$blue", + "strokeWidth": 1, + "layout": "vertical", + "gap": 12, + "padding": 16, + "children": [ + { + "type": "frame", + "id": "ceXfm", + "name": "New Account Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "GvJkV", + "name": "New Account Title", + "fill": "$ink", + "content": "Create account", + "fontFamily": "$font-ui", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Y0N6D", + "name": "New Account Currency", + "fill": "$blue", + "content": "CURRENCY · RUB", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "ZKN4k", + "name": "New Account Fields", + "width": "fill_container", + "gap": 8, + "children": [ + { + "type": "frame", + "id": "RtwUE", + "name": "New Account Field · NAME", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 5, + "padding": 10, + "children": [ + { + "type": "text", + "id": "x3WwQ", + "name": "New Account Field Label · NAME", + "fill": "$muted", + "content": "NAME", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "CC1zy", + "name": "New Account Field Value · NAME", + "fill": "$ink", + "content": "Tinkoff debit", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "mgr0l", + "name": "New Account Field · TYPE", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 5, + "padding": 10, + "children": [ + { + "type": "text", + "id": "vG7rz", + "name": "New Account Field Label · TYPE", + "fill": "$muted", + "content": "TYPE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "x9UcFc", + "name": "New Account Field Value · TYPE", + "fill": "$ink", + "content": "DEBIT ▾", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "m6TXNR", + "name": "New Account Field · OPENED", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 5, + "padding": 10, + "children": [ + { + "type": "text", + "id": "N7Jzsm", + "name": "New Account Field Label · OPENED", + "fill": "$muted", + "content": "OPENED", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "Qrryr", + "name": "New Account Field Value · OPENED", + "fill": "$ink", + "content": "21 SEP 2026", + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "mEojk", + "name": "New Account Field · OPENING BALANCE", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 5, + "padding": 10, + "children": [ + { + "type": "text", + "id": "SntaC", + "name": "New Account Field Label · OPENING BALANCE", + "fill": "$muted", + "content": "OPENING BALANCE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "UMpbc", + "name": "New Account Field Value · OPENING BALANCE", + "fill": "$ink", + "content": "₽0,00", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "FEtDQ", + "name": "New Account Footer", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "K4JdO", + "name": "New Account Optional", + "fill": "$muted", + "content": "OPTIONAL · bank code · masked number", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "oDC5j", + "name": "Create Account Action", + "fill": "$blue", + "padding": [ + 9, + 13 + ], + "children": [ + { + "type": "text", + "id": "c7Th0", + "name": "Create Account Action Label", + "fill": "$white", + "content": "Create account", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "b2Zi3", + "name": "Space Data Controls", + "width": 390, + "height": "fill_container", + "layout": "vertical", + "gap": 14, + "children": [ + { + "type": "frame", + "id": "GL1ZH", + "name": "Invite Member Card", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 10, + "padding": 16, + "children": [ + { + "type": "text", + "id": "VjKbo", + "name": "Invite Member Kicker", + "fill": "$blue", + "content": "OWNER ACTION", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "xKslc", + "name": "Invite Member Title", + "fill": "$ink", + "content": "Invite a member", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "vnn9q", + "name": "Invite Member Description", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Members can work with all financial data. Only owners invite people or schedule deletion.", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "iSrWZ", + "name": "Invite Member Email", + "width": "fill_container", + "height": 38, + "stroke": "$line", + "strokeWidth": 1, + "padding": [ + 0, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Mdamx", + "name": "Invite Member Email Value", + "fill": "$muted", + "content": "member@example.com", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "dXu6A", + "name": "Invite Member Role", + "fill": "$blue", + "content": "MEMBER · 7D", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "ttJHe", + "name": "Data Export Card", + "width": "fill_container", + "fill": "$blue", + "layout": "vertical", + "gap": 10, + "padding": 16, + "children": [ + { + "type": "frame", + "id": "GS1mt", + "name": "Data Export Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "DdzUa", + "name": "Data Export Kicker", + "fill": "#CADBFF", + "content": "FULL DATA EXPORT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "oJFbx", + "name": "Data Export Status", + "fill": "$white", + "content": "READY · 46 MIN LEFT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "OAStW", + "name": "Data Export Title", + "fill": "$white", + "content": "Encrypted ZIP · one download", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "HqehR", + "name": "Data Export Datasets", + "fill": "#D7E3FF", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Accounts · operations · categories · budgets · funding · expected income · audit", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "PRXyx", + "name": "Download Export Action", + "width": "fill_container", + "height": 38, + "fill": "$white", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "PmhIo", + "name": "Download Export Action Label", + "fill": "$blue", + "content": "Download once", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "600" + } + ] + } + ] + }, + { + "type": "frame", + "id": "R693gv", + "name": "Space Deletion Card", + "width": "fill_container", + "height": "fill_container", + "fill": "$red-soft", + "stroke": "$red", + "strokeWidth": 1, + "layout": "vertical", + "gap": 10, + "padding": 16, + "children": [ + { + "type": "text", + "id": "P99cy", + "name": "Space Deletion Kicker", + "fill": "$red", + "content": "DANGER ZONE · OWNER ONLY", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "TGHSD", + "name": "Space Deletion Title", + "fill": "$ink", + "content": "Schedule space deletion", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Pnqly", + "name": "Space Deletion Description", + "fill": "#74413C", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Type DELETE to lock this space for 30 days. While blocked, only deletion status and Cancel remain available.", + "lineHeight": 1.35, + "fontFamily": "$font-ui", + "fontSize": 10, + "fontWeight": "normal" + }, + { + "type": "frame", + "id": "d9Ce77", + "name": "Deletion Confirmation", + "width": "fill_container", + "height": 38, + "fill": "$white", + "stroke": "$red", + "strokeWidth": 1, + "padding": [ + 0, + 10 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "oG9ws", + "name": "Deletion Confirmation Value", + "fill": "$red", + "content": "DELETE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700" + }, + { + "type": "text", + "id": "lDbMD", + "name": "Deletion Confirmation Action", + "fill": "$red", + "content": "SCHEDULE →", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "Fec4s", + "name": "Deletion Scheduled Alternate State", + "width": "fill_container", + "fill": "#F6C9C5", + "gap": 10, + "padding": 10, + "children": [ + { + "type": "icon", + "id": "yvqbs", + "name": "Deletion Scheduled Icon", + "width": 15, + "height": 15, + "icon": "calendar-x", + "library": "lucide", + "fill": "$red" + }, + { + "type": "text", + "id": "OAzjU", + "name": "Deletion Scheduled Text", + "fill": "$red", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Scheduled state: countdown + Cancel deletion", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "600" + } + ] + } + ] + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Sfejn", + "x": 3040, + "y": 1104, + "name": "08 · Mobile / Month", + "clip": true, + "width": 390, + "height": 844, + "fill": "$paper", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "JaD25", + "name": "Mobile Month Content", + "width": "fill_container", + "height": 794, + "fill": "$paper", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "W9Wbag", + "name": "Mobile Month Hero", + "width": "fill_container", + "height": 210, + "fill": "$ink", + "layout": "vertical", + "gap": 18, + "padding": [ + 22, + 20 + ], + "children": [ + { + "type": "frame", + "id": "uPxa9", + "name": "Mobile Topbar", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "TFSys", + "name": "Mobile Brand", + "gap": 9, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "rbFzX", + "name": "Mobile Brand Mark", + "width": 28, + "height": 28, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "MoQvb", + "name": "Mobile Brand Mark Text", + "fill": "$white", + "content": "FS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "Y3Mqki", + "name": "Mobile Brand Text", + "fill": "$white", + "content": "FINSPACE", + "fontFamily": "$font-data", + "fontSize": 10, + "fontWeight": "700", + "letterSpacing": 1 + } + ] + }, + { + "type": "icon", + "id": "uBmIW", + "name": "Mobile Notifications", + "width": 19, + "height": 19, + "icon": "bell", + "library": "lucide", + "fill": "#A5A5A1" + } + ] + }, + { + "type": "frame", + "id": "hrCQ1", + "name": "Mobile Month Heading", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "end", + "children": [ + { + "type": "frame", + "id": "gZDjH", + "name": "Mobile Month Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "sZ1Eh", + "name": "Mobile Month Label", + "fill": "#8FAEFF", + "content": "SEPTEMBER 2026 · OPEN", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.7 + }, + { + "type": "text", + "id": "vtAlO", + "name": "Mobile Pool Label", + "fill": "#A5A5A1", + "content": "Actual pool", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "normal" + }, + { + "type": "text", + "id": "ymttw", + "name": "Mobile Pool Value", + "fill": "$white", + "content": "₽61 420", + "fontFamily": "$font-data", + "fontSize": 34, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "rwGnT", + "name": "Mobile Month Chevron", + "width": 18, + "height": 18, + "icon": "chevron-down", + "library": "lucide", + "fill": "#777773" + } + ] + } + ] + }, + { + "type": "frame", + "id": "W5sEd", + "name": "Mobile Month Metrics", + "width": "fill_container", + "height": 92, + "fill": "$blue", + "children": [ + { + "type": "frame", + "id": "pk2ph", + "name": "Mobile Metric · PROJECTED", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 12, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "IyPT6", + "name": "Mobile Metric Label · PROJECTED", + "fill": "#CADBFF", + "content": "PROJECTED", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "rtbyc", + "name": "Mobile Metric Value · PROJECTED", + "fill": "$white", + "content": "₽18 250", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "bUiwN", + "name": "Mobile Metric · FUNDED", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 12, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Iotko", + "name": "Mobile Metric Label · FUNDED", + "fill": "#CADBFF", + "content": "FUNDED", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "J8JASJ", + "name": "Mobile Metric Value · FUNDED", + "fill": "$white", + "content": "₽94 000", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "P7Ld2", + "name": "Mobile Metric · SPENT", + "width": "fill_container", + "height": "fill_container", + "stroke": "#FFFFFF4D", + "strokeWidth": { + "right": 1 + }, + "layout": "vertical", + "padding": 12, + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "QhVqL", + "name": "Mobile Metric Label · SPENT", + "fill": "#CADBFF", + "content": "SPENT", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.5 + }, + { + "type": "text", + "id": "PsZsD", + "name": "Mobile Metric Value · SPENT", + "fill": "$white", + "content": "₽72 580", + "fontFamily": "$font-data", + "fontSize": 12, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "siHjH", + "name": "Mobile Month Feed", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 14, + "padding": [ + 18, + 20 + ], + "children": [ + { + "type": "frame", + "id": "Auz18", + "name": "Mobile Close Readiness", + "width": "fill_container", + "fill": "$amber-soft", + "gap": 12, + "padding": 14, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Ye8Zc", + "name": "Mobile Close Readiness Icon", + "width": 18, + "height": 18, + "icon": "circle-alert", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "frame", + "id": "xVPac", + "name": "Mobile Close Readiness Copy", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "B6jgW", + "name": "Mobile Close Readiness Title", + "fill": "$ink", + "content": "2 blockers before close", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "IyGkH", + "name": "Mobile Close Readiness Detail", + "fill": "$amber", + "content": "3 uncategorized · 2 statement holds", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + }, + { + "type": "icon", + "id": "RqvX4", + "name": "Mobile Close Readiness Arrow", + "width": 16, + "height": 16, + "icon": "arrow-right", + "library": "lucide", + "fill": "$amber" + } + ] + }, + { + "type": "frame", + "id": "XLL2J", + "name": "Mobile Category Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "faOEt", + "name": "Mobile Category Title", + "fill": "$ink", + "content": "Category pulse", + "fontFamily": "$font-ui", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "MEFTF", + "name": "Mobile Category Link", + "fill": "$blue", + "content": "BUDGET →", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "tveJP", + "name": "Mobile Category · Groceries", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "frame", + "id": "ITr9b", + "name": "Mobile Category Header · Groceries", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "Y2B6l", + "name": "Mobile Category Copy · Groceries", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "GNtho", + "name": "Mobile Category Name · Groceries", + "fill": "$ink", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "Z9ZBR9", + "name": "Mobile Category Detail · Groceries", + "fill": "$muted", + "content": "AVAILABLE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "P0JZlD", + "name": "Mobile Category Value · Groceries", + "fill": "$ink", + "content": "₽5 760", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "nvvD0", + "name": "Mobile Category Track · Groceries", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "ia3q8", + "name": "Mobile Category Bar · Groceries", + "fill": "$blue", + "width": 188.8, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "MPSGt", + "name": "Mobile Category · Transport", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "frame", + "id": "bSQey", + "name": "Mobile Category Header · Transport", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "q3qPiP", + "name": "Mobile Category Copy · Transport", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "g2YsK", + "name": "Mobile Category Name · Transport", + "fill": "$ink", + "content": "Transport", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "bj9Fm", + "name": "Mobile Category Detail · Transport", + "fill": "$muted", + "content": "AVAILABLE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "cMdnM", + "name": "Mobile Category Value · Transport", + "fill": "$ink", + "content": "₽1 130", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "EnYP6", + "name": "Mobile Category Track · Transport", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "UCCFe", + "name": "Mobile Category Bar · Transport", + "fill": "$amber", + "width": 259.2, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "HSkUt", + "name": "Mobile Category · Travel", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "frame", + "id": "cP8uZ", + "name": "Mobile Category Header · Travel", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "QDtuf", + "name": "Mobile Category Copy · Travel", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "ogMUG", + "name": "Mobile Category Name · Travel", + "fill": "$ink", + "content": "Travel", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "bCD91", + "name": "Mobile Category Detail · Travel", + "fill": "$muted", + "content": "ENVELOPE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "i7wgn", + "name": "Mobile Category Value · Travel", + "fill": "$ink", + "content": "₽21 000", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "U1KpT", + "name": "Mobile Category Track · Travel", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "w4SQp0", + "name": "Mobile Category Bar · Travel", + "fill": "$blue", + "width": 224, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "S5sxk", + "name": "Mobile Category · Credit reserve", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 10, + 0 + ], + "children": [ + { + "type": "frame", + "id": "qGgQb", + "name": "Mobile Category Header · Credit reserve", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "nJAqM", + "name": "Mobile Category Copy · Credit reserve", + "layout": "vertical", + "gap": 2, + "children": [ + { + "type": "text", + "id": "WOm42", + "name": "Mobile Category Name · Credit reserve", + "fill": "$ink", + "content": "Credit reserve", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "oiqOm", + "name": "Mobile Category Detail · Credit reserve", + "fill": "$muted", + "content": "SYSTEM", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "kPmGd", + "name": "Mobile Category Value · Credit reserve", + "fill": "$ink", + "content": "₽12 480", + "fontFamily": "$font-data", + "fontSize": 11, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "JFwkG", + "name": "Mobile Category Track · Credit reserve", + "width": "fill_container", + "height": 4, + "fill": "#E4E1D9", + "children": [ + { + "type": "rectangle", + "id": "L0IPw", + "name": "Mobile Category Bar · Credit reserve", + "fill": "$blue", + "width": 220.8, + "height": 4 + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "Qb8cZ", + "name": "Mobile Bottom Nav", + "width": "fill_container", + "height": 66, + "fill": "$white", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 8, + 16 + ], + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "uPO09", + "name": "Mobile Nav · MONTH", + "width": 56, + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "bIVKA", + "name": "Mobile Nav Icon Wrap · MONTH", + "width": 20, + "height": 20, + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "cGlcu", + "name": "Mobile Nav Icon · MONTH", + "width": 18, + "height": 18, + "icon": "calendar-range", + "library": "lucide", + "fill": "$blue" + } + ] + }, + { + "type": "text", + "id": "JUQBA", + "name": "Mobile Nav Label · MONTH", + "fill": "$blue", + "content": "MONTH", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "tNzgR", + "name": "Mobile Nav · LEDGER", + "width": 56, + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "GQcwM", + "name": "Mobile Nav Icon Wrap · LEDGER", + "width": 20, + "height": 20, + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "g0bYz", + "name": "Mobile Nav Icon · LEDGER", + "width": 18, + "height": 18, + "icon": "rows-3", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "text", + "id": "smAqh", + "name": "Mobile Nav Label · LEDGER", + "fill": "$muted", + "content": "LEDGER", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "jWFHG", + "name": "Mobile Nav · ADD", + "width": 56, + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "S40X4f", + "name": "Mobile Nav Icon Wrap · ADD", + "width": 38, + "height": 38, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "WwTw5", + "name": "Mobile Nav Icon · ADD", + "width": 18, + "height": 18, + "icon": "plus", + "library": "lucide", + "fill": "$white" + } + ] + } + ] + }, + { + "type": "frame", + "id": "t1giD6", + "name": "Mobile Nav · INBOX", + "width": 56, + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "m8mza", + "name": "Mobile Nav Icon Wrap · INBOX", + "width": 20, + "height": 20, + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "bTy6W", + "name": "Mobile Nav Icon · INBOX", + "width": 18, + "height": 18, + "icon": "inbox", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "text", + "id": "ja2FK", + "name": "Mobile Nav Label · INBOX", + "fill": "$muted", + "content": "INBOX", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "a28JI", + "name": "Mobile Nav · MORE", + "width": 56, + "layout": "vertical", + "gap": 4, + "alignItems": "center", + "children": [ + { + "type": "frame", + "id": "MQHoj", + "name": "Mobile Nav Icon Wrap · MORE", + "width": 20, + "height": 20, + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "ZNmqG", + "name": "Mobile Nav Icon · MORE", + "width": 18, + "height": 18, + "icon": "menu", + "library": "lucide", + "fill": "$muted" + } + ] + }, + { + "type": "text", + "id": "f09M6", + "name": "Mobile Nav Label · MORE", + "fill": "$muted", + "content": "MORE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700" + } + ] + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "BUW9i", + "x": 3478, + "y": 1104, + "name": "09 · Mobile / New Operation", + "clip": true, + "width": 390, + "height": 844, + "fill": "$ink", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "J4UqZe", + "name": "Mobile Composer Content", + "width": "fill_container", + "height": 794, + "fill": "$ink", + "layout": "vertical", + "gap": 18, + "padding": 20, + "children": [ + { + "type": "frame", + "id": "RD7ou", + "name": "Mobile Composer Header", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "d7w4O", + "name": "Mobile Composer Back", + "width": 20, + "height": 20, + "icon": "arrow-left", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "MWjOC", + "name": "Mobile Composer Title", + "fill": "$white", + "content": "New operation", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "scdlc", + "name": "Mobile Composer Period", + "fill": "#8FAEFF", + "content": "SEP · OPEN", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "q7SENQ", + "name": "Mobile Composer Kinds", + "width": "fill_container", + "height": 42, + "stroke": "#FFFFFF33", + "strokeWidth": 1, + "children": [ + { + "type": "frame", + "id": "o1Tc4n", + "name": "Mobile Composer Kind · EXPENSE", + "width": "fill_container", + "height": "fill_container", + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "AvyKT", + "name": "Mobile Composer Kind Label · EXPENSE", + "fill": "$white", + "content": "EXPENSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.4 + } + ] + }, + { + "type": "frame", + "id": "p2quWX", + "name": "Mobile Composer Kind · INCOME", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "xCbnl", + "name": "Mobile Composer Kind Label · INCOME", + "fill": "#777773", + "content": "INCOME", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.4 + } + ] + }, + { + "type": "frame", + "id": "rsC1K", + "name": "Mobile Composer Kind · TRANSFER", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "d6Dj4Y", + "name": "Mobile Composer Kind Label · TRANSFER", + "fill": "#777773", + "content": "TRANSFER", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.4 + } + ] + }, + { + "type": "frame", + "id": "phAPX", + "name": "Mobile Composer Kind · REFUND", + "width": "fill_container", + "height": "fill_container", + "fill": "#00000000", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "OG53N", + "name": "Mobile Composer Kind Label · REFUND", + "fill": "#777773", + "content": "REFUND", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "k5uD6T", + "name": "Mobile Composer Amount", + "width": "fill_container", + "stroke": "#FFFFFF2C", + "strokeWidth": { + "bottom": 1 + }, + "layout": "vertical", + "gap": 7, + "padding": [ + 18, + 0 + ], + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "anx66", + "name": "Mobile Composer Amount Label", + "fill": "#777773", + "content": "AMOUNT · RUB", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700", + "letterSpacing": 0.8 + }, + { + "type": "text", + "id": "nvFrL", + "name": "Mobile Composer Amount Value", + "fill": "$white", + "content": "₽ 3 840,00", + "fontFamily": "$font-data", + "fontSize": 37, + "fontWeight": "600" + } + ] + }, + { + "type": "frame", + "id": "kDe5m", + "name": "Mobile Composer Form", + "width": "fill_container", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "fjPHt", + "name": "Mobile Composer Field · ACCOUNT", + "width": "fill_container", + "height": 58, + "stroke": "#FFFFFF25", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "nGQlR", + "name": "Mobile Composer Field Icon · ACCOUNT", + "width": 17, + "height": 17, + "icon": "wallet-cards", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "jXx8i", + "name": "Mobile Composer Field Copy · ACCOUNT", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "mLne2", + "name": "Mobile Composer Field Label · ACCOUNT", + "fill": "#777773", + "content": "ACCOUNT", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "rO8J8", + "name": "Mobile Composer Field Value · ACCOUNT", + "fill": "$white", + "content": "Alfa debit · •4821", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "xLbKa", + "name": "Mobile Composer Field Arrow · ACCOUNT", + "width": 15, + "height": 15, + "icon": "chevron-right", + "library": "lucide", + "fill": "#555553" + } + ] + }, + { + "type": "frame", + "id": "hqLyQ", + "name": "Mobile Composer Field · CATEGORY", + "width": "fill_container", + "height": 58, + "stroke": "#FFFFFF25", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Ypfrq", + "name": "Mobile Composer Field Icon · CATEGORY", + "width": 17, + "height": 17, + "icon": "tag", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "Z2opEW", + "name": "Mobile Composer Field Copy · CATEGORY", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "aodQj", + "name": "Mobile Composer Field Label · CATEGORY", + "fill": "#777773", + "content": "CATEGORY", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "G15JuB", + "name": "Mobile Composer Field Value · CATEGORY", + "fill": "$white", + "content": "Groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "dAwIy", + "name": "Mobile Composer Field Arrow · CATEGORY", + "width": 15, + "height": 15, + "icon": "chevron-right", + "library": "lucide", + "fill": "#555553" + } + ] + }, + { + "type": "frame", + "id": "wy7o8", + "name": "Mobile Composer Field · PAYEE", + "width": "fill_container", + "height": 58, + "stroke": "#FFFFFF25", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "HiQCk", + "name": "Mobile Composer Field Icon · PAYEE", + "width": 17, + "height": 17, + "icon": "store", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "iMfBP", + "name": "Mobile Composer Field Copy · PAYEE", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "D26yU", + "name": "Mobile Composer Field Label · PAYEE", + "fill": "#777773", + "content": "PAYEE", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "hMMa4", + "name": "Mobile Composer Field Value · PAYEE", + "fill": "$white", + "content": "Magnit", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "X8PDR", + "name": "Mobile Composer Field Arrow · PAYEE", + "width": 15, + "height": 15, + "icon": "chevron-right", + "library": "lucide", + "fill": "#555553" + } + ] + }, + { + "type": "frame", + "id": "L3b2z", + "name": "Mobile Composer Field · OCCURRED", + "width": "fill_container", + "height": 58, + "stroke": "#FFFFFF25", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "MN7F9", + "name": "Mobile Composer Field Icon · OCCURRED", + "width": 17, + "height": 17, + "icon": "calendar", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "Tg1rs", + "name": "Mobile Composer Field Copy · OCCURRED", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "EkU2n", + "name": "Mobile Composer Field Label · OCCURRED", + "fill": "#777773", + "content": "OCCURRED", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "xX9oo", + "name": "Mobile Composer Field Value · OCCURRED", + "fill": "$white", + "content": "21 September 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "K9JLTG", + "name": "Mobile Composer Field Arrow · OCCURRED", + "width": 15, + "height": 15, + "icon": "chevron-right", + "library": "lucide", + "fill": "#555553" + } + ] + }, + { + "type": "frame", + "id": "zSRZz", + "name": "Mobile Composer Field · POSTED", + "width": "fill_container", + "height": 58, + "stroke": "#FFFFFF25", + "strokeWidth": { + "bottom": 1 + }, + "gap": 12, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "muv43", + "name": "Mobile Composer Field Icon · POSTED", + "width": 17, + "height": 17, + "icon": "calendar-check", + "library": "lucide", + "fill": "#8FAEFF" + }, + { + "type": "frame", + "id": "MUBj4", + "name": "Mobile Composer Field Copy · POSTED", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "e9UX70", + "name": "Mobile Composer Field Label · POSTED", + "fill": "#777773", + "content": "POSTED", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "SQmZi", + "name": "Mobile Composer Field Value · POSTED", + "fill": "$white", + "content": "21 September 2026", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + } + ] + }, + { + "type": "icon", + "id": "RPBrz", + "name": "Mobile Composer Field Arrow · POSTED", + "width": 15, + "height": 15, + "icon": "chevron-right", + "library": "lucide", + "fill": "#555553" + } + ] + } + ] + }, + { + "type": "frame", + "id": "C2sJ2g", + "name": "Mobile Composer Description", + "width": "fill_container", + "height": 68, + "stroke": "#FFFFFF33", + "strokeWidth": 1, + "layout": "vertical", + "gap": 7, + "padding": 11, + "children": [ + { + "type": "text", + "id": "e2bVd4", + "name": "Mobile Composer Description Label", + "fill": "#777773", + "content": "DESCRIPTION · OPTIONAL", + "fontFamily": "$font-data", + "fontSize": 7, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "jYzXQ", + "name": "Mobile Composer Description Value", + "fill": "$white", + "content": "Weekly groceries", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "ZX5il", + "name": "Mobile Composer Footer", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 10, + "justifyContent": "end", + "children": [ + { + "type": "frame", + "id": "QwSsQ", + "name": "Mobile Save Operation", + "width": "fill_container", + "height": 52, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "aBWj3", + "name": "Mobile Save Operation Label", + "fill": "$white", + "content": "Save expense", + "fontFamily": "$font-ui", + "fontSize": 14, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "c6Y9l", + "name": "Mobile Composer Hint", + "fill": "#777773", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Closed months reject new or changed operations", + "textAlign": "center", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "J7GUbZ", + "x": 3916, + "y": 1104, + "name": "10 · Mobile / Hold Resolution", + "clip": true, + "width": 390, + "height": 844, + "fill": "$paper", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "HvVuL", + "name": "Mobile Hold Content", + "width": "fill_container", + "height": 794, + "fill": "$paper", + "layout": "vertical", + "children": [ + { + "type": "frame", + "id": "JZZTf", + "name": "Mobile Hold Header", + "width": "fill_container", + "fill": "$ink", + "layout": "vertical", + "gap": 15, + "padding": [ + 18, + 20 + ], + "children": [ + { + "type": "frame", + "id": "RfPl3", + "name": "Mobile Hold Topbar", + "width": "fill_container", + "justifyContent": "space_between", + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "lw0uX", + "name": "Mobile Hold Back", + "width": 20, + "height": 20, + "icon": "arrow-left", + "library": "lucide", + "fill": "$white" + }, + { + "type": "text", + "id": "b41ugq", + "name": "Mobile Hold Title", + "fill": "$white", + "content": "Statement review", + "fontFamily": "$font-ui", + "fontSize": 17, + "fontWeight": "600" + }, + { + "type": "text", + "id": "jlyJj", + "name": "Mobile Hold Progress", + "fill": "#8FAEFF", + "content": "82 / 87", + "fontFamily": "$font-data", + "fontSize": 9, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "g0LvGv", + "name": "Mobile Hold Progress Track", + "width": "fill_container", + "height": 4, + "fill": "#30302E", + "children": [ + { + "type": "rectangle", + "id": "hxAxc", + "name": "Mobile Hold Progress Bar", + "fill": "$blue", + "width": 330, + "height": 4 + } + ] + } + ] + }, + { + "type": "frame", + "id": "XEu75", + "name": "Mobile Hold Body", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 15, + "padding": [ + 18, + 20 + ], + "children": [ + { + "type": "frame", + "id": "oP6fH", + "name": "Mobile Hold Badge", + "fill": "$amber-soft", + "gap": 8, + "padding": [ + 7, + 9 + ], + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "cBPPs", + "name": "Mobile Hold Badge Icon", + "width": 15, + "height": 15, + "icon": "clock-3", + "library": "lucide", + "fill": "$amber" + }, + { + "type": "text", + "id": "F4eEe", + "name": "Mobile Hold Badge Label", + "fill": "$amber", + "content": "UNRESOLVED HOLD · BLOCKS MONTH CLOSE", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.5 + } + ] + }, + { + "type": "frame", + "id": "wOgIM", + "name": "Mobile Bank Fact", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 10, + "padding": 16, + "children": [ + { + "type": "frame", + "id": "cCkOv", + "name": "Mobile Bank Fact Header", + "width": "fill_container", + "justifyContent": "space_between", + "children": [ + { + "type": "frame", + "id": "cH4D6", + "name": "Mobile Bank Fact Copy", + "layout": "vertical", + "gap": 4, + "children": [ + { + "type": "text", + "id": "Id63M", + "name": "Mobile Bank Fact Title", + "fill": "$ink", + "content": "Railway authorization", + "fontFamily": "$font-ui", + "fontSize": 16, + "fontWeight": "600" + }, + { + "type": "text", + "id": "CgODu", + "name": "Mobile Bank Fact Meta", + "fill": "$muted", + "content": "14 SEP · ALFA DEBIT · •4821", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "text", + "id": "JTys0", + "name": "Mobile Bank Fact Amount", + "fill": "$ink", + "content": "−₽1 280", + "fontFamily": "$font-data", + "fontSize": 15, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "uAsN7", + "name": "Mobile Bank Fact Row · BANK STATUS", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 8, + 0 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "Xlh4j", + "name": "Mobile Bank Fact Label · BANK STATUS", + "fill": "$muted", + "content": "BANK STATUS", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "wQYww", + "name": "Mobile Bank Fact Value · BANK STATUS", + "fill": "$amber", + "content": "HOLD", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "mD9uh", + "name": "Mobile Bank Fact Row · DIRECTION", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 8, + 0 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "TpkFU", + "name": "Mobile Bank Fact Label · DIRECTION", + "fill": "$muted", + "content": "DIRECTION", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "rvuIl", + "name": "Mobile Bank Fact Value · DIRECTION", + "fill": "$ink", + "content": "OUT", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "CkdqK", + "name": "Mobile Bank Fact Row · ADAPTER", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 8, + 0 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "FHr3P", + "name": "Mobile Bank Fact Label · ADAPTER", + "fill": "$muted", + "content": "ADAPTER", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "hVIVs", + "name": "Mobile Bank Fact Value · ADAPTER", + "fill": "$ink", + "content": "ALFA_XLSX", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + }, + { + "type": "frame", + "id": "QdRcP", + "name": "Mobile Bank Fact Row · MATCH", + "width": "fill_container", + "stroke": "$line", + "strokeWidth": { + "top": 1 + }, + "padding": [ + 8, + 0 + ], + "justifyContent": "space_between", + "children": [ + { + "type": "text", + "id": "BFOVF", + "name": "Mobile Bank Fact Label · MATCH", + "fill": "$muted", + "content": "MATCH", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + }, + { + "type": "text", + "id": "G613Jt", + "name": "Mobile Bank Fact Value · MATCH", + "fill": "$ink", + "content": "NO UNIQUE POSTED ROW", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700" + } + ] + } + ] + }, + { + "type": "frame", + "id": "naCBD", + "name": "Mobile Hold Choice", + "width": "fill_container", + "layout": "vertical", + "gap": 10, + "children": [ + { + "type": "text", + "id": "z2IE0d", + "name": "Mobile Hold Choice Title", + "fill": "$ink", + "content": "Choose a resolution", + "fontFamily": "$font-ui", + "fontSize": 15, + "fontWeight": "600" + }, + { + "type": "frame", + "id": "DpBG8", + "name": "Mobile Hold Choice · Confirm as posted", + "width": "fill_container", + "fill": "#E8EEFC", + "stroke": "$blue", + "strokeWidth": 1, + "gap": 11, + "padding": 13, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "Zr0Ta", + "name": "Mobile Hold Choice Icon · Confirm as posted", + "width": 18, + "height": 18, + "icon": "circle-check", + "library": "lucide", + "fill": "$blue" + }, + { + "type": "frame", + "id": "FlLlA", + "name": "Mobile Hold Choice Copy · Confirm as posted", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "xwN0v", + "name": "Mobile Hold Choice Label · Confirm as posted", + "fill": "$ink", + "content": "Confirm as posted", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "L0PQ8", + "name": "Mobile Hold Choice Detail · Confirm as posted", + "fill": "$muted", + "content": "Creates a normal ledger operation", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + }, + { + "type": "frame", + "id": "FKH9k", + "name": "Mobile Hold Choice · Discard as cancelled", + "width": "fill_container", + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "gap": 11, + "padding": 13, + "alignItems": "center", + "children": [ + { + "type": "icon", + "id": "M9uDk", + "name": "Mobile Hold Choice Icon · Discard as cancelled", + "width": 18, + "height": 18, + "icon": "circle-x", + "library": "lucide", + "fill": "$muted" + }, + { + "type": "frame", + "id": "yURWa", + "name": "Mobile Hold Choice Copy · Discard as cancelled", + "width": "fill_container", + "layout": "vertical", + "gap": 3, + "children": [ + { + "type": "text", + "id": "NUvnC", + "name": "Mobile Hold Choice Label · Discard as cancelled", + "fill": "$ink", + "content": "Discard as cancelled", + "fontFamily": "$font-ui", + "fontSize": 12, + "fontWeight": "600" + }, + { + "type": "text", + "id": "GnkY7", + "name": "Mobile Hold Choice Detail · Discard as cancelled", + "fill": "$muted", + "content": "No operation will be created", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + } + ] + }, + { + "type": "frame", + "id": "yjaFX", + "name": "Mobile Hold Reason", + "width": "fill_container", + "height": 74, + "fill": "$white", + "stroke": "$line", + "strokeWidth": 1, + "layout": "vertical", + "gap": 7, + "padding": 11, + "children": [ + { + "type": "text", + "id": "Zs0DA", + "name": "Mobile Hold Reason Label", + "fill": "$red", + "content": "REASON · REQUIRED", + "fontFamily": "$font-data", + "fontSize": 8, + "fontWeight": "700", + "letterSpacing": 0.6 + }, + { + "type": "text", + "id": "Aen2J", + "name": "Mobile Hold Reason Value", + "fill": "$ink", + "content": "Bank later posted this authorization", + "fontFamily": "$font-ui", + "fontSize": 11, + "fontWeight": "normal" + } + ] + }, + { + "type": "frame", + "id": "I4HCyv", + "name": "Mobile Hold Footer", + "width": "fill_container", + "height": "fill_container", + "layout": "vertical", + "gap": 9, + "justifyContent": "end", + "children": [ + { + "type": "frame", + "id": "OEU8G", + "name": "Mobile Apply Hold", + "width": "fill_container", + "height": 50, + "fill": "$blue", + "justifyContent": "center", + "alignItems": "center", + "children": [ + { + "type": "text", + "id": "Hxyly", + "name": "Mobile Apply Hold Label", + "fill": "$white", + "content": "Apply resolution", + "fontFamily": "$font-ui", + "fontSize": 13, + "fontWeight": "600" + } + ] + }, + { + "type": "text", + "id": "q3Eeb", + "name": "Mobile Hold Audit Hint", + "fill": "$muted", + "textGrowth": "fixed-width", + "width": "fill_container", + "content": "Manual hold decisions are append-only and audited", + "textAlign": "center", + "fontFamily": "$font-ui", + "fontSize": 9, + "fontWeight": "normal" + } + ] + } + ] + } + ] + } + ] } ], + "variables": { + "ink": { + "type": "color", + "value": "#161616" + }, + "paper": { + "type": "color", + "value": "#F7F5EF" + }, + "white": { + "type": "color", + "value": "#FFFFFF" + }, + "muted": { + "type": "color", + "value": "#6C6B67" + }, + "line": { + "type": "color", + "value": "#D7D4CC" + }, + "blue": { + "type": "color", + "value": "#1769FF" + }, + "blue-dark": { + "type": "color", + "value": "#0C2F73" + }, + "green": { + "type": "color", + "value": "#14804A" + }, + "green-soft": { + "type": "color", + "value": "#DDF4E7" + }, + "amber": { + "type": "color", + "value": "#9A5B00" + }, + "amber-soft": { + "type": "color", + "value": "#FFF0C7" + }, + "red": { + "type": "color", + "value": "#B42F25" + }, + "red-soft": { + "type": "color", + "value": "#FBE2DF" + }, + "font-ui": { + "type": "string", + "value": "Funnel Sans" + }, + "font-data": { + "type": "string", + "value": "Geist Mono" + } + }, "fileToken": "b3b5c197-b1d5-4151-ba18-5546d71e42ba" } \ No newline at end of file diff --git a/graphify-out/.graphify_labels.json b/graphify-out/.graphify_labels.json index ed80f98..a2f08e4 100644 --- a/graphify-out/.graphify_labels.json +++ b/graphify-out/.graphify_labels.json @@ -1,35 +1,35 @@ { - "0": "identity/router.py", + "0": "identity/service.py", "1": "budgeting/router.py", "2": "Base", "3": "set_space_context", "4": "imports/router.py", "5": "alfa_xlsx.py", - "6": "Session", + "6": "ledger/service.py", "7": "types.ts", "8": "router.tsx", "9": "ledger/router.py", - "10": "AccountsPage.tsx", + "10": "main.py", "11": "compilerOptions", "12": "AnalyticsPage.tsx", - "13": "analytics/router.py", + "13": "exports/router.py", "14": "devDependencies", - "15": "test_import_holds.py", + "15": "Session", "16": "dependencies", "17": "ImportDetailPage.tsx", "18": "OperationsPage.tsx", - "19": "SettingsPage.tsx", + "19": "useOperations.ts", "20": "Toaster.tsx", - "21": "ozon_pdf.py", + "21": "adapters/base.py", "22": "BudgetPage.tsx", "23": "client.ts", - "24": "fields.tsx", + "24": "AccountsPage.tsx", "25": "Docker Compose Development Stack", "26": "Financial Space", "27": "scripts", - "28": "dependencies.py", + "28": "exports/service.py", "29": "General Pool", - "30": "TestBaseContract", + "30": "test_adapter_contracts.py", "31": "Per-File Envelope Encryption", "32": "Operation", "33": "Versioned Statement Imports", @@ -37,7 +37,7 @@ "35": "Closed Beta Launch Gates", "36": "package.json", "37": "Financial Tracker MVP", - "38": "test_adapter_contracts.py", + "38": "TestRocketbankDebitContract", "39": "generate-api.mjs", "40": "schema.d.ts", "41": "test_api.py", @@ -49,7 +49,7 @@ "47": "graphify", "48": "@types/react-dom", "49": "typescript-eslint", - "50": "SourceRow", + "50": "OzonDebitPdfAdapter", "51": "vitest", "52": "Favicon SVG (ledger lines icon)", "53": "init-app-role.sh", @@ -62,7 +62,7 @@ "60": "vite.config.ts", "61": "finance-backend", "62": "LocalDirectoryBlobStore", - "63": "account_fingerprint", + "63": "TestOzonDebitContract", "64": "Gitea CI and real statement imports", "65": "20260918_0002_hold_lifecycle.py", "66": "eslint-plugin-react-hooks", @@ -70,8 +70,12 @@ "68": "@testing-library/dom", "69": "@testing-library/react", "70": "vite", - "71": "spaces/router.py", - "72": "identity/service.py", - "73": "get_settings", - "74": "ColumnChart.tsx" + "71": "ColumnChart.tsx", + "72": "conftest.py", + "73": "imports/service.py", + "74": "BlobStore", + "75": "AppError", + "76": "celery_app.py", + "77": "AGENTS.md", + "78": "graphify.js" } diff --git a/graphify-out/.graphify_labels.json.sig b/graphify-out/.graphify_labels.json.sig new file mode 100644 index 0000000..a1ddff4 --- /dev/null +++ b/graphify-out/.graphify_labels.json.sig @@ -0,0 +1 @@ +{"0": "5be265b1520d78ac", "1": "202b56dfc67b2426", "2": "e8067d100b0e48e0", "3": "a199479974543630", "4": "70c8a604a894445d", "5": "092f91ab80789a1d", "6": "3dc6d0d50528ba98", "7": "478b34eb0402fa7d", "8": "c73ee613d6cc4603", "9": "5ebc227112f367f4", "10": "a91e7c0bdb81ca71", "11": "f039d542469fefc7", "12": "0f21d202d861324c", "13": "c90eb017c5213760", "14": "603fe8eab561d17f", "15": "115e19466baf98c7", "16": "1ff1ee70001a89de", "17": "1dd8594011ea2d4f", "18": "8d1c055c213ab51a", "19": "806f8f9f67c1321f", "20": "ba5d835cd3756f81", "21": "bedd3bc934b83f58", "22": "e55afacc55f53152", "23": "cf7c706bee4e29cc", "24": "345cd1b7ec82598d", "25": "f01c92b243645b4e", "26": "54c3380f579b6729", "27": "d8d767c824110809", "28": "ad3dccb7bd56195e", "29": "3147966ac3ee3b0f", "30": "5c32e2734dd85352", "31": "099ee7edfccfb30f", "32": "0778a13a682f0cbb", "33": "6be20de557b963e9", "34": "da7b9f31790187c3", "35": "17bba31989deabe4", "36": "267c43d4a566a343", "37": "cff206ec60c41144", "38": "c9cd0ce5f2cf7cba", "39": "0e87c765d5713ad6", "40": "ce680f01cc87ac2b", "41": "24380e4087fb70d5", "42": "c58209407d4237e8", "43": "54905c779f6306ec", "44": "bdb0b28856af8fe2", "45": "e5d51caa27a2a995", "46": "12858d9498b8f2dc", "47": "2f8c667574e48967", "48": "08332675f638af21", "49": "4ed4ad08eaab7c1c", "50": "354367198161115c", "51": "ba6724f5637cd5d9", "52": "fdf8b4d4bf2be849", "53": "66f8ffc9c3fbedf2", "54": "73723cec09ed2417", "55": "f9e8dac18e2e7bdf", "56": "86619fe91fc50452", "57": "8a3d1d863ddb4d2f", "58": "acee339eea91405a", "59": "99c0fcbdc4f53a0e", "60": "cd42295e6b9fcac1", "61": "3712295d0a11267c", "62": "f787d08450bb4ac6", "63": "c0e8c155ec6fcd84", "64": "fa2cf116b4b9871b", "65": "f3a0edb87b006f25", "66": "a0aa708a9e56bca1", "67": "99286ea0671b6a66", "68": "14861c2ceee47357", "69": "2735bfc7a6304c2e", "70": "e049e07b5afc08cf", "71": "c11d4d615ce6b927", "72": "70d2f844bf68b0d0", "73": "c95100868c3ef766", "74": "17c53201f17a093a", "75": "40bdab93c3490c2a", "76": "7ab7989194b62fca", "77": "97ec841e4f367258", "78": "c9051bc3ad4170f1"} \ No newline at end of file diff --git a/graphify-out/2026-09-21/.graphify_labels.json b/graphify-out/2026-09-21/.graphify_labels.json new file mode 100644 index 0000000..d5c7797 --- /dev/null +++ b/graphify-out/2026-09-21/.graphify_labels.json @@ -0,0 +1,81 @@ +{ + "0": "get_settings", + "1": "budgeting/router.py", + "2": "Base", + "3": "set_space_context", + "4": "imports/router.py", + "5": "alfa_xlsx.py", + "6": "imports/service.py", + "7": "types.ts", + "8": "router.tsx", + "9": "ledger/router.py", + "10": "AccountsPage.tsx", + "11": "compilerOptions", + "12": "AnalyticsPage.tsx", + "13": "SettingsPage.tsx", + "14": "devDependencies", + "15": "Session", + "16": "dependencies", + "17": "ImportDetailPage.tsx", + "18": "OperationsPage.tsx", + "19": "queryKeys.ts", + "20": "Toaster.tsx", + "21": "adapters/base.py", + "22": "BudgetPage.tsx", + "23": "client.ts", + "24": "fields.tsx", + "25": "Docker Compose Development Stack", + "26": "Financial Space", + "27": "scripts", + "28": "dependencies.py", + "29": "General Pool", + "30": "test_adapter_contracts.py", + "31": "Per-File Envelope Encryption", + "32": "Operation", + "33": "Versioned Statement Imports", + "34": "Finance Frontend SPA", + "35": "Closed Beta Launch Gates", + "36": "package.json", + "37": "Financial Tracker MVP", + "38": "TestRocketbankDebitContract", + "39": "generate-api.mjs", + "40": "schema.d.ts", + "41": "test_api.py", + "42": "i18n-parity.test.ts", + "43": "Expected Income", + "44": "test_private_fixtures.py", + "45": "TestAlfaDebitContract", + "46": "jsdom", + "47": "graphify", + "48": "@types/react-dom", + "49": "typescript-eslint", + "50": "rocketbank_pdf.py", + "51": "vitest", + "52": "Favicon SVG (ledger lines icon)", + "53": "init-app-role.sh", + "54": "app/__init__.py", + "55": "spaces/__init__.py", + "56": "Payee", + "57": "eslint.config.js", + "58": "money.test.ts", + "59": "vite-env.d.ts", + "60": "vite.config.ts", + "61": "finance-backend", + "62": "LocalDirectoryBlobStore", + "63": "TestOzonDebitContract", + "64": "Gitea CI and real statement imports", + "65": "20260918_0002_hold_lifecycle.py", + "66": "eslint-plugin-react-hooks", + "67": "openapi-typescript", + "68": "@testing-library/dom", + "69": "@testing-library/react", + "70": "vite", + "71": "spaces/router.py", + "72": "identity/service.py", + "73": "crypto.py", + "74": "current_session", + "75": "AppError", + "76": "me", + "77": "AGENTS.md", + "78": "graphify.js" +} diff --git a/graphify-out/2026-09-21/GRAPH_REPORT.md b/graphify-out/2026-09-21/GRAPH_REPORT.md new file mode 100644 index 0000000..c2a261f --- /dev/null +++ b/graphify-out/2026-09-21/GRAPH_REPORT.md @@ -0,0 +1,370 @@ +# Graph Report - finance (2026-09-21) + +## Corpus Check +- 151 files · ~64,579 words +- Verdict: corpus is large enough that graph structure adds value. + +## Summary +- 1275 nodes · 3720 edges · 79 communities (56 shown, 16 thin omitted) +- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 71 edges (avg confidence: 0.93) +- Token cost: 0 input · 0 output + +## Graph Freshness +- Built from commit: `35b9ea83` +- Run `git rev-parse HEAD` and compare to check if the graph is stale. +- Run `graphify update .` after code changes (no API cost). + +## Community Hubs (Navigation) +- get_settings +- budgeting/router.py +- Base +- set_space_context +- imports/router.py +- alfa_xlsx.py +- imports/service.py +- types.ts +- router.tsx +- ledger/router.py +- AccountsPage.tsx +- compilerOptions +- AnalyticsPage.tsx +- SettingsPage.tsx +- devDependencies +- Session +- dependencies +- ImportDetailPage.tsx +- OperationsPage.tsx +- queryKeys.ts +- Toaster.tsx +- adapters/base.py +- BudgetPage.tsx +- client.ts +- fields.tsx +- Docker Compose Development Stack +- Financial Space +- scripts +- dependencies.py +- General Pool +- test_adapter_contracts.py +- Per-File Envelope Encryption +- Operation +- Versioned Statement Imports +- Finance Frontend SPA +- Closed Beta Launch Gates +- package.json +- Financial Tracker MVP +- TestRocketbankDebitContract +- generate-api.mjs +- schema.d.ts +- test_api.py +- i18n-parity.test.ts +- Expected Income +- test_private_fixtures.py +- TestAlfaDebitContract +- jsdom +- graphify +- @types/react-dom +- typescript-eslint +- rocketbank_pdf.py +- vitest +- Favicon SVG (ledger lines icon) +- init-app-role.sh +- Payee +- finance-backend +- LocalDirectoryBlobStore +- TestOzonDebitContract +- Gitea CI and real statement imports +- 20260918_0002_hold_lifecycle.py +- eslint-plugin-react-hooks +- openapi-typescript +- @testing-library/dom +- @testing-library/react +- vite +- spaces/router.py +- identity/service.py +- crypto.py +- current_session +- AppError +- me +- AGENTS.md + +## God Nodes (most connected - your core abstractions) +1. `Session` - 144 edges +2. `AppError` - 54 edges +3. `Base` - 47 edges +4. `PkMixin` - 39 edges +5. `get_settings()` - 38 edges +6. `TimestampMixin` - 38 edges +7. `conflict()` - 35 edges +8. `record()` - 34 edges +9. `UnsupportedStatementLayout` - 30 edges +10. `StatementDocument` - 30 edges + +## Surprising Connections (you probably didn't know these) +- `Typed Same-Origin API Client` --conceptually_related_to--> `Same-Origin Reverse Proxy` [INFERRED] + frontend/README.md → infra/README.md +- `Financial Space Ownership` --conceptually_related_to--> `Financial Space` [INFERRED] + docs/adr/0001-financial-space-ownership-and-rls.md → CONTEXT.md +- `Versioned Statement Imports` --conceptually_related_to--> `Statement Import` [INFERRED] + docs/adr/0003-versioned-statement-imports.md → CONTEXT.md +- `MVP Release Gates` --conceptually_related_to--> `Closed Beta Launch Gates` [INFERRED] + .kilo/plans/1789034192214-financial-tracker-mvp.md → docs/operations/beta-release-runbook.md +- `Carry-Over Budget Reserves` --references--> `Savings Envelope` [EXTRACTED] + docs/adr/0002-journal-and-budget-reserves.md → CONTEXT.md + +## Import Cycles +- None detected. + +## Hyperedges (group relationships) +- **Auditable Financial Model** — context_operation, context_posting, docs_adr_0002_journal_and_budget_reserves_derived_balances, docs_adr_0002_journal_and_budget_reserves_plan_funding_separation, docs_adr_0002_journal_and_budget_reserves_closure_snapshots [EXTRACTED 1.00] +- **Financial Space Tenancy Boundary** — context_financial_space, context_membership, docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization, docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls, docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity [EXTRACTED 1.00] +- **Safe Statement Import Flow** — context_statement_import, context_parse_run, context_source_record, docs_adr_0003_versioned_statement_imports_immutable_statement_document, docs_adr_0003_versioned_statement_imports_conservative_deduplication, docs_adr_0003_versioned_statement_imports_atomic_confirm_revert [EXTRACTED 1.00] + +## Communities (79 total, 16 thin omitted) + +### Community 0 - "get_settings" +Cohesion: 0.14 +Nodes (27): get_settings(), Settings, send_token_email(), accept_invite(), AcceptInviteBody, confirm_password_reset(), create_invite(), InviteBody (+19 more) + +### Community 1 - "budgeting/router.py" +Cohesion: 0.14 +Nodes (42): balances(), cash_flow(), category_spend(), plan_fact(), Context, date, Db, get (+34 more) + +### Community 2 - "Base" +Cohesion: 0.07 +Nodes (82): downgrade(), upgrade(), AuditEvent, Append-only domain/security event. Never stores raw financial payloads., ExpectedIncome, ExpectedIncomeMatch, FundingMovement, PeriodClosure (+74 more) + +### Community 3 - "set_space_context" +Cohesion: 0.07 +Nodes (44): get_db(), get_engine(), get_session_factory(), Any, sessionmaker, Transaction-local RLS context. No-op on SQLite (tests); fail-closed on…, Transactional scope for workers/endpoints that own the transaction lifecycle., session_scope() (+36 more) + +### Community 4 - "imports/router.py" +Cohesion: 0.15 +Nodes (33): confirm(), ConfirmBody, decide_row(), DecisionBody, delete_source(), detail(), HoldResolveBody, imports() (+25 more) + +### Community 5 - "alfa_xlsx.py" +Cohesion: 0.17 +Nodes (24): AlfaDebitXlsxAdapter, _AlfaHeaderMeta, AlfaXlsxAdapterBase, _cell_str(), _debit_find_header(), _debit_header_metadata(), _debit_header_value(), _debit_norm() (+16 more) + +### Community 6 - "imports/service.py" +Cohesion: 0.08 +Nodes (72): Any, record(), datetime, utcnow(), conflict(), not_found(), magic_kind(), BlobStore (+64 more) + +### Community 7 - "types.ts" +Cohesion: 0.06 +Nodes (50): api, Account, AccountStatus, BalanceItem, BalancesReport, BudgetBlocker, BudgetCategory, BudgetStatus (+42 more) + +### Community 8 - "router.tsx" +Cohesion: 0.11 +Nodes (31): AcceptInvitePayload, LoginPayload, PasswordResetPayload, AcceptInvitePage, AccountsPage, BudgetPage, LoginPage, OperationsPage (+23 more) + +### Community 9 - "ledger/router.py" +Cohesion: 0.15 +Nodes (31): account_json(), AccountBody, accounts(), archive_account(), create_account(), create_operation(), delete_account(), operation_json() (+23 more) + +### Community 10 - "AccountsPage.tsx" +Cohesion: 0.12 +Nodes (22): AccountType, ImportsPage, Button(), ButtonProps, Variant, ConfirmDialog(), ConfirmDialogProps, EmptyState() (+14 more) + +### Community 11 - "compilerOptions" +Cohesion: 0.07 +Nodes (28): compilerOptions, baseUrl, esModuleInterop, forceConsistentCasingInFileNames, isolatedModules, jsx, lib, module (+20 more) + +### Community 12 - "AnalyticsPage.tsx" +Cohesion: 0.12 +Nodes (19): AnalyticsPage, CashFlowColumn, ColumnChart(), ColumnChartProps, BarRow, HorizontalBars(), HorizontalBarsProps, PlanFactBars() (+11 more) + +### Community 13 - "SettingsPage.tsx" +Cohesion: 0.23 +Nodes (10): NotFoundPage, PageHeader(), PageHeaderProps, useCancelDeletion(), useRequestDeletion(), useRequestExport(), useSpaceDeletion(), DeletionForm() (+2 more) + +### Community 14 - "devDependencies" +Cohesion: 0.11 +Nodes (19): eslint, @eslint/js, eslint-plugin-jsx-a11y, devDependencies, eslint, @eslint/js, eslint-plugin-jsx-a11y, globals (+11 more) + +### Community 15 - "Session" +Cohesion: 0.08 +Nodes (88): balances(), cash_flow(), category_spend(), plan_fact(), date, UUID, BudgetPeriod, Calendar month budget period in the space timezone (month granularity). (+80 more) + +### Community 16 - "dependencies" +Cohesion: 0.11 +Nodes (19): dependencies, @hookform/resolvers, i18next, react, react-dom, react-hook-form, react-i18next, react-router-dom (+11 more) + +### Community 17 - "ImportDetailPage.tsx" +Cohesion: 0.27 +Nodes (15): RowDecision, ImportDetailPage, useToast(), useConfirmImport(), useImport(), useImportErrorToaster(), useReparseImport(), useRevertImport() (+7 more) + +### Community 18 - "OperationsPage.tsx" +Cohesion: 0.17 +Nodes (21): Badge(), BadgeTone, useActiveAccounts(), useImports(), useCategorizeOperation(), useCreateOperation(), useLedgerMutation(), useOperations() (+13 more) + +### Community 19 - "queryKeys.ts" +Cohesion: 0.16 +Nodes (13): invalidationRoots, queryKeys, SESSION_ROOT, sessionInvalidationRoot, SPACE_ROOT, spaceInvalidationRoot, CreateAccountPayload, OperationFilters (+5 more) + +### Community 20 - "Toaster.tsx" +Cohesion: 0.13 +Nodes (14): Locale, App(), queryClient, AppRoutes(), ToastApi, ToastContext, ToastItem, ToastKind (+6 more) + +### Community 21 - "adapters/base.py" +Cohesion: 0.10 +Nodes (21): account_fingerprint(), amount_to_kopecks(), _mask_digits(), money_to_kopecks(), normalize_description(), date, Parse statement money strings like '-1 234,56 RUR', '+ 500.00 ₽', '12 345'.…, record_fingerprint() (+13 more) + +### Community 22 - "BudgetPage.tsx" +Cohesion: 0.36 +Nodes (12): useBudgetCategories(), useBudgetErrorToaster(), useBudgetSummary(), useCloseMonth(), useCopyPreviousMonth(), useFundCategory(), usePeriodMutation(), useReopenMonth() (+4 more) + +### Community 23 - "client.ts" +Cohesion: 0.23 +Nodes (10): apiClient, ApiError, buildUrl(), ErrorEnvelope, parseErrorEnvelope(), QueryValue, readCsrfToken(), request() (+2 more) + +### Community 24 - "fields.tsx" +Cohesion: 0.23 +Nodes (10): FieldChrome, InputProps, MoneyField(), MoneyFieldProps, SelectFieldProps, SelectProps, TextareaField(), TextareaFieldProps (+2 more) + +### Community 25 - "Docker Compose Development Stack" +Cohesion: 0.29 +Nodes (8): Commodity Infrastructure Services, Docker Compose Development Stack, Internal Backend Network, Same-Origin Frontend Service, Worker Parsing Isolation, Finance Infrastructure, Same-Origin Reverse Proxy, Backend and Frontend Workstream Contracts + +### Community 26 - "Financial Space" +Cohesion: 0.17 +Nodes (12): Credit Reserve, Financial Account, Financial Space, Membership, User, Carry-Over Budget Reserves, Provider-Neutral Data Boundary, Russian Federation Data Residency (+4 more) + +### Community 27 - "scripts" +Cohesion: 0.22 +Nodes (9): scripts, api:generate, build, dev, lint, preview, test, test:watch (+1 more) + +### Community 28 - "dependencies.py" +Cohesion: 0.19 +Nodes (16): current_context(), Context, CurrentSession, Header, RequestContext, require_csrf(), forbidden(), Any (+8 more) + +### Community 29 - "General Pool" +Cohesion: 0.29 +Nodes (8): Budget Period, Funding, General Pool, Monthly Category, Plan Assignment, Savings Envelope, Immutable Closure Snapshots, Plan and Funding Separation + +### Community 30 - "test_adapter_contracts.py" +Cohesion: 0.13 +Nodes (10): AlfaCreditXlsxAdapter, Protocol, StatementAdapter, detect_adapter(), OzonCreditPdfAdapter, make_draft(), make_source_row(), Sanitized synthetic contract tests for the evidenced statement adapters. These… (+2 more) + +### Community 31 - "Per-File Envelope Encryption" +Cohesion: 0.29 +Nodes (7): Immutable Statement Document, Per-File Envelope Encryption, Backup and Restore Runbook, Mandatory KEK Backup, Quarterly Restore Drill, Disaster Restore Procedure, Post-Restore Deletion Replay + +### Community 32 - "Operation" +Cohesion: 0.47 +Nodes (6): Internal Transfer, Operation, Posting, Refund, Derived Account Balances, Operations and Postings Journal + +### Community 33 - "Versioned Statement Imports" +Cohesion: 0.20 +Nodes (11): Parse Run, Source Record, Statement Import, Atomic Import Confirm and Revert, Conservative Deduplication, Parser Versioning and Review Diff, Versioned Statement Imports, Layout Drift Re-Gating (+3 more) + +### Community 34 - "Finance Frontend SPA" +Cohesion: 0.29 +Nodes (7): Server-Side Secret Boundary, Grossbukh Application Shell, Accessible Responsive UI, Finance Frontend SPA, RU and EN Localization, Space-Scoped Query Keys, Typed Same-Origin API Client + +### Community 35 - "Closed Beta Launch Gates" +Cohesion: 0.20 +Nodes (11): Crypto-Shredded Deletion, Closed Beta Release Runbook, Forward-Fix Rollback Policy, Financial Data Incident Response, Closed Beta Launch Gates, Production Launch Sequence, Thirty-Day Space Deletion, Durable Deletion Ledger (+3 more) + +### Community 36 - "package.json" +Cohesion: 0.40 +Nodes (4): name, private, type, version + +### Community 37 - "Financial Tracker MVP" +Cohesion: 0.18 +Nodes (11): Audited Break-Glass Access, Cross-Space Referential Integrity, Defense-in-Depth Authorization, Financial Space Ownership, Transaction-Local RLS Context, Budget Invariants, Critical User Path, Financial Tracker MVP (+3 more) + +### Community 38 - "TestRocketbankDebitContract" +Cohesion: 0.24 +Nodes (3): same_page_rocket_lines(), synthetic_rocket_lines(), TestRocketbankDebitContract + +### Community 39 - "generate-api.mjs" +Cohesion: 0.40 +Nodes (5): firstReadable(), LOCAL_CANDIDATES, main(), OUT_DIR, REMOTE_CANDIDATES + +### Community 40 - "schema.d.ts" +Cohesion: 0.33 +Nodes (5): components, $defs, operations, paths, webhooks + +### Community 41 - "test_api.py" +Cohesion: 0.67 +Nodes (3): TestClient, test_invite_login_and_authenticated_space(), test_openapi_contains_critical_paths() + +### Community 44 - "test_private_fixtures.py" +Cohesion: 0.13 +Nodes (20): Any, Reconcile parsed rows against declared bank controls with stable diagnostics.…, _reconciliation_summary(), _check(), _fail(), _load_entries(), parsed(), fixture (+12 more) + +### Community 45 - "TestAlfaDebitContract" +Cohesion: 0.21 +Nodes (3): alfa_workbook_bytes(), synthetic_alfa_rows(), TestAlfaDebitContract + +### Community 47 - "graphify" +Cohesion: 0.17 +Nodes (11): command, enabled, timeout, type, mcp, graphify, plugin, $schema (+3 more) + +### Community 50 - "rocketbank_pdf.py" +Cohesion: 0.27 +Nodes (6): _date_from(), _PendingRecord, date, Rocketbank debit statement contract, evidenced against the real document.…, RocketbankDebitPdfAdapter, open_pdf() + +### Community 62 - "LocalDirectoryBlobStore" +Cohesion: 0.39 +Nodes (3): LocalDirectoryBlobStore, Path, S3-neutral local store; production swaps in an S3-compatible client. + +### Community 63 - "TestOzonDebitContract" +Cohesion: 0.16 +Nodes (6): minimal_pdf(), ozon_extracted(), _QuotaSettings, Build a small valid single-font PDF with empty or ASCII-only pages., TestOzonDebitContract, MonkeyPatch + +### Community 64 - "Gitea CI and real statement imports" +Cohesion: 0.29 +Nodes (6): Confirmed decisions, Gitea CI and real statement imports, Goal and constraints, Implementation plan, Principal risks, Validation and rollout + +### Community 65 - "20260918_0002_hold_lifecycle.py" +Cohesion: 0.80 +Nodes (4): downgrade(), _has_check_constraint(), _has_column(), upgrade() + +### Community 71 - "spaces/router.py" +Cohesion: 0.18 +Nodes (18): cancel_deletion(), current(), deletion_status(), DeletionBody, invite_member(), MemberInviteBody, alias, BaseModel (+10 more) + +### Community 72 - "identity/service.py" +Cohesion: 0.28 +Nodes (18): unauthorized(), accept_invitation(), authenticate(), create_invitation(), create_password_reset(), create_session(), get_active_session(), normalize_email() (+10 more) + +### Community 73 - "crypto.py" +Cohesion: 0.40 +Nodes (5): encrypt_file(), EncryptedFile, Per-file random DEK; DEK wrapped with the KEK from the secret manager., Crypto-shred hook: deleting wrapped DEK rows in DB plus blobs removes access., shred_dek_material() + +### Community 74 - "current_session" +Cohesion: 0.29 +Nodes (7): current_session(), alias, Db, User, Cookie, session_cookie_name, UserSession + +### Community 75 - "AppError" +Cohesion: 0.43 +Nodes (5): AppError, Domain error rendered as a machine-readable JSON error payload., unprocessable(), _quota_error(), Exception + +### Community 76 - "me" +Cohesion: 0.67 +Nodes (3): me(), CurrentSession, get + +## Knowledge Gaps +- **186 isolated node(s):** `$schema`, `file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js`, `type`, `/home/k1nq/.local/bin/graphify-mcp`, `/home/k1nq/repos/finance/graphify-out/graph.json` (+181 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 339 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **16 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. + +## Suggested Questions +_Questions this graph is uniquely positioned to answer:_ + +- **Why does `Session` connect `Session` to `Base`, `set_space_context`, `imports/service.py`, `identity/service.py`, `dependencies.py`?** + _High betweenness centrality (0.087) - this node is a cross-community bridge._ +- **Why does `AppError` connect `AppError` to `get_settings`, `Base`, `set_space_context`, `imports/router.py`, `alfa_xlsx.py`, `imports/service.py`, `TestRocketbankDebitContract`, `identity/service.py`, `crypto.py`, `Session`, `adapters/base.py`, `dependencies.py`, `test_adapter_contracts.py`, `TestOzonDebitContract`?** + _High betweenness centrality (0.067) - this node is a cross-community bridge._ +- **Why does `bad_request()` connect `Session` to `budgeting/router.py`, `imports/service.py`, `spaces/router.py`, `identity/service.py`, `ledger/router.py`, `AppError`, `dependencies.py`?** + _High betweenness centrality (0.017) - this node is a cross-community bridge._ +- **Are the 2 inferred relationships involving `Session` (e.g. with `UTCDateTime` and `test_postgres_rls_requires_matching_transaction_context()`) actually correct?** + _`Session` has 2 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 24 inferred relationships involving `AppError` (e.g. with `request_export()` and `login()`) actually correct?** + _`AppError` has 24 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 3 inferred relationships involving `Base` (e.g. with `downgrade()` and `upgrade()`) actually correct?** + _`Base` has 3 INFERRED edges - model-reasoned connections that need verification._ +- **What connects `$schema`, `file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js`, `type` to the rest of the system?** + _186 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/graphify-out/2026-09-21/graph.json b/graphify-out/2026-09-21/graph.json new file mode 100644 index 0000000..b7e6838 --- /dev/null +++ b/graphify-out/2026-09-21/graph.json @@ -0,0 +1,58859 @@ +{ + "directed": false, + "multigraph": false, + "graph": { + "hyperedges": [ + { + "id": "auditable_financial_model", + "label": "Auditable Financial Model", + "nodes": [ + "context_operation", + "context_posting", + "docs_adr_0002_journal_and_budget_reserves_derived_balances", + "docs_adr_0002_journal_and_budget_reserves_plan_funding_separation", + "docs_adr_0002_journal_and_budget_reserves_closure_snapshots" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md" + }, + { + "id": "financial_space_tenancy_boundary", + "label": "Financial Space Tenancy Boundary", + "nodes": [ + "context_financial_space", + "context_membership", + "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls", + "docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md" + }, + { + "id": "safe_statement_import_flow", + "label": "Safe Statement Import Flow", + "nodes": [ + "context_statement_import", + "context_parse_run", + "context_source_record", + "docs_adr_0003_versioned_statement_imports_immutable_statement_document", + "docs_adr_0003_versioned_statement_imports_conservative_deduplication", + "docs_adr_0003_versioned_statement_imports_atomic_confirm_revert" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md" + } + ] + }, + "nodes": [ + { + "id": "backend_app_config_settings", + "label": "Settings", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "settings", + "source_file": "backend/app/config.py", + "source_location": "L8" + }, + { + "id": "backend_app_identity_router_acceptinvitebody", + "label": "AcceptInviteBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "acceptinvitebody", + "source_file": "backend/app/identity/router.py", + "source_location": "L21" + }, + { + "id": "backend_app_identity_router_invitebody", + "label": "InviteBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "invitebody", + "source_file": "backend/app/identity/router.py", + "source_location": "L17" + }, + { + "id": "backend_app_identity_router_loginbody", + "label": "LoginBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "loginbody", + "source_file": "backend/app/identity/router.py", + "source_location": "L31" + }, + { + "id": "backend_app_identity_router_resetbody", + "label": "ResetBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "resetbody", + "source_file": "backend/app/identity/router.py", + "source_location": "L40" + }, + { + "id": "backend_app_identity_router_resetrequestbody", + "label": "ResetRequestBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "resetrequestbody", + "source_file": "backend/app/identity/router.py", + "source_location": "L36" + }, + { + "id": "backend_app_budgeting_router_assignmentitem", + "label": "AssignmentItem", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "assignmentitem", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L19" + }, + { + "id": "backend_app_budgeting_router_assignmentsbody", + "label": "AssignmentsBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "assignmentsbody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L24" + }, + { + "id": "backend_app_budgeting_router_categorybody", + "label": "CategoryBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "categorybody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L14" + }, + { + "id": "backend_app_budgeting_router_categoryfundingbody", + "label": "CategoryFundingBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "categoryfundingbody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L54" + }, + { + "id": "backend_app_budgeting_router_expectedincomebody", + "label": "ExpectedIncomeBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "expectedincomebody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L35" + }, + { + "id": "backend_app_budgeting_router_fundingbody", + "label": "FundingBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "fundingbody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L28" + }, + { + "id": "backend_app_budgeting_router_monthbody", + "label": "MonthBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "monthbody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L46" + }, + { + "id": "backend_app_budgeting_router_planbody", + "label": "PlanBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "planbody", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L50" + }, + { + "id": "frontend_src_api_types_accounttype", + "label": "AccountType", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "accounttype", + "source_file": "frontend/src/api/types.ts", + "source_location": "L11" + }, + { + "id": "frontend_src_components_ui_button_buttonprops", + "label": "ButtonProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "buttonprops", + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_button_variant", + "label": "Variant", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "variant", + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_components_ui_confirmdialog_confirmdialogprops", + "label": "ConfirmDialogProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "confirmdialogprops", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_emptystate_emptystateprops", + "label": "EmptyStateProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "emptystateprops", + "source_file": "frontend/src/components/ui/EmptyState.tsx", + "source_location": "L4" + }, + { + "id": "frontend_src_components_ui_errorstate_errorstateprops", + "label": "ErrorStateProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "errorstateprops", + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_modal_modalprops", + "label": "ModalProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "modalprops", + "source_file": "frontend/src/components/ui/Modal.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_querygate_querygateprops", + "label": "QueryGateProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "querygateprops", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L7" + }, + { + "id": "frontend_src_pages_accountspage_accountformvalues", + "label": "AccountFormValues", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "accountformvalues", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L20" + }, + { + "id": "frontend_src_components_charts_columnchart_cashflowcolumn", + "label": "CashFlowColumn", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "cashflowcolumn", + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_components_charts_columnchart_columnchartprops", + "label": "ColumnChartProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "columnchartprops", + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_components_charts_horizontalbars_barrow", + "label": "BarRow", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "barrow", + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_components_charts_horizontalbars_horizontalbarsprops", + "label": "HorizontalBarsProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "horizontalbarsprops", + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L9" + }, + { + "id": "frontend_src_components_charts_planfactbars_planfactbarsprops", + "label": "PlanFactBarsProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "planfactbarsprops", + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_components_charts_planfactbars_planfactrow", + "label": "PlanFactRow", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "planfactrow", + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_components_ui_monthswitcher_monthswitcherprops", + "label": "MonthSwitcherProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "monthswitcherprops", + "source_file": "frontend/src/components/ui/MonthSwitcher.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_pageheader_pageheaderprops", + "label": "PageHeaderProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "pageheaderprops", + "source_file": "frontend/src/components/ui/PageHeader.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_pages_settingspage_deletionformvalues", + "label": "DeletionFormValues", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "deletionformvalues", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L19" + }, + { + "id": "backend_app_budgeting_models_budgetperiod", + "label": "BudgetPeriod", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "budgetperiod", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L25" + }, + { + "id": "backend_app_identity_models_session", + "label": "Session", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "session", + "source_file": "backend/app/identity/models.py", + "source_location": "L54" + }, + { + "id": "backend_app_ledger_models_category", + "label": "Category", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "category", + "source_file": "backend/app/ledger/models.py", + "source_location": "L159" + }, + { + "id": "frontend_src_api_types_rowdecision", + "label": "RowDecision", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "rowdecision", + "source_file": "frontend/src/api/types.ts", + "source_location": "L216" + }, + { + "id": "frontend_src_components_ui_badge_badgetone", + "label": "BadgeTone", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "badgetone", + "source_file": "frontend/src/components/ui/Badge.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_api_types_createaccountpayload", + "label": "CreateAccountPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "createaccountpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L26" + }, + { + "id": "frontend_src_api_types_operationfilters", + "label": "OperationFilters", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "operationfilters", + "source_file": "frontend/src/api/types.ts", + "source_location": "L93" + }, + { + "id": "backend_app_audit_models_auditevent", + "label": "AuditEvent", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "auditevent", + "source_file": "backend/app/audit/models.py", + "source_location": "L10" + }, + { + "id": "backend_app_budgeting_models_expectedincome", + "label": "ExpectedIncome", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "expectedincome", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L77" + }, + { + "id": "backend_app_budgeting_models_expectedincomematch", + "label": "ExpectedIncomeMatch", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "expectedincomematch", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L103" + }, + { + "id": "backend_app_budgeting_models_fundingmovement", + "label": "FundingMovement", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "fundingmovement", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L132" + }, + { + "id": "backend_app_budgeting_models_periodclosure", + "label": "PeriodClosure", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "periodclosure", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L166" + }, + { + "id": "backend_app_budgeting_models_planassignment", + "label": "PlanAssignment", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "planassignment", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L47" + }, + { + "id": "backend_app_categorization_models_bankcategorymapping", + "label": "BankCategoryMapping", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "bankcategorymapping", + "source_file": "backend/app/categorization/models.py", + "source_location": "L103" + }, + { + "id": "backend_app_categorization_models_categorizationrule", + "label": "CategorizationRule", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "categorizationrule", + "source_file": "backend/app/categorization/models.py", + "source_location": "L64" + }, + { + "id": "backend_app_categorization_models_incomesource", + "label": "IncomeSource", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "incomesource", + "source_file": "backend/app/categorization/models.py", + "source_location": "L17" + }, + { + "id": "backend_app_categorization_models_mcccode", + "label": "MccCode", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "mcccode", + "source_file": "backend/app/categorization/models.py", + "source_location": "L93" + }, + { + "id": "backend_app_categorization_models_payee", + "label": "Payee", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "payee", + "source_file": "backend/app/categorization/models.py", + "source_location": "L31" + }, + { + "id": "backend_app_categorization_models_payeealias", + "label": "PayeeAlias", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "payeealias", + "source_file": "backend/app/categorization/models.py", + "source_location": "L45" + }, + { + "id": "backend_app_db_base_base", + "label": "Base", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "base", + "source_file": "backend/app/db/base.py", + "source_location": "L17" + }, + { + "id": "backend_app_db_base_pkmixin", + "label": "PkMixin", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "pkmixin", + "source_file": "backend/app/db/base.py", + "source_location": "L44" + }, + { + "id": "backend_app_db_base_timestampmixin", + "label": "TimestampMixin", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "timestampmixin", + "source_file": "backend/app/db/base.py", + "source_location": "L48" + }, + { + "id": "backend_app_db_base_utcdatetime", + "label": "UTCDateTime", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "utcdatetime", + "source_file": "backend/app/db/base.py", + "source_location": "L21" + }, + { + "id": "backend_app_exports_models_dataexport", + "label": "DataExport", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "dataexport", + "source_file": "backend/app/exports/models.py", + "source_location": "L10" + }, + { + "id": "backend_app_exports_models_deletionledger", + "label": "DeletionLedger", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "deletionledger", + "source_file": "backend/app/exports/models.py", + "source_location": "L29" + }, + { + "id": "backend_app_identity_models_invitation", + "label": "Invitation", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "invitation", + "source_file": "backend/app/identity/models.py", + "source_location": "L23" + }, + { + "id": "backend_app_identity_models_passwordreset", + "label": "PasswordReset", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "passwordreset", + "source_file": "backend/app/identity/models.py", + "source_location": "L43" + }, + { + "id": "backend_app_identity_models_user", + "label": "User", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "user", + "source_file": "backend/app/identity/models.py", + "source_location": "L10" + }, + { + "id": "backend_app_imports_models_dedupcandidate", + "label": "DedupCandidate", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "dedupcandidate", + "source_file": "backend/app/imports/models.py", + "source_location": "L174" + }, + { + "id": "backend_app_imports_models_holdresolution", + "label": "HoldResolution", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "holdresolution", + "source_file": "backend/app/imports/models.py", + "source_location": "L219" + }, + { + "id": "backend_app_imports_models_parserun", + "label": "ParseRun", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "parserun", + "source_file": "backend/app/imports/models.py", + "source_location": "L77" + }, + { + "id": "backend_app_imports_models_sourcerecord", + "label": "SourceRecord", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "sourcerecord", + "source_file": "backend/app/imports/models.py", + "source_location": "L100" + }, + { + "id": "backend_app_imports_models_sourcerecordlink", + "label": "SourceRecordLink", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "sourcerecordlink", + "source_file": "backend/app/imports/models.py", + "source_location": "L148" + }, + { + "id": "backend_app_imports_models_statementdocument", + "label": "StatementDocument", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "statementdocument", + "source_file": "backend/app/imports/models.py", + "source_location": "L42" + }, + { + "id": "backend_app_ledger_models_account", + "label": "Account", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "account", + "source_file": "backend/app/ledger/models.py", + "source_location": "L26" + }, + { + "id": "backend_app_ledger_models_operation", + "label": "Operation", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "operation", + "source_file": "backend/app/ledger/models.py", + "source_location": "L54" + }, + { + "id": "backend_app_spaces_models_financialspace", + "label": "FinancialSpace", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "financialspace", + "source_file": "backend/app/spaces/models.py", + "source_location": "L10" + }, + { + "id": "frontend_src_api_types_locale", + "label": "Locale", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "locale", + "source_file": "frontend/src/api/types.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_toaster_toastapi", + "label": "ToastApi", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toastapi", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L12" + }, + { + "id": "frontend_src_components_ui_toaster_toastitem", + "label": "ToastItem", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toastitem", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L6" + }, + { + "id": "frontend_src_components_ui_toaster_toastkind", + "label": "ToastKind", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toastkind", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L4" + }, + { + "id": "backend_app_imports_adapters_base_sourcerow", + "label": "SourceRow", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "sourcerow", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L25" + }, + { + "id": "backend_app_imports_adapters_base_statementdraft", + "label": "StatementDraft", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "statementdraft", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L49" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "label": "OzonDebitPdfAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "ozondebitpdfadapter", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L127" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "label": "OzonPdfAdapterBase", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "ozonpdfadapterbase", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L30" + }, + { + "id": "backend_tests_test_adapter_contracts_testmoneyparsing", + "label": "TestMoneyParsing", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "testmoneyparsing", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L132" + }, + { + "id": "frontend_src_api_client_apierror", + "label": "ApiError", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "apierror", + "source_file": "frontend/src/api/client.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_api_client_errorenvelope", + "label": "ErrorEnvelope", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "errorenvelope", + "source_file": "frontend/src/api/client.ts", + "source_location": "L47" + }, + { + "id": "frontend_src_api_client_queryvalue", + "label": "QueryValue", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "queryvalue", + "source_file": "frontend/src/api/client.ts", + "source_location": "L19" + }, + { + "id": "frontend_src_api_client_requestoptions", + "label": "RequestOptions", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "requestoptions", + "source_file": "frontend/src/api/client.ts", + "source_location": "L21" + }, + { + "id": "frontend_src_components_ui_fields_fieldchrome", + "label": "FieldChrome", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "fieldchrome", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L17" + }, + { + "id": "frontend_src_components_ui_fields_inputprops", + "label": "InputProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "inputprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_components_ui_fields_moneyfieldprops", + "label": "MoneyFieldProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "moneyfieldprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L73" + }, + { + "id": "frontend_src_components_ui_fields_selectfieldprops", + "label": "SelectFieldProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "selectfieldprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L111" + }, + { + "id": "frontend_src_components_ui_fields_selectprops", + "label": "SelectProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "selectprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L11" + }, + { + "id": "frontend_src_components_ui_fields_textareafieldprops", + "label": "TextareaFieldProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "textareafieldprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L137" + }, + { + "id": "frontend_src_components_ui_fields_textareaprops", + "label": "TextareaProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "textareaprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L12" + }, + { + "id": "frontend_src_components_ui_fields_textfieldprops", + "label": "TextFieldProps", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "textfieldprops", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L50" + }, + { + "id": "backend_app_dependencies_requestcontext", + "label": "RequestContext", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "requestcontext", + "source_file": "backend/app/dependencies.py", + "source_location": "L21" + }, + { + "id": "backend_app_spaces_models_membership", + "label": "Membership", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "membership", + "source_file": "backend/app/spaces/models.py", + "source_location": "L18" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "label": "AlfaCreditXlsxAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "alfacreditxlsxadapter", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L484" + }, + { + "id": "backend_app_imports_adapters_base_statementadapter", + "label": "StatementAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "statementadapter", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L77" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "label": "OzonCreditPdfAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "ozoncreditpdfadapter", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L302" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract", + "label": "TestBaseContract", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "testbasecontract", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L72" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "label": "TestRocketbankDebitContract", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": "testrocketbankdebitcontract", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L653" + }, + { + "id": "backend_app_imports_router_confirmbody", + "label": "ConfirmBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "confirmbody", + "source_file": "backend/app/imports/router.py", + "source_location": "L27" + }, + { + "id": "backend_app_imports_router_decisionbody", + "label": "DecisionBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "decisionbody", + "source_file": "backend/app/imports/router.py", + "source_location": "L20" + }, + { + "id": "backend_app_imports_router_holdresolvebody", + "label": "HoldResolveBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "holdresolvebody", + "source_file": "backend/app/imports/router.py", + "source_location": "L36" + }, + { + "id": "backend_app_imports_router_reviewbody", + "label": "ReviewBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "reviewbody", + "source_file": "backend/app/imports/router.py", + "source_location": "L14" + }, + { + "id": "frontend_src_api_generated_schema_d_components", + "label": "components", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "components", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L747" + }, + { + "id": "frontend_src_api_generated_schema_d_defs", + "label": "$defs", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "$defs", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L1000" + }, + { + "id": "frontend_src_api_generated_schema_d_operations", + "label": "operations", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "operations", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L1001" + }, + { + "id": "frontend_src_api_generated_schema_d_paths", + "label": "paths", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "paths", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L6" + }, + { + "id": "frontend_src_api_generated_schema_d_webhooks", + "label": "webhooks", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "webhooks", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L746" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "label": "TestAlfaDebitContract", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": "testalfadebitcontract", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L325" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "label": "AlfaDebitXlsxAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "alfadebitxlsxadapter", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L209" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfaheadermeta", + "label": "_AlfaHeaderMeta", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_alfaheadermeta", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L353" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "label": "AlfaXlsxAdapterBase", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "alfaxlsxadapterbase", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L33" + }, + { + "id": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "label": "UnsupportedStatementLayout", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "unsupportedstatementlayout", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L66" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord", + "label": "_PendingRecord", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "_pendingrecord", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L266" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "label": "RocketbankDebitPdfAdapter", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "rocketbankdebitpdfadapter", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L52" + }, + { + "id": "backend_app_imports_blob_blobstore", + "label": "BlobStore", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "blobstore", + "source_file": "backend/app/imports/blob.py", + "source_location": "L11" + }, + { + "id": "backend_app_imports_blob_s3blobstore", + "label": "S3BlobStore", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "s3blobstore", + "source_file": "backend/app/imports/blob.py", + "source_location": "L42" + }, + { + "id": "backend_app_ledger_models_posting", + "label": "Posting", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "posting", + "source_file": "backend/app/ledger/models.py", + "source_location": "L125" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore", + "label": "LocalDirectoryBlobStore", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": "localdirectoryblobstore", + "source_file": "backend/app/imports/blob.py", + "source_location": "L17" + }, + { + "id": "backend_tests_test_adapter_contracts_quotasettings", + "label": "_QuotaSettings", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": "_quotasettings", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L766" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract", + "label": "TestOzonDebitContract", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": "testozondebitcontract", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L531" + }, + { + "id": "frontend_src_api_types_account", + "label": "Account", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "account", + "source_file": "frontend/src/api/types.ts", + "source_location": "L14" + }, + { + "id": "frontend_src_api_types_accountstatus", + "label": "AccountStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "accountstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L12" + }, + { + "id": "frontend_src_api_types_balanceitem", + "label": "BalanceItem", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "balanceitem", + "source_file": "frontend/src/api/types.ts", + "source_location": "L284" + }, + { + "id": "frontend_src_api_types_balancesreport", + "label": "BalancesReport", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "balancesreport", + "source_file": "frontend/src/api/types.ts", + "source_location": "L291" + }, + { + "id": "frontend_src_api_types_budgetblocker", + "label": "BudgetBlocker", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budgetblocker", + "source_file": "frontend/src/api/types.ts", + "source_location": "L134" + }, + { + "id": "frontend_src_api_types_budgetcategory", + "label": "BudgetCategory", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budgetcategory", + "source_file": "frontend/src/api/types.ts", + "source_location": "L166" + }, + { + "id": "frontend_src_api_types_budgetstatus", + "label": "BudgetStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budgetstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L127" + }, + { + "id": "frontend_src_api_types_budgetsummary", + "label": "BudgetSummary", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budgetsummary", + "source_file": "frontend/src/api/types.ts", + "source_location": "L150" + }, + { + "id": "frontend_src_api_types_budgetwarning", + "label": "BudgetWarning", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budgetwarning", + "source_file": "frontend/src/api/types.ts", + "source_location": "L129" + }, + { + "id": "frontend_src_api_types_cashflowmonth", + "label": "CashFlowMonth", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "cashflowmonth", + "source_file": "frontend/src/api/types.ts", + "source_location": "L276" + }, + { + "id": "frontend_src_api_types_categorykind", + "label": "CategoryKind", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "categorykind", + "source_file": "frontend/src/api/types.ts", + "source_location": "L164" + }, + { + "id": "frontend_src_api_types_categoryspenditem", + "label": "CategorySpendItem", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "categoryspenditem", + "source_file": "frontend/src/api/types.ts", + "source_location": "L256" + }, + { + "id": "frontend_src_api_types_confirmimportpayload", + "label": "ConfirmImportPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "confirmimportpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L251" + }, + { + "id": "frontend_src_api_types_createoperationpayload", + "label": "CreateOperationPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "createoperationpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L58" + }, + { + "id": "frontend_src_api_types_expectedincome", + "label": "ExpectedIncome", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "expectedincome", + "source_file": "frontend/src/api/types.ts", + "source_location": "L141" + }, + { + "id": "frontend_src_api_types_expectedincomestatus", + "label": "ExpectedIncomeStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "expectedincomestatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L139" + }, + { + "id": "frontend_src_api_types_exportinfo", + "label": "ExportInfo", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "exportinfo", + "source_file": "frontend/src/api/types.ts", + "source_location": "L301" + }, + { + "id": "frontend_src_api_types_exportstatus", + "label": "ExportStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "exportstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L299" + }, + { + "id": "frontend_src_api_types_importdetail", + "label": "ImportDetail", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "importdetail", + "source_file": "frontend/src/api/types.ts", + "source_location": "L231" + }, + { + "id": "frontend_src_api_types_importissue", + "label": "ImportIssue", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "importissue", + "source_file": "frontend/src/api/types.ts", + "source_location": "L200" + }, + { + "id": "frontend_src_api_types_importrow", + "label": "ImportRow", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "importrow", + "source_file": "frontend/src/api/types.ts", + "source_location": "L218" + }, + { + "id": "frontend_src_api_types_importstatus", + "label": "ImportStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "importstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L179" + }, + { + "id": "frontend_src_api_types_importsummary", + "label": "ImportSummary", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "importsummary", + "source_file": "frontend/src/api/types.ts", + "source_location": "L188" + }, + { + "id": "frontend_src_api_types_operation", + "label": "Operation", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "operation", + "source_file": "frontend/src/api/types.ts", + "source_location": "L38" + }, + { + "id": "frontend_src_api_types_operationkind", + "label": "OperationKind", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "operationkind", + "source_file": "frontend/src/api/types.ts", + "source_location": "L35" + }, + { + "id": "frontend_src_api_types_operationstatus", + "label": "OperationStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "operationstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L36" + }, + { + "id": "frontend_src_api_types_page", + "label": "Page", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "page", + "source_file": "frontend/src/api/types.ts", + "source_location": "L106" + }, + { + "id": "frontend_src_api_types_planfactitem", + "label": "PlanFactItem", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "planfactitem", + "source_file": "frontend/src/api/types.ts", + "source_location": "L263" + }, + { + "id": "frontend_src_api_types_planfactreport", + "label": "PlanFactReport", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "planfactreport", + "source_file": "frontend/src/api/types.ts", + "source_location": "L271" + }, + { + "id": "frontend_src_api_types_reconciliation", + "label": "Reconciliation", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "reconciliation", + "source_file": "frontend/src/api/types.ts", + "source_location": "L208" + }, + { + "id": "frontend_src_api_types_reconciliationstatus", + "label": "ReconciliationStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "reconciliationstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L206" + }, + { + "id": "frontend_src_api_types_saverowdecisionpayload", + "label": "SaveRowDecisionPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "saverowdecisionpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L246" + }, + { + "id": "frontend_src_api_types_spacedeletionstatus", + "label": "SpaceDeletionStatus", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "spacedeletionstatus", + "source_file": "frontend/src/api/types.ts", + "source_location": "L308" + }, + { + "id": "frontend_src_api_types_user", + "label": "User", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "user", + "source_file": "frontend/src/api/types.ts", + "source_location": "L3" + }, + { + "id": "backend_app_spaces_router_deletionbody", + "label": "DeletionBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "deletionbody", + "source_file": "backend/app/spaces/router.py", + "source_location": "L17" + }, + { + "id": "backend_app_spaces_router_memberinvitebody", + "label": "MemberInviteBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "memberinvitebody", + "source_file": "backend/app/spaces/router.py", + "source_location": "L21" + }, + { + "id": "backend_app_imports_crypto_encryptedfile", + "label": "EncryptedFile", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "code", + "norm_label": "encryptedfile", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L14" + }, + { + "id": "backend_app_errors_apperror", + "label": "AppError", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "apperror", + "source_file": "backend/app/errors.py", + "source_location": "L4" + }, + { + "id": "frontend_src_api_types_acceptinvitepayload", + "label": "AcceptInvitePayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "acceptinvitepayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L116" + }, + { + "id": "frontend_src_api_types_loginpayload", + "label": "LoginPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "loginpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L111" + }, + { + "id": "frontend_src_api_types_passwordresetpayload", + "label": "PasswordResetPayload", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "passwordresetpayload", + "source_file": "frontend/src/api/types.ts", + "source_location": "L122" + }, + { + "id": "frontend_src_pages_acceptinvitepage_acceptinvitevalues", + "label": "AcceptInviteValues", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "acceptinvitevalues", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L13" + }, + { + "id": "frontend_src_pages_loginpage_loginformvalues", + "label": "LoginFormValues", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "loginformvalues", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L13" + }, + { + "id": "frontend_src_pages_resetpasswordpage_resetvalues", + "label": "ResetValues", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "resetvalues", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L13" + }, + { + "id": "backend_app_ledger_router_accountbody", + "label": "AccountBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "accountbody", + "source_file": "backend/app/ledger/router.py", + "source_location": "L17" + }, + { + "id": "backend_app_ledger_router_operationbody", + "label": "OperationBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "operationbody", + "source_file": "backend/app/ledger/router.py", + "source_location": "L28" + }, + { + "id": "backend_app_ledger_router_operationpatchbody", + "label": "OperationPatchBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "operationpatchbody", + "source_file": "backend/app/ledger/router.py", + "source_location": "L49" + }, + { + "id": "backend_app_ledger_router_voidbody", + "label": "VoidBody", + "_callable": true, + "_callable_class": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "voidbody", + "source_file": "backend/app/ledger/router.py", + "source_location": "L45" + }, + { + "id": "backend_app_config_get_settings", + "label": "get_settings()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "get_settings()", + "source_file": "backend/app/config.py", + "source_location": "L67" + }, + { + "id": "backend_app_config_settings_broker_url", + "label": ".broker_url()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": ".broker_url()", + "source_file": "backend/app/config.py", + "source_location": "L50" + }, + { + "id": "backend_app_config_settings_kek", + "label": ".kek()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": ".kek()", + "source_file": "backend/app/config.py", + "source_location": "L54" + }, + { + "id": "backend_app_identity_mailer_send_token_email", + "label": "send_token_email()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "send_token_email()", + "source_file": "backend/app/identity/mailer.py", + "source_location": "L7" + }, + { + "id": "backend_app_identity_router_accept_invite", + "label": "accept_invite()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "accept_invite()", + "source_file": "backend/app/identity/router.py", + "source_location": "L84" + }, + { + "id": "backend_app_identity_router_confirm_password_reset", + "label": "confirm_password_reset()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "confirm_password_reset()", + "source_file": "backend/app/identity/router.py", + "source_location": "L133" + }, + { + "id": "backend_app_identity_router_create_invite", + "label": "create_invite()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "create_invite()", + "source_file": "backend/app/identity/router.py", + "source_location": "L69" + }, + { + "id": "backend_app_identity_router_login", + "label": "login()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "login()", + "source_file": "backend/app/identity/router.py", + "source_location": "L98" + }, + { + "id": "backend_app_identity_router_logout", + "label": "logout()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "logout()", + "source_file": "backend/app/identity/router.py", + "source_location": "L159" + }, + { + "id": "backend_app_identity_router_request_password_reset", + "label": "request_password_reset()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "request_password_reset()", + "source_file": "backend/app/identity/router.py", + "source_location": "L117" + }, + { + "id": "backend_app_identity_router_set_auth_cookies", + "label": "_set_auth_cookies()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "_set_auth_cookies()", + "source_file": "backend/app/identity/router.py", + "source_location": "L45" + }, + { + "id": "backend_app_imports_celery_app_create_celery_app", + "label": "create_celery_app()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "create_celery_app()", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L6" + }, + { + "id": "backend_app_ratelimit_allow", + "label": "allow()", + "_callable": true, + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "allow()", + "source_file": "backend/app/ratelimit.py", + "source_location": "L15" + }, + { + "id": "backend_app_analytics_router_balances", + "label": "balances()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "balances()", + "source_file": "backend/app/analytics/router.py", + "source_location": "L89" + }, + { + "id": "backend_app_analytics_router_cash_flow", + "label": "cash_flow()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "cash_flow()", + "source_file": "backend/app/analytics/router.py", + "source_location": "L34" + }, + { + "id": "backend_app_analytics_router_category_spend", + "label": "category_spend()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "category_spend()", + "source_file": "backend/app/analytics/router.py", + "source_location": "L12" + }, + { + "id": "backend_app_analytics_router_plan_fact", + "label": "plan_fact()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "plan_fact()", + "source_file": "backend/app/analytics/router.py", + "source_location": "L67" + }, + { + "id": "backend_app_budgeting_router_assignments", + "label": "assignments()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "assignments()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202" + }, + { + "id": "backend_app_budgeting_router_categories", + "label": "categories()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "categories()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L116" + }, + { + "id": "backend_app_budgeting_router_close", + "label": "close()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "close()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L250" + }, + { + "id": "backend_app_budgeting_router_close_frontend", + "label": "close_frontend()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "close_frontend()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273" + }, + { + "id": "backend_app_budgeting_router_copy_frontend", + "label": "copy_frontend()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "copy_frontend()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291" + }, + { + "id": "backend_app_budgeting_router_copy_previous", + "label": "copy_previous()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "copy_previous()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L265" + }, + { + "id": "backend_app_budgeting_router_create_category", + "label": "create_category()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "create_category()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152" + }, + { + "id": "backend_app_budgeting_router_expected_income", + "label": "expected_income()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "expected_income()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230" + }, + { + "id": "backend_app_budgeting_router_frontend_summary", + "label": "frontend_summary()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "frontend_summary()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L70" + }, + { + "id": "backend_app_budgeting_router_fund", + "label": "fund()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "fund()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217" + }, + { + "id": "backend_app_budgeting_router_fund_category", + "label": "fund_category()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "fund_category()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180" + }, + { + "id": "backend_app_budgeting_router_parse_month", + "label": "parse_month()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "parse_month()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L58" + }, + { + "id": "backend_app_budgeting_router_period_for", + "label": "period_for()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "period_for()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L42" + }, + { + "id": "backend_app_budgeting_router_reopen", + "label": "reopen()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "reopen()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L256" + }, + { + "id": "backend_app_budgeting_router_reopen_frontend", + "label": "reopen_frontend()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "reopen_frontend()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282" + }, + { + "id": "backend_app_budgeting_router_summary", + "label": "summary()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "summary()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L108" + }, + { + "id": "backend_app_budgeting_router_update_plan", + "label": "update_plan()", + "_callable": true, + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "update_plan()", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164" + }, + { + "id": "frontend_src_components_ui_button_button", + "label": "Button()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "button()", + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L9" + }, + { + "id": "frontend_src_components_ui_confirmdialog_confirmdialog", + "label": "ConfirmDialog()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "confirmdialog()", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L15" + }, + { + "id": "frontend_src_components_ui_emptystate_emptystate", + "label": "EmptyState()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "emptystate()", + "source_file": "frontend/src/components/ui/EmptyState.tsx", + "source_location": "L9" + }, + { + "id": "frontend_src_components_ui_errorstate_errorstate", + "label": "ErrorState()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "errorstate()", + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_components_ui_fields_selectfield", + "label": "SelectField()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "selectfield()", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L118" + }, + { + "id": "frontend_src_components_ui_modal_modal", + "label": "Modal()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "modal()", + "source_file": "frontend/src/components/ui/Modal.tsx", + "source_location": "L12" + }, + { + "id": "frontend_src_components_ui_querygate_querygate", + "label": "QueryGate()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "querygate()", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L13" + }, + { + "id": "frontend_src_components_ui_spinner_spinner", + "label": "Spinner()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "spinner()", + "source_file": "frontend/src/components/ui/Spinner.tsx", + "source_location": "L3" + }, + { + "id": "frontend_src_hooks_useaccounts_usecreateaccount", + "label": "useCreateAccount()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "usecreateaccount()", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L18" + }, + { + "id": "frontend_src_pages_accountspage_accountform", + "label": "AccountForm()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "accountform()", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L29" + }, + { + "id": "frontend_src_pages_accountspage_usememoschema", + "label": "useMemoSchema()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "usememoschema()", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L102" + }, + { + "id": "frontend_src_pages_importspage_uploadmodal", + "label": "UploadModal()", + "_callable": true, + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "uploadmodal()", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L17" + }, + { + "id": "frontend_src_components_charts_columnchart_columnchart", + "label": "ColumnChart()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "columnchart()", + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_components_charts_horizontalbars_horizontalbars", + "label": "HorizontalBars()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "horizontalbars()", + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L16" + }, + { + "id": "frontend_src_components_charts_planfactbars_planfactbars", + "label": "PlanFactBars()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "planfactbars()", + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L18" + }, + { + "id": "frontend_src_components_ui_monthswitcher_monthswitcher", + "label": "MonthSwitcher()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "monthswitcher()", + "source_file": "frontend/src/components/ui/MonthSwitcher.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_hooks_useanalytics_useanalyticsbalances", + "label": "useAnalyticsBalances()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "useanalyticsbalances()", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L26" + }, + { + "id": "frontend_src_hooks_useanalytics_useanalyticscashflow", + "label": "useAnalyticsCashFlow()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "useanalyticscashflow()", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L19" + }, + { + "id": "frontend_src_hooks_useanalytics_useanalyticscategoryspend", + "label": "useAnalyticsCategorySpend()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "useanalyticscategoryspend()", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L5" + }, + { + "id": "frontend_src_hooks_useanalytics_useanalyticsplanfact", + "label": "useAnalyticsPlanFact()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "useanalyticsplanfact()", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L12" + }, + { + "id": "frontend_src_pages_analyticspage_analyticspage", + "label": "AnalyticsPage()", + "_callable": true, + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "analyticspage()", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_components_ui_pageheader_pageheader", + "label": "PageHeader()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "pageheader()", + "source_file": "frontend/src/components/ui/PageHeader.tsx", + "source_location": "L9" + }, + { + "id": "frontend_src_hooks_usespacelifecycle_usecanceldeletion", + "label": "useCancelDeletion()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "usecanceldeletion()", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L50" + }, + { + "id": "frontend_src_hooks_usespacelifecycle_userequestdeletion", + "label": "useRequestDeletion()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "userequestdeletion()", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L36" + }, + { + "id": "frontend_src_hooks_usespacelifecycle_userequestexport", + "label": "useRequestExport()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "userequestexport()", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L12" + }, + { + "id": "frontend_src_hooks_usespacelifecycle_usespacedeletion", + "label": "useSpaceDeletion()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "usespacedeletion()", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L8" + }, + { + "id": "frontend_src_pages_notfoundpage_notfoundpage", + "label": "NotFoundPage()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "notfoundpage()", + "source_file": "frontend/src/pages/NotFoundPage.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_pages_settingspage_deletionform", + "label": "DeletionForm()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "deletionform()", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_pages_settingspage_settingspage", + "label": "SettingsPage()", + "_callable": true, + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "settingspage()", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L58" + }, + { + "id": "backend_app_analytics_service_balances", + "label": "balances()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "balances()", + "source_file": "backend/app/analytics/service.py", + "source_location": "L92" + }, + { + "id": "backend_app_analytics_service_cash_flow", + "label": "cash_flow()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "cash_flow()", + "source_file": "backend/app/analytics/service.py", + "source_location": "L60" + }, + { + "id": "backend_app_analytics_service_category_spend", + "label": "category_spend()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "category_spend()", + "source_file": "backend/app/analytics/service.py", + "source_location": "L15" + }, + { + "id": "backend_app_analytics_service_plan_fact", + "label": "plan_fact()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "plan_fact()", + "source_file": "backend/app/analytics/service.py", + "source_location": "L83" + }, + { + "id": "backend_app_budgeting_service_add_expected_income", + "label": "add_expected_income()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "add_expected_income()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632" + }, + { + "id": "backend_app_budgeting_service_archive_category", + "label": "archive_category()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "archive_category()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553" + }, + { + "id": "backend_app_budgeting_service_balance_until", + "label": "_balance_until()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_balance_until()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L98" + }, + { + "id": "backend_app_budgeting_service_close_blockers", + "label": "_close_blockers()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_close_blockers()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L435" + }, + { + "id": "backend_app_budgeting_service_close_period", + "label": "close_period()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "close_period()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731" + }, + { + "id": "backend_app_budgeting_service_closure_snapshot", + "label": "_closure_snapshot()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_closure_snapshot()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L81" + }, + { + "id": "backend_app_budgeting_service_compute_period_state", + "label": "compute_period_state()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "compute_period_state()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L114" + }, + { + "id": "backend_app_budgeting_service_copy_previous_month", + "label": "copy_previous_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "copy_previous_month()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831" + }, + { + "id": "backend_app_budgeting_service_create_category", + "label": "create_category()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "create_category()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L501" + }, + { + "id": "backend_app_budgeting_service_ensure_credit_reserve_category", + "label": "ensure_credit_reserve_category()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "ensure_credit_reserve_category()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L524" + }, + { + "id": "backend_app_budgeting_service_fund", + "label": "fund()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "fund()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700" + }, + { + "id": "backend_app_budgeting_service_get_category", + "label": "get_category()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "get_category()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L494" + }, + { + "id": "backend_app_budgeting_service_get_or_create_period", + "label": "get_or_create_period()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "get_or_create_period()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L54" + }, + { + "id": "backend_app_budgeting_service_get_period", + "label": "get_period()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "get_period()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L47" + }, + { + "id": "backend_app_budgeting_service_list_categories", + "label": "list_categories()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "list_categories()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L544" + }, + { + "id": "backend_app_budgeting_service_list_periods", + "label": "list_periods()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "list_periods()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L68" + }, + { + "id": "backend_app_budgeting_service_match_expected_income", + "label": "match_expected_income()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "match_expected_income()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L659" + }, + { + "id": "backend_app_budgeting_service_period_bounds", + "label": "period_bounds()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "period_bounds()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L31" + }, + { + "id": "backend_app_budgeting_service_previous_ym", + "label": "_previous_ym()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_previous_ym()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L77" + }, + { + "id": "backend_app_budgeting_service_rename_category", + "label": "rename_category()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "rename_category()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570" + }, + { + "id": "backend_app_budgeting_service_reopen_period", + "label": "reopen_period()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "reopen_period()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799" + }, + { + "id": "backend_app_budgeting_service_require_open", + "label": "require_open()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "require_open()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L487" + }, + { + "id": "backend_app_budgeting_service_set_assignments", + "label": "set_assignments()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "set_assignments()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588" + }, + { + "id": "backend_app_budgeting_service_shift_month", + "label": "shift_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "shift_month()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L40" + }, + { + "id": "backend_app_budgeting_service_validate_year_month", + "label": "validate_year_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "validate_year_month()", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L26" + }, + { + "id": "backend_app_categorization_service_resolve_category_name", + "label": "resolve_category_name()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "resolve_category_name()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L8" + }, + { + "id": "backend_app_errors_bad_request", + "label": "bad_request()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "bad_request()", + "source_file": "backend/app/errors.py", + "source_location": "L27" + }, + { + "id": "backend_tests_test_budget_seed", + "label": "seed()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "seed()", + "source_file": "backend/tests/test_budget.py", + "source_location": "L22" + }, + { + "id": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "label": "test_copy_previous_month_clamps_expected_day()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_copy_previous_month_clamps_expected_day()", + "source_file": "backend/tests/test_budget.py", + "source_location": "L54" + }, + { + "id": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "label": "test_periods_must_close_in_calendar_order()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_periods_must_close_in_calendar_order()", + "source_file": "backend/tests/test_budget.py", + "source_location": "L92" + }, + { + "id": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "label": "test_reopen_preserves_immutable_closure_history()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reopen_preserves_immutable_closure_history()", + "source_file": "backend/tests/test_budget.py", + "source_location": "L83" + }, + { + "id": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "label": "test_uncategorized_expense_blocks_close()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_uncategorized_expense_blocks_close()", + "source_file": "backend/tests/test_budget.py", + "source_location": "L29" + }, + { + "id": "backend_tests_test_import_holds_add_record", + "label": "add_record()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "add_record()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81" + }, + { + "id": "backend_tests_test_import_holds_draft", + "label": "_draft()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_draft()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L764" + }, + { + "id": "backend_tests_test_import_holds_hold_document", + "label": "hold_document()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "hold_document()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L111" + }, + { + "id": "backend_tests_test_import_holds_make_document", + "label": "make_document()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "make_document()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L46" + }, + { + "id": "backend_tests_test_import_holds_row", + "label": "_row()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "_row()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L776" + }, + { + "id": "backend_tests_test_import_holds_seed", + "label": "seed()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "seed()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L30" + }, + { + "id": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "label": "test_ambiguous_overlap_remains_unresolved()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_ambiguous_overlap_remains_unresolved()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L533" + }, + { + "id": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "label": "test_bank_status_defaults_to_posted_and_is_constrained()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_bank_status_defaults_to_posted_and_is_constrained()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L129" + }, + { + "id": "backend_tests_test_import_holds_test_confirm_as_posted_requires_reason", + "label": "test_confirm_as_posted_requires_reason()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_confirm_as_posted_requires_reason()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L241" + }, + { + "id": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "label": "test_discard_as_cancelled_requires_reason_and_unblocks_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_discard_as_cancelled_requires_reason_and_unblocks_month()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L203" + }, + { + "id": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "label": "test_discarded_posted_record_does_not_resolve_hold()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_discarded_posted_record_does_not_resolve_hold()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L583" + }, + { + "id": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "label": "test_external_id_match_survives_description_drift()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_external_id_match_survives_description_drift()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L477" + }, + { + "id": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "label": "test_fingerprint_match_without_external_id_resolves()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_fingerprint_match_without_external_id_resolves()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L507" + }, + { + "id": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "label": "test_hold_cannot_be_resolved_before_document_confirmation()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_hold_cannot_be_resolved_before_document_confirmation()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L258" + }, + { + "id": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "label": "test_hold_matching_is_tenant_scoped()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_hold_matching_is_tenant_scoped()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L616" + }, + { + "id": "backend_tests_test_import_holds_test_hold_resolution_rejects_unknown_kind", + "label": "test_hold_resolution_rejects_unknown_kind()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_hold_resolution_rejects_unknown_kind()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L725" + }, + { + "id": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "label": "test_hold_row_creates_no_operation_on_confirm()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_hold_row_creates_no_operation_on_confirm()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L160" + }, + { + "id": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "label": "test_manual_confirm_creates_one_operation_and_late_import_dedupes()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_manual_confirm_creates_one_operation_and_late_import_dedupes()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L322" + }, + { + "id": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "label": "test_manual_confirm_honors_closed_period()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_manual_confirm_honors_closed_period()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L402" + }, + { + "id": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "label": "test_manual_confirm_of_income_hold_creates_income()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_manual_confirm_of_income_hold_creates_income()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L374" + }, + { + "id": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "label": "test_manual_confirm_rejects_bad_action_and_non_hold_row()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_manual_confirm_rejects_bad_action_and_non_hold_row()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L279" + }, + { + "id": "backend_tests_test_import_holds_test_manual_resolution_requires_reason_at_database_level", + "label": "test_manual_resolution_requires_reason_at_database_level()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_manual_resolution_requires_reason_at_database_level()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L739" + }, + { + "id": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "label": "test_matcher_rejects_two_posted_candidates_for_one_hold()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_matcher_rejects_two_posted_candidates_for_one_hold()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L570" + }, + { + "id": "backend_tests_test_import_holds_test_reconciliation_balance_equation_ignores_holds", + "label": "test_reconciliation_balance_equation_ignores_holds()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reconciliation_balance_equation_ignores_holds()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L834" + }, + { + "id": "backend_tests_test_import_holds_test_reconciliation_declared_outflow_mismatch_blocks", + "label": "test_reconciliation_declared_outflow_mismatch_blocks()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reconciliation_declared_outflow_mismatch_blocks()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L809" + }, + { + "id": "backend_tests_test_import_holds_test_reconciliation_hold_mismatch_is_review_blocking", + "label": "test_reconciliation_hold_mismatch_is_review_blocking()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reconciliation_hold_mismatch_is_review_blocking()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L824" + }, + { + "id": "backend_tests_test_import_holds_test_reconciliation_separates_posted_and_hold_totals", + "label": "test_reconciliation_separates_posted_and_hold_totals()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reconciliation_separates_posted_and_hold_totals()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L784" + }, + { + "id": "backend_tests_test_import_holds_test_reconciliation_without_declared_totals_keeps_legacy_semantics", + "label": "test_reconciliation_without_declared_totals_keeps_legacy_semantics()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_reconciliation_without_declared_totals_keeps_legacy_semantics()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L851" + }, + { + "id": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "label": "test_resolve_endpoint_requires_csrf_and_resolves_hold()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_resolve_endpoint_requires_csrf_and_resolves_hold()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L890" + }, + { + "id": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "label": "test_revert_clears_automatic_match_and_reblocks_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_revert_clears_automatic_match_and_reblocks_month()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L664" + }, + { + "id": "backend_tests_test_import_holds_test_revert_preserves_manual_hold_operation_and_provenance", + "label": "test_revert_preserves_manual_hold_operation_and_provenance()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_revert_preserves_manual_hold_operation_and_provenance()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L698" + }, + { + "id": "backend_tests_test_import_holds_test_source_row_without_bank_status_defaults_posted", + "label": "test_source_row_without_bank_status_defaults_posted()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_source_row_without_bank_status_defaults_posted()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L866" + }, + { + "id": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "label": "test_unique_posted_record_resolves_hold_on_confirmation()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_unique_posted_record_resolves_hold_on_confirmation()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L437" + }, + { + "id": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "label": "test_unresolved_hold_blocks_only_its_occurred_month()", + "_callable": true, + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_unresolved_hold_blocks_only_its_occurred_month()", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L186" + }, + { + "id": "frontend_src_components_ui_toaster_usetoast", + "label": "useToast()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "usetoast()", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L51" + }, + { + "id": "frontend_src_hooks_useimports_useconfirmimport", + "label": "useConfirmImport()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "useconfirmimport()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L70" + }, + { + "id": "frontend_src_hooks_useimports_useimport", + "label": "useImport()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "useimport()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L25" + }, + { + "id": "frontend_src_hooks_useimports_useimporterrortoaster", + "label": "useImportErrorToaster()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "useimporterrortoaster()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L34" + }, + { + "id": "frontend_src_hooks_useimports_usereparseimport", + "label": "useReparseImport()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "usereparseimport()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L85" + }, + { + "id": "frontend_src_hooks_useimports_userevertimport", + "label": "useRevertImport()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "userevertimport()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L101" + }, + { + "id": "frontend_src_hooks_useimports_usesaverowdecision", + "label": "useSaveRowDecision()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "usesaverowdecision()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L56" + }, + { + "id": "frontend_src_hooks_useimports_useuploadimport", + "label": "useUploadImport()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "useuploadimport()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L40" + }, + { + "id": "frontend_src_pages_importdetailpage_confirmmodal", + "label": "ConfirmModal()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "confirmmodal()", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L40" + }, + { + "id": "frontend_src_pages_importdetailpage_importdetailpage", + "label": "ImportDetailPage()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "importdetailpage()", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L93" + }, + { + "id": "frontend_src_pages_importdetailpage_stepindexfor", + "label": "stepIndexFor()", + "_callable": true, + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "stepindexfor()", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L33" + }, + { + "id": "frontend_src_components_ui_badge_badge", + "label": "Badge()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "badge()", + "source_file": "frontend/src/components/ui/Badge.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_hooks_useaccounts_useactiveaccounts", + "label": "useActiveAccounts()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "useactiveaccounts()", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L13" + }, + { + "id": "frontend_src_hooks_useimports_useimports", + "label": "useImports()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "useimports()", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L14" + }, + { + "id": "frontend_src_hooks_useoperations_usecategorizeoperation", + "label": "useCategorizeOperation()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "usecategorizeoperation()", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L51" + }, + { + "id": "frontend_src_hooks_useoperations_usecreateoperation", + "label": "useCreateOperation()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "usecreateoperation()", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L37" + }, + { + "id": "frontend_src_hooks_useoperations_useledgermutation", + "label": "useLedgerMutation()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "useledgermutation()", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L17" + }, + { + "id": "frontend_src_hooks_useoperations_useoperations", + "label": "useOperations()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "useoperations()", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L9" + }, + { + "id": "frontend_src_hooks_useoperations_usevoidoperation", + "label": "useVoidOperation()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "usevoidoperation()", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L44" + }, + { + "id": "frontend_src_pages_importspage_importspage", + "label": "ImportsPage()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "importspage()", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L77" + }, + { + "id": "frontend_src_pages_operationspage_accountselect", + "label": "AccountSelect()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "accountselect()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L36" + }, + { + "id": "frontend_src_pages_operationspage_amountfield", + "label": "amountField()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "amountfield()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L30" + }, + { + "id": "frontend_src_pages_operationspage_datefield", + "label": "dateField()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "datefield()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L33" + }, + { + "id": "frontend_src_pages_operationspage_expenseform", + "label": "ExpenseForm()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "expenseform()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L60" + }, + { + "id": "frontend_src_pages_operationspage_incomeform", + "label": "IncomeForm()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "incomeform()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L143" + }, + { + "id": "frontend_src_pages_operationspage_operationmodal", + "label": "OperationModal()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "operationmodal()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L379" + }, + { + "id": "frontend_src_pages_operationspage_operationspage", + "label": "OperationsPage()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "operationspage()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L450" + }, + { + "id": "frontend_src_pages_operationspage_refundform", + "label": "RefundForm()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "refundform()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L296" + }, + { + "id": "frontend_src_pages_operationspage_transferform", + "label": "TransferForm()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "transferform()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L217" + }, + { + "id": "frontend_src_pages_operationspage_voidmodal", + "label": "VoidModal()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "voidmodal()", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L404" + }, + { + "id": "frontend_src_pages_reviewqueuepage_reviewqueuepage", + "label": "ReviewQueuePage()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "reviewqueuepage()", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L68" + }, + { + "id": "frontend_src_pages_reviewqueuepage_uncategorizedrow", + "label": "UncategorizedRow()", + "_callable": true, + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "uncategorizedrow()", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L18" + }, + { + "id": "frontend_src_hooks_useaccounts_useaccounts", + "label": "useAccounts()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "useaccounts()", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L9" + }, + { + "id": "frontend_src_hooks_useaccounts_usearchiveaccount", + "label": "useArchiveAccount()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "usearchiveaccount()", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L33" + }, + { + "id": "frontend_src_pages_accountspage_accountspage", + "label": "AccountsPage()", + "_callable": true, + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "accountspage()", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L116" + }, + { + "id": "backend_alembic_env_run_migrations_offline", + "label": "run_migrations_offline()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "run_migrations_offline()", + "source_file": "backend/alembic/env.py", + "source_location": "L18" + }, + { + "id": "backend_alembic_env_run_migrations_online", + "label": "run_migrations_online()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "run_migrations_online()", + "source_file": "backend/alembic/env.py", + "source_location": "L30" + }, + { + "id": "backend_alembic_versions_20260911_0001_initial_schema_downgrade", + "label": "downgrade()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "downgrade()", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L80" + }, + { + "id": "backend_alembic_versions_20260911_0001_initial_schema_upgrade", + "label": "upgrade()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "upgrade()", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L36" + }, + { + "id": "backend_app_categorization_service_add_alias", + "label": "add_alias()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "add_alias()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L46" + }, + { + "id": "backend_app_categorization_service_ensure_income_source", + "label": "ensure_income_source()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "ensure_income_source()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L26" + }, + { + "id": "backend_app_categorization_service_find_payee_by_description", + "label": "find_payee_by_description()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "find_payee_by_description()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L61" + }, + { + "id": "backend_app_categorization_service_get_income_source", + "label": "get_income_source()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "get_income_source()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L19" + }, + { + "id": "backend_app_categorization_service_get_or_create_payee", + "label": "get_or_create_payee()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "get_or_create_payee()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L35" + }, + { + "id": "backend_app_categorization_service_rule_category_for_payee", + "label": "rule_category_for_payee()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "rule_category_for_payee()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L75" + }, + { + "id": "backend_app_categorization_service_set_payee_rule", + "label": "set_payee_rule()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "set_payee_rule()", + "source_file": "backend/app/categorization/service.py", + "source_location": "L81" + }, + { + "id": "backend_app_db_base_utcdatetime_process_bind_param", + "label": ".process_bind_param()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": ".process_bind_param()", + "source_file": "backend/app/db/base.py", + "source_location": "L27" + }, + { + "id": "backend_app_db_base_utcdatetime_process_result_value", + "label": ".process_result_value()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": ".process_result_value()", + "source_file": "backend/app/db/base.py", + "source_location": "L34" + }, + { + "id": "backend_app_exports_service_build_export", + "label": "build_export()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "build_export()", + "source_file": "backend/app/exports/service.py", + "source_location": "L50" + }, + { + "id": "backend_app_exports_service_cancel_deletion", + "label": "cancel_deletion()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "cancel_deletion()", + "source_file": "backend/app/exports/service.py", + "source_location": "L163" + }, + { + "id": "backend_app_exports_service_consume_export", + "label": "consume_export()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "consume_export()", + "source_file": "backend/app/exports/service.py", + "source_location": "L118" + }, + { + "id": "backend_app_exports_service_csv_bytes", + "label": "_csv_bytes()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "_csv_bytes()", + "source_file": "backend/app/exports/service.py", + "source_location": "L41" + }, + { + "id": "backend_app_exports_service_get_export", + "label": "get_export()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "get_export()", + "source_file": "backend/app/exports/service.py", + "source_location": "L30" + }, + { + "id": "backend_app_exports_service_json_rows", + "label": "_json_rows()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "_json_rows()", + "source_file": "backend/app/exports/service.py", + "source_location": "L37" + }, + { + "id": "backend_app_exports_service_request_export", + "label": "request_export()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "request_export()", + "source_file": "backend/app/exports/service.py", + "source_location": "L23" + }, + { + "id": "backend_app_exports_service_schedule_deletion", + "label": "schedule_deletion()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "schedule_deletion()", + "source_file": "backend/app/exports/service.py", + "source_location": "L148" + }, + { + "id": "backend_app_imports_service_build_candidates", + "label": "_build_candidates()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "_build_candidates()", + "source_file": "backend/app/imports/service.py", + "source_location": "L225" + }, + { + "id": "backend_tests_test_imports_ready_document", + "label": "ready_document()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "ready_document()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L42" + }, + { + "id": "backend_tests_test_imports_seed", + "label": "seed()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "seed()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L26" + }, + { + "id": "backend_tests_test_imports_test_confirm_and_revert_are_idempotent", + "label": "test_confirm_and_revert_are_idempotent()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_confirm_and_revert_are_idempotent()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L81" + }, + { + "id": "backend_tests_test_imports_test_confirm_rejects_arithmetic_mismatch", + "label": "test_confirm_rejects_arithmetic_mismatch()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_confirm_rejects_arithmetic_mismatch()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L96" + }, + { + "id": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "label": "test_confirm_reports_pending_candidate_instead_of_generic_not_ready()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_confirm_reports_pending_candidate_instead_of_generic_not_ready()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L326" + }, + { + "id": "backend_tests_test_imports_test_confirmed_import_must_be_reverted_before_reparse", + "label": "test_confirmed_import_must_be_reverted_before_reparse()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_confirmed_import_must_be_reverted_before_reparse()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L104" + }, + { + "id": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "label": "test_duplicate_candidate_can_reuse_unique_operation_without_client_id()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_duplicate_candidate_can_reuse_unique_operation_without_client_id()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L166" + }, + { + "id": "backend_tests_test_imports_test_duplicate_candidates_ignore_rows_from_same_parse_run", + "label": "test_duplicate_candidates_ignore_rows_from_same_parse_run()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_duplicate_candidates_ignore_rows_from_same_parse_run()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L222" + }, + { + "id": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "label": "test_duplicate_candidates_ignore_unconfirmed_documents()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_duplicate_candidates_ignore_unconfirmed_documents()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L247" + }, + { + "id": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "label": "test_import_detail_exposes_pending_candidate_and_blocker()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_import_detail_exposes_pending_candidate_and_blocker()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L291" + }, + { + "id": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "label": "test_transfer_merge_revert_restores_counterpart_operation()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_transfer_merge_revert_restores_counterpart_operation()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L346" + }, + { + "id": "backend_tests_test_imports_test_unexpected_parser_failure_reaches_terminal_state", + "label": "test_unexpected_parser_failure_reaches_terminal_state()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_unexpected_parser_failure_reaches_terminal_state()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L134" + }, + { + "id": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "label": "test_postgres_rls_requires_matching_transaction_context()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_postgres_rls_requires_matching_transaction_context()", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L18" + }, + { + "id": "backend_tests_test_postgres_and_s3_test_s3_blob_round_trip", + "label": "test_s3_blob_round_trip()", + "_callable": true, + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_s3_blob_round_trip()", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L91" + }, + { + "id": "frontend_src_app_app", + "label": "App()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "app()", + "source_file": "frontend/src/App.tsx", + "source_location": "L21" + }, + { + "id": "frontend_src_app_router_approutes", + "label": "AppRoutes()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "approutes()", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L60" + }, + { + "id": "frontend_src_components_ui_toaster_toastprovider", + "label": "ToastProvider()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toastprovider()", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L20" + }, + { + "id": "frontend_src_i18n_index_createi18n", + "label": "createI18n()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "createi18n()", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L29" + }, + { + "id": "frontend_src_i18n_index_detectlocale", + "label": "detectLocale()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "detectlocale()", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L20" + }, + { + "id": "frontend_src_i18n_index_localelabel", + "label": "localeLabel()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "localelabel()", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L55" + }, + { + "id": "frontend_src_i18n_index_storedlocale", + "label": "storedLocale()", + "_callable": true, + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "storedlocale()", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L11" + }, + { + "id": "backend_app_imports_adapters_base_account_fingerprint", + "label": "account_fingerprint()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "account_fingerprint()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L125" + }, + { + "id": "backend_app_imports_adapters_base_amount_to_kopecks", + "label": "amount_to_kopecks()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "amount_to_kopecks()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L84" + }, + { + "id": "backend_app_imports_adapters_base_mask_digits", + "label": "_mask_digits()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "_mask_digits()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L102" + }, + { + "id": "backend_app_imports_adapters_base_money_to_kopecks", + "label": "money_to_kopecks()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "money_to_kopecks()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L110" + }, + { + "id": "backend_app_imports_adapters_base_normalize_description", + "label": "normalize_description()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "normalize_description()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L130" + }, + { + "id": "backend_app_imports_adapters_base_record_fingerprint", + "label": "record_fingerprint()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "record_fingerprint()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L136" + }, + { + "id": "backend_app_imports_adapters_base_sourcerow_post_init", + "label": ".__post_init__()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".__post_init__()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L39" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "label": "_first_page_text()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "_first_page_text()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L120" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozon_cell", + "label": "_ozon_cell()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "_ozon_cell()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L296" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozon_normalize", + "label": "_ozon_normalize()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "_ozon_normalize()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L292" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L159" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "label": "._draft_from_extracted()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "._draft_from_extracted()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L188" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L171" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_required_line", + "label": "._required_line()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "._required_line()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L237" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "label": "._table_row()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "._table_row()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L243" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L38" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L48" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_parse_row", + "label": "_parse_row()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "_parse_row()", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L99" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_contract_fields", + "label": ".test_parse_contract_fields()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".test_parse_contract_fields()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L337" + }, + { + "id": "backend_tests_test_adapter_contracts_testmoneyparsing_test_malformed_amount_fails_closed_without_leaking_digits", + "label": ".test_malformed_amount_fails_closed_without_leaking_digits()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".test_malformed_amount_fails_closed_without_leaking_digits()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L140" + }, + { + "id": "backend_tests_test_adapter_contracts_testmoneyparsing_test_plain_and_separated_amounts", + "label": ".test_plain_and_separated_amounts()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".test_plain_and_separated_amounts()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L133" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_core_contract_fields", + "label": ".test_core_contract_fields()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": ".test_core_contract_fields()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L536" + }, + { + "id": "backend_tests_test_imports_test_invalid_direction_is_critical", + "label": "test_invalid_direction_is_critical()", + "_callable": true, + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "test_invalid_direction_is_critical()", + "source_file": "backend/tests/test_imports.py", + "source_location": "L112" + }, + { + "id": "frontend_src_hooks_usebudget_usebudgetcategories", + "label": "useBudgetCategories()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usebudgetcategories()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L12" + }, + { + "id": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "label": "useBudgetErrorToaster()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usebudgeterrortoaster()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L19" + }, + { + "id": "frontend_src_hooks_usebudget_usebudgetsummary", + "label": "useBudgetSummary()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usebudgetsummary()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L8" + }, + { + "id": "frontend_src_hooks_usebudget_useclosemonth", + "label": "useCloseMonth()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "useclosemonth()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L77" + }, + { + "id": "frontend_src_hooks_usebudget_usecopypreviousmonth", + "label": "useCopyPreviousMonth()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usecopypreviousmonth()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L85" + }, + { + "id": "frontend_src_hooks_usebudget_usefundcategory", + "label": "useFundCategory()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usefundcategory()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L42" + }, + { + "id": "frontend_src_hooks_usebudget_useperiodmutation", + "label": "usePeriodMutation()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "useperiodmutation()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L59" + }, + { + "id": "frontend_src_hooks_usebudget_usereopenmonth", + "label": "useReopenMonth()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usereopenmonth()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L81" + }, + { + "id": "frontend_src_hooks_usebudget_useupdateplan", + "label": "useUpdatePlan()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "useupdateplan()", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L25" + }, + { + "id": "frontend_src_pages_budgetpage_budgetpage", + "label": "BudgetPage()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "budgetpage()", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L123" + }, + { + "id": "frontend_src_pages_budgetpage_fundmodal", + "label": "FundModal()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "fundmodal()", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L77" + }, + { + "id": "frontend_src_pages_budgetpage_planmodal", + "label": "PlanModal()", + "_callable": true, + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "planmodal()", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L29" + }, + { + "id": "frontend_src_api_client_apierror_constructor", + "label": ".constructor()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": ".constructor()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L6" + }, + { + "id": "frontend_src_api_client_buildurl", + "label": "buildUrl()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "buildurl()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L31" + }, + { + "id": "frontend_src_api_client_isapierror", + "label": "isApiError()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "isapierror()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L15" + }, + { + "id": "frontend_src_api_client_parseerrorenvelope", + "label": "parseErrorEnvelope()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "parseerrorenvelope()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L54" + }, + { + "id": "frontend_src_api_client_readcsrftoken", + "label": "readCsrfToken()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "readcsrftoken()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L42" + }, + { + "id": "frontend_src_api_client_request", + "label": "request()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "request()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L78" + }, + { + "id": "frontend_src_api_client_toapierror", + "label": "toApiError()", + "_callable": true, + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "toapierror()", + "source_file": "frontend/src/api/client.ts", + "source_location": "L67" + }, + { + "id": "frontend_src_components_ui_fields_fieldchromewrap", + "label": "FieldChromeWrap()", + "_callable": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "fieldchromewrap()", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_components_ui_fields_moneyfield", + "label": "MoneyField()", + "_callable": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "moneyfield()", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L80" + }, + { + "id": "frontend_src_components_ui_fields_textareafield", + "label": "TextareaField()", + "_callable": true, + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "textareafield()", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L143" + }, + { + "id": "backend_app_dependencies_current_context", + "label": "current_context()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "current_context()", + "source_file": "backend/app/dependencies.py", + "source_location": "L44" + }, + { + "id": "backend_app_dependencies_require_csrf", + "label": "require_csrf()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "require_csrf()", + "source_file": "backend/app/dependencies.py", + "source_location": "L59" + }, + { + "id": "backend_app_errors_apperror_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "backend/app/errors.py", + "source_location": "L10" + }, + { + "id": "backend_app_errors_forbidden", + "label": "forbidden()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "forbidden()", + "source_file": "backend/app/errors.py", + "source_location": "L35" + }, + { + "id": "backend_app_security_constant_time_equals", + "label": "constant_time_equals()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "constant_time_equals()", + "source_file": "backend/app/security.py", + "source_location": "L29" + }, + { + "id": "backend_app_spaces_service_create_space", + "label": "create_space()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "create_space()", + "source_file": "backend/app/spaces/service.py", + "source_location": "L12" + }, + { + "id": "backend_app_spaces_service_get_membership", + "label": "get_membership()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "get_membership()", + "source_file": "backend/app/spaces/service.py", + "source_location": "L22" + }, + { + "id": "backend_app_spaces_service_get_space_for_member", + "label": "get_space_for_member()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "get_space_for_member()", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29" + }, + { + "id": "backend_app_spaces_service_list_spaces_for_user", + "label": "list_spaces_for_user()", + "_callable": true, + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "list_spaces_for_user()", + "source_file": "backend/app/spaces/service.py", + "source_location": "L49" + }, + { + "id": "backend_app_db_session_get_db", + "label": "get_db()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "get_db()", + "source_file": "backend/app/db/session.py", + "source_location": "L37" + }, + { + "id": "backend_app_db_session_get_engine", + "label": "get_engine()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "get_engine()", + "source_file": "backend/app/db/session.py", + "source_location": "L15" + }, + { + "id": "backend_app_db_session_get_session_factory", + "label": "get_session_factory()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "get_session_factory()", + "source_file": "backend/app/db/session.py", + "source_location": "L30" + }, + { + "id": "backend_app_db_session_session_scope", + "label": "session_scope()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "session_scope()", + "source_file": "backend/app/db/session.py", + "source_location": "L59" + }, + { + "id": "backend_app_db_session_set_space_context", + "label": "set_space_context()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "set_space_context()", + "source_file": "backend/app/db/session.py", + "source_location": "L49" + }, + { + "id": "backend_app_exports_router_download", + "label": "download()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "download()", + "source_file": "backend/app/exports/router.py", + "source_location": "L54" + }, + { + "id": "backend_app_exports_router_export_status", + "label": "export_status()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "export_status()", + "source_file": "backend/app/exports/router.py", + "source_location": "L41" + }, + { + "id": "backend_app_exports_router_request_export", + "label": "request_export()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "request_export()", + "source_file": "backend/app/exports/router.py", + "source_location": "L13" + }, + { + "id": "backend_app_exports_service_purge_due_spaces", + "label": "purge_due_spaces()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "purge_due_spaces()", + "source_file": "backend/app/exports/service.py", + "source_location": "L173" + }, + { + "id": "backend_app_exports_tasks_build_export_task", + "label": "build_export_task()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "build_export_task()", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L9" + }, + { + "id": "backend_app_exports_tasks_enqueue_export", + "label": "enqueue_export()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "enqueue_export()", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L20" + }, + { + "id": "backend_app_exports_tasks_purge_due_spaces_task", + "label": "purge_due_spaces_task()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "purge_due_spaces_task()", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L25" + }, + { + "id": "backend_app_main_app_error_handler", + "label": "app_error_handler()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "app_error_handler()", + "source_file": "backend/app/main.py", + "source_location": "L27" + }, + { + "id": "backend_app_main_health", + "label": "health()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "health()", + "source_file": "backend/app/main.py", + "source_location": "L54" + }, + { + "id": "backend_app_main_healthz", + "label": "healthz()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "healthz()", + "source_file": "backend/app/main.py", + "source_location": "L59" + }, + { + "id": "backend_app_main_readiness", + "label": "readiness()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "readiness()", + "source_file": "backend/app/main.py", + "source_location": "L64" + }, + { + "id": "backend_app_main_security_headers", + "label": "security_headers()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "security_headers()", + "source_file": "backend/app/main.py", + "source_location": "L43" + }, + { + "id": "backend_app_main_stale_data_handler", + "label": "stale_data_handler()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "stale_data_handler()", + "source_file": "backend/app/main.py", + "source_location": "L35" + }, + { + "id": "backend_tests_conftest_client", + "label": "client()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "client()", + "source_file": "backend/tests/conftest.py", + "source_location": "L47" + }, + { + "id": "backend_tests_conftest_db", + "label": "db()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "db()", + "source_file": "backend/tests/conftest.py", + "source_location": "L40" + }, + { + "id": "backend_tests_conftest_db_factory", + "label": "db_factory()", + "_callable": true, + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "db_factory()", + "source_file": "backend/tests/conftest.py", + "source_location": "L21" + }, + { + "id": "backend_app_imports_adapters_base_statementadapter_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L80" + }, + { + "id": "backend_app_imports_adapters_base_statementadapter_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L81" + }, + { + "id": "backend_app_imports_adapters_init_detect_adapter", + "label": "detect_adapter()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "detect_adapter()", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L30" + }, + { + "id": "backend_tests_test_adapter_contracts_make_draft", + "label": "make_draft()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "make_draft()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L54" + }, + { + "id": "backend_tests_test_adapter_contracts_make_source_row", + "label": "make_source_row()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "make_source_row()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L37" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_flags_mismatch", + "label": ".test_service_reconciliation_flags_mismatch()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_service_reconciliation_flags_mismatch()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L437" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_credit_adapters_stay_present_but_unregistered", + "label": ".test_credit_adapters_stay_present_but_unregistered()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_credit_adapters_stay_present_but_unregistered()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L106" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_xlsx", + "label": ".test_detect_adapter_fails_closed_on_unknown_xlsx()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_detect_adapter_fails_closed_on_unknown_xlsx()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L114" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_draft_declared_totals_default_to_none", + "label": ".test_draft_declared_totals_default_to_none()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_draft_declared_totals_default_to_none()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L84" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_magic_kind", + "label": ".test_magic_kind()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_magic_kind()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L126" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_negative_amount_is_rejected", + "label": ".test_negative_amount_is_rejected()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_negative_amount_is_rejected()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L76" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_per_contract_parser_versions", + "label": ".test_per_contract_parser_versions()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_per_contract_parser_versions()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L90" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_registry_lists_only_verified_contracts", + "label": ".test_registry_lists_only_verified_contracts()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_registry_lists_only_verified_contracts()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L99" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_source_row_defaults_to_posted", + "label": ".test_source_row_defaults_to_posted()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_source_row_defaults_to_posted()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L73" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_unknown_bank_status_is_rejected", + "label": ".test_unknown_bank_status_is_rejected()", + "_callable": true, + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": ".test_unknown_bank_status_is_rejected()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L80" + }, + { + "id": "backend_tests_test_adapter_contracts_same_page_rocket_lines", + "label": "same_page_rocket_lines()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": "same_page_rocket_lines()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L601" + }, + { + "id": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "label": "synthetic_rocket_lines()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": "synthetic_rocket_lines()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L620" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_day_and_page_state_machine", + "label": ".test_day_and_page_state_machine()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_day_and_page_state_machine()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L657" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_fold_line_cap_fails_closed", + "label": ".test_fold_line_cap_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_fold_line_cap_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L744" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_missing_header_block_fails_closed", + "label": ".test_missing_header_block_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_missing_header_block_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L728" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_parse_is_deterministic", + "label": ".test_parse_is_deterministic()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_parse_is_deterministic()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L714" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_record_before_day_section_fails_closed", + "label": ".test_record_before_day_section_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_record_before_day_section_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L719" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_record_folding_and_enrichment", + "label": ".test_record_folding_and_enrichment()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_record_folding_and_enrichment()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L690" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_repeated_headers_and_daily_totals_are_ignored", + "label": ".test_repeated_headers_and_daily_totals_are_ignored()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_repeated_headers_and_daily_totals_are_ignored()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L707" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_row_refs_are_unique_within_a_page", + "label": ".test_row_refs_are_unique_within_a_page()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_row_refs_are_unique_within_a_page()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L664" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_statement_controls", + "label": ".test_statement_controls()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_statement_controls()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L674" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_unrecognized_content_fails_closed", + "label": ".test_unrecognized_content_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 38, + "community_name": "TestRocketbankDebitContract", + "file_type": "code", + "norm_label": ".test_unrecognized_content_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L738" + }, + { + "id": "frontend_scripts_generate_api_firstreadable", + "label": "firstReadable()", + "_callable": true, + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "firstreadable()", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L16" + }, + { + "id": "frontend_scripts_generate_api_main", + "label": "main()", + "_callable": true, + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "main()", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L28" + }, + { + "id": "backend_app_imports_router_confirm", + "label": "confirm()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "confirm()", + "source_file": "backend/app/imports/router.py", + "source_location": "L263" + }, + { + "id": "backend_app_imports_router_decide_row", + "label": "decide_row()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "decide_row()", + "source_file": "backend/app/imports/router.py", + "source_location": "L223" + }, + { + "id": "backend_app_imports_router_delete_source", + "label": "delete_source()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "delete_source()", + "source_file": "backend/app/imports/router.py", + "source_location": "L322" + }, + { + "id": "backend_app_imports_router_detail", + "label": "detail()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "detail()", + "source_file": "backend/app/imports/router.py", + "source_location": "L106" + }, + { + "id": "backend_app_imports_router_imports", + "label": "imports()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "imports()", + "source_file": "backend/app/imports/router.py", + "source_location": "L61" + }, + { + "id": "backend_app_imports_router_reparse", + "label": "reparse()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "reparse()", + "source_file": "backend/app/imports/router.py", + "source_location": "L287" + }, + { + "id": "backend_app_imports_router_resolve_hold", + "label": "resolve_hold()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "resolve_hold()", + "source_file": "backend/app/imports/router.py", + "source_location": "L243" + }, + { + "id": "backend_app_imports_router_revert", + "label": "revert()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "revert()", + "source_file": "backend/app/imports/router.py", + "source_location": "L314" + }, + { + "id": "backend_app_imports_router_review", + "label": "review()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "review()", + "source_file": "backend/app/imports/router.py", + "source_location": "L212" + }, + { + "id": "backend_app_imports_router_summary", + "label": "summary()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "summary()", + "source_file": "backend/app/imports/router.py", + "source_location": "L44" + }, + { + "id": "backend_app_imports_router_upload", + "label": "upload()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "upload()", + "source_file": "backend/app/imports/router.py", + "source_location": "L66" + }, + { + "id": "backend_app_imports_tasks_enqueue_process_statement", + "label": "enqueue_process_statement()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "enqueue_process_statement()", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L21" + }, + { + "id": "backend_app_imports_tasks_process_statement_task", + "label": "process_statement_task()", + "_callable": true, + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "process_statement_task()", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L7" + }, + { + "id": "backend_tests_test_api_test_invite_login_and_authenticated_space", + "label": "test_invite_login_and_authenticated_space()", + "_callable": true, + "_origin": "ast", + "community": 41, + "community_name": "test_api.py", + "file_type": "code", + "norm_label": "test_invite_login_and_authenticated_space()", + "source_file": "backend/tests/test_api.py", + "source_location": "L4" + }, + { + "id": "backend_tests_test_api_test_openapi_contains_critical_paths", + "label": "test_openapi_contains_critical_paths()", + "_callable": true, + "_origin": "ast", + "community": 41, + "community_name": "test_api.py", + "file_type": "code", + "norm_label": "test_openapi_contains_critical_paths()", + "source_file": "backend/tests/test_api.py", + "source_location": "L39" + }, + { + "id": "frontend_src_test_i18n_parity_test_collect", + "label": "collect()", + "_callable": true, + "_origin": "ast", + "community": 42, + "community_name": "i18n-parity.test.ts", + "file_type": "code", + "norm_label": "collect()", + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L7" + }, + { + "id": "backend_app_imports_service_reconciliation_summary", + "label": "_reconciliation_summary()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "_reconciliation_summary()", + "source_file": "backend/app/imports/service.py", + "source_location": "L170" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_contract", + "label": ".test_service_reconciliation_contract()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": ".test_service_reconciliation_contract()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L430" + }, + { + "id": "backend_tests_test_private_fixtures_check", + "label": "_check()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "_check()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L74" + }, + { + "id": "backend_tests_test_private_fixtures_fail", + "label": "_fail()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "_fail()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L78" + }, + { + "id": "backend_tests_test_private_fixtures_load_entries", + "label": "_load_entries()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "_load_entries()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L34" + }, + { + "id": "backend_tests_test_private_fixtures_parsed", + "label": "parsed()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "parsed()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L86" + }, + { + "id": "backend_tests_test_private_fixtures_test_balances", + "label": "test_balances()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_balances()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L180" + }, + { + "id": "backend_tests_test_private_fixtures_test_control_totals", + "label": "test_control_totals()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_control_totals()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L161" + }, + { + "id": "backend_tests_test_private_fixtures_test_declared_totals_match_parsed_rows", + "label": "test_declared_totals_match_parsed_rows()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_declared_totals_match_parsed_rows()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L194" + }, + { + "id": "backend_tests_test_private_fixtures_test_hold_totals", + "label": "test_hold_totals()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_hold_totals()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L155" + }, + { + "id": "backend_tests_test_private_fixtures_test_manifest_contract", + "label": "test_manifest_contract()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_manifest_contract()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L114" + }, + { + "id": "backend_tests_test_private_fixtures_test_row_counts", + "label": "test_row_counts()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_row_counts()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L124" + }, + { + "id": "backend_tests_test_private_fixtures_test_row_invariants", + "label": "test_row_invariants()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_row_invariants()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L144" + }, + { + "id": "backend_tests_test_private_fixtures_test_service_reconciliation_matches", + "label": "test_service_reconciliation_matches()", + "_callable": true, + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_service_reconciliation_matches()", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L214" + }, + { + "id": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "label": "alfa_workbook_bytes()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": "alfa_workbook_bytes()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L147" + }, + { + "id": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "label": "synthetic_alfa_rows()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": "synthetic_alfa_rows()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L157" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_setup_method", + "label": ".setup_method()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".setup_method()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L326" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_detect", + "label": ".test_detect()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_detect()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L330" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_detect_rejects_workbook_without_contract_header", + "label": ".test_detect_rejects_workbook_without_contract_header()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_detect_rejects_workbook_without_contract_header()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L333" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_external_ids_from_code_column", + "label": ".test_external_ids_from_code_column()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_external_ids_from_code_column()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L402" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_footer_is_excluded", + "label": ".test_footer_is_excluded()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_footer_is_excluded()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L422" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_inconsistent_expense_control_fails_closed", + "label": ".test_inconsistent_expense_control_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_inconsistent_expense_control_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L362" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_malformed_layout_fails_closed", + "label": ".test_malformed_layout_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_malformed_layout_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L448" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_mcc_from_description", + "label": ".test_mcc_from_description()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_mcc_from_description()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L412" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_missing_period_field_fails_closed", + "label": ".test_missing_period_field_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_missing_period_field_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L355" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_is_deterministic", + "label": ".test_parse_is_deterministic()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_parse_is_deterministic()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L427" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_rows_with_hold", + "label": ".test_parse_rows_with_hold()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_parse_rows_with_hold()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L383" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unexpected_mid_table_row_fails_closed", + "label": ".test_unexpected_mid_table_row_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_unexpected_mid_table_row_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L455" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unsupported_currency_fails_closed", + "label": ".test_unsupported_currency_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 45, + "community_name": "TestAlfaDebitContract", + "file_type": "code", + "norm_label": ".test_unsupported_currency_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L462" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L259" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L271" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L40" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L48" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_cell_str", + "label": "_cell_str()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_cell_str()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L147" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "label": "_debit_find_header()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_find_header()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L317" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "label": "_debit_header_metadata()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_header_metadata()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L376" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "label": "_debit_header_value()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_header_value()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L341" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "label": "_debit_norm()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_norm()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L301" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "label": "_debit_operation_rows()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_operation_rows()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L411" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_read_rows", + "label": "_debit_read_rows()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_read_rows()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L307" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "label": "_debit_statement_period()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_debit_statement_period()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L362" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_find_account_value", + "label": "_find_account_value()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_find_account_value()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L190" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_find_header", + "label": "_find_header()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_find_header()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L170" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_get_settings_row_cap", + "label": "get_settings_row_cap()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "get_settings_row_cap()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L121" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "label": "_parse_date()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_parse_date()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L154" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_rows_text", + "label": "_rows_text()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_rows_text()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L138" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_scan_text", + "label": "_scan_text()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "_scan_text()", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L127" + }, + { + "id": "backend_app_imports_adapters_base_unsupportedstatementlayout_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L69" + }, + { + "id": "backend_app_imports_readers_open_xlsx", + "label": "open_xlsx()", + "_callable": true, + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "open_xlsx()", + "source_file": "backend/app/imports/readers.py", + "source_location": "L23" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_date_from", + "label": "_date_from()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "_date_from()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L286" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L269" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_detect", + "label": ".detect()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": ".detect()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L82" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "label": "._draft_from_lines()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "._draft_from_lines()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L110" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "label": ".parse()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": ".parse()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L93" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "label": "._record()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "._record()", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L232" + }, + { + "id": "backend_app_imports_readers_open_pdf", + "label": "open_pdf()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "open_pdf()", + "source_file": "backend/app/imports/readers.py", + "source_location": "L52" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_setup_method", + "label": ".setup_method()", + "_callable": true, + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": ".setup_method()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L654" + }, + { + "id": "backend_app_audit_service_record", + "label": "record()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "record()", + "source_file": "backend/app/audit/service.py", + "source_location": "L8" + }, + { + "id": "backend_app_db_base_utcnow", + "label": "utcnow()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "utcnow()", + "source_file": "backend/app/db/base.py", + "source_location": "L40" + }, + { + "id": "backend_app_errors_conflict", + "label": "conflict()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "conflict()", + "source_file": "backend/app/errors.py", + "source_location": "L43" + }, + { + "id": "backend_app_errors_not_found", + "label": "not_found()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "not_found()", + "source_file": "backend/app/errors.py", + "source_location": "L39" + }, + { + "id": "backend_app_imports_adapters_init_magic_kind", + "label": "magic_kind()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "magic_kind()", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L22" + }, + { + "id": "backend_app_imports_blob_blobstore_delete", + "label": ".delete()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".delete()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L14" + }, + { + "id": "backend_app_imports_blob_blobstore_get", + "label": ".get()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".get()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L13" + }, + { + "id": "backend_app_imports_blob_blobstore_put", + "label": ".put()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".put()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L12" + }, + { + "id": "backend_app_imports_blob_get_blob_store", + "label": "get_blob_store()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "get_blob_store()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L69" + }, + { + "id": "backend_app_imports_blob_new_object_key", + "label": "new_object_key()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "new_object_key()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L76" + }, + { + "id": "backend_app_imports_blob_s3blobstore_delete", + "label": ".delete()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".delete()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L65" + }, + { + "id": "backend_app_imports_blob_s3blobstore_get", + "label": ".get()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".get()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L61" + }, + { + "id": "backend_app_imports_blob_s3blobstore_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L43" + }, + { + "id": "backend_app_imports_blob_s3blobstore_put", + "label": ".put()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": ".put()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L58" + }, + { + "id": "backend_app_imports_crypto_decrypt_file", + "label": "decrypt_file()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "decrypt_file()", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L37" + }, + { + "id": "backend_app_imports_service_apply_hold_matches", + "label": "_apply_hold_matches()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_apply_hold_matches()", + "source_file": "backend/app/imports/service.py", + "source_location": "L395" + }, + { + "id": "backend_app_imports_service_confirm_document", + "label": "confirm_document()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "confirm_document()", + "source_file": "backend/app/imports/service.py", + "source_location": "L821" + }, + { + "id": "backend_app_imports_service_create_document", + "label": "create_document()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_document()", + "source_file": "backend/app/imports/service.py", + "source_location": "L48" + }, + { + "id": "backend_app_imports_service_decide_source_record", + "label": "decide_source_record()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "decide_source_record()", + "source_file": "backend/app/imports/service.py", + "source_location": "L597" + }, + { + "id": "backend_app_imports_service_delete_source_file", + "label": "delete_source_file()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "delete_source_file()", + "source_file": "backend/app/imports/service.py", + "source_location": "L1259" + }, + { + "id": "backend_app_imports_service_document", + "label": "_document()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_document()", + "source_file": "backend/app/imports/service.py", + "source_location": "L39" + }, + { + "id": "backend_app_imports_service_document_detail", + "label": "document_detail()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "document_detail()", + "source_file": "backend/app/imports/service.py", + "source_location": "L519" + }, + { + "id": "backend_app_imports_service_draft_json", + "label": "_draft_json()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_draft_json()", + "source_file": "backend/app/imports/service.py", + "source_location": "L120" + }, + { + "id": "backend_app_imports_service_list_documents", + "label": "list_documents()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "list_documents()", + "source_file": "backend/app/imports/service.py", + "source_location": "L510" + }, + { + "id": "backend_app_imports_service_match_hold_resolutions", + "label": "_match_hold_resolutions()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_match_hold_resolutions()", + "source_file": "backend/app/imports/service.py", + "source_location": "L328" + }, + { + "id": "backend_app_imports_service_prepare_reparse", + "label": "prepare_reparse()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "prepare_reparse()", + "source_file": "backend/app/imports/service.py", + "source_location": "L1067" + }, + { + "id": "backend_app_imports_service_process_statement_document", + "label": "process_statement_document()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "process_statement_document()", + "source_file": "backend/app/imports/service.py", + "source_location": "L427" + }, + { + "id": "backend_app_imports_service_resolve_hold", + "label": "resolve_hold()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "resolve_hold()", + "source_file": "backend/app/imports/service.py", + "source_location": "L708" + }, + { + "id": "backend_app_imports_service_revert_document", + "label": "revert_document()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "revert_document()", + "source_file": "backend/app/imports/service.py", + "source_location": "L1092" + }, + { + "id": "backend_app_imports_service_set_review_confirmation", + "label": "set_review_confirmation()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "set_review_confirmation()", + "source_file": "backend/app/imports/service.py", + "source_location": "L668" + }, + { + "id": "backend_app_imports_service_source_from_row", + "label": "_source_from_row()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_source_from_row()", + "source_file": "backend/app/imports/service.py", + "source_location": "L132" + }, + { + "id": "backend_app_ledger_service_account_balance", + "label": "account_balance()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "account_balance()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L63" + }, + { + "id": "backend_app_ledger_service_apply_suggestion", + "label": "_apply_suggestion()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_apply_suggestion()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L119" + }, + { + "id": "backend_app_ledger_service_archive_account", + "label": "archive_account()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "archive_account()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L462" + }, + { + "id": "backend_app_ledger_service_create_account", + "label": "create_account()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_account()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L76" + }, + { + "id": "backend_app_ledger_service_create_expense", + "label": "create_expense()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_expense()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L138" + }, + { + "id": "backend_app_ledger_service_create_income", + "label": "create_income()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_income()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L194" + }, + { + "id": "backend_app_ledger_service_create_refund", + "label": "create_refund()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_refund()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L324" + }, + { + "id": "backend_app_ledger_service_create_transfer", + "label": "create_transfer()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "create_transfer()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L248" + }, + { + "id": "backend_app_ledger_service_delete_account", + "label": "delete_account()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "delete_account()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L484" + }, + { + "id": "backend_app_ledger_service_ensure_period_open_for_date", + "label": "ensure_period_open_for_date()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "ensure_period_open_for_date()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L390" + }, + { + "id": "backend_app_ledger_service_existing_by_request_key", + "label": "_existing_by_request_key()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_existing_by_request_key()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L111" + }, + { + "id": "backend_app_ledger_service_get_account", + "label": "get_account()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "get_account()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L30" + }, + { + "id": "backend_app_ledger_service_get_operation", + "label": "get_operation()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "get_operation()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L37" + }, + { + "id": "backend_app_ledger_service_list_accounts", + "label": "list_accounts()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "list_accounts()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L551" + }, + { + "id": "backend_app_ledger_service_list_operations", + "label": "list_operations()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "list_operations()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L506" + }, + { + "id": "backend_app_ledger_service_refunded_kopecks", + "label": "refunded_kopecks()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "refunded_kopecks()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L311" + }, + { + "id": "backend_app_ledger_service_require_active_account", + "label": "_require_active_account()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_require_active_account()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L44" + }, + { + "id": "backend_app_ledger_service_to_kopecks", + "label": "to_kopecks()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "to_kopecks()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L19" + }, + { + "id": "backend_app_ledger_service_update_operation", + "label": "update_operation()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "update_operation()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430" + }, + { + "id": "backend_app_ledger_service_validate_category", + "label": "_validate_category()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "_validate_category()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L51" + }, + { + "id": "backend_app_ledger_service_void_operation", + "label": "void_operation()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "void_operation()", + "source_file": "backend/app/ledger/service.py", + "source_location": "L411" + }, + { + "id": "backend_tests_test_ledger_properties_seed", + "label": "seed()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "seed()", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L23" + }, + { + "id": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "label": "test_credit_expense_is_negative_balance_and_refund_is_capped()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "test_credit_expense_is_negative_balance_and_refund_is_capped()", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L71" + }, + { + "id": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "label": "test_cross_space_lookup_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "test_cross_space_lookup_fails_closed()", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L110" + }, + { + "id": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "label": "test_idempotency_key_prevents_duplicate_income()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "test_idempotency_key_prevents_duplicate_income()", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L126" + }, + { + "id": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "label": "test_transfer_postings_conserve_money()", + "_callable": true, + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "test_transfer_postings_conserve_money()", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L33" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore_delete", + "label": ".delete()", + "_callable": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": ".delete()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L36" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore_get", + "label": ".get()", + "_callable": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": ".get()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L33" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore_init", + "label": ".__init__()", + "_callable": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": ".__init__()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L20" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore_path", + "label": "._path()", + "_callable": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": "._path()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L23" + }, + { + "id": "backend_app_imports_blob_localdirectoryblobstore_put", + "label": ".put()", + "_callable": true, + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": ".put()", + "source_file": "backend/app/imports/blob.py", + "source_location": "L28" + }, + { + "id": "backend_tests_test_adapter_contracts_minimal_pdf", + "label": "minimal_pdf()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": "minimal_pdf()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L770" + }, + { + "id": "backend_tests_test_adapter_contracts_ozon_extracted", + "label": "ozon_extracted()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": "ozon_extracted()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L475" + }, + { + "id": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_row_quota_is_enforced", + "label": ".test_row_quota_is_enforced()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_row_quota_is_enforced()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L468" + }, + { + "id": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_pdf", + "label": ".test_detect_adapter_fails_closed_on_unknown_pdf()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_detect_adapter_fails_closed_on_unknown_pdf()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L122" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_setup_method", + "label": ".setup_method()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".setup_method()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L532" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "label": ".test_detect_and_parse_fail_closed_on_blank_pdf()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_detect_and_parse_fail_closed_on_blank_pdf()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L585" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_header_marker_fails_closed", + "label": ".test_missing_header_marker_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_missing_header_marker_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L562" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_totals_fail_closed", + "label": ".test_missing_totals_fail_closed()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_missing_totals_fail_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L568" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_multiline_cells_stay_one_transaction", + "label": ".test_multiline_cells_stay_one_transaction()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_multiline_cells_stay_one_transaction()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L550" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_no_rows_fails_closed", + "label": ".test_no_rows_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_no_rows_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L574" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_oversized_pdf_is_rejected_by_quota", + "label": ".test_oversized_pdf_is_rejected_by_quota()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_oversized_pdf_is_rejected_by_quota()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L592" + }, + { + "id": "backend_tests_test_adapter_contracts_testozondebitcontract_test_unexpected_row_shape_fails_closed", + "label": ".test_unexpected_row_shape_fails_closed()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_unexpected_row_shape_fails_closed()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L579" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "label": ".test_detect_and_parse_fail_closed_on_blank_pdf()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_detect_and_parse_fail_closed_on_blank_pdf()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L750" + }, + { + "id": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_oversized_pdf_is_rejected_by_quota", + "label": ".test_oversized_pdf_is_rejected_by_quota()", + "_callable": true, + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": ".test_oversized_pdf_is_rejected_by_quota()", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L757" + }, + { + "id": "backend_alembic_versions_20260918_0002_hold_lifecycle_downgrade", + "label": "downgrade()", + "_callable": true, + "_origin": "ast", + "community": 65, + "community_name": "20260918_0002_hold_lifecycle.py", + "file_type": "code", + "norm_label": "downgrade()", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L119" + }, + { + "id": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_check_constraint", + "label": "_has_check_constraint()", + "_callable": true, + "_origin": "ast", + "community": 65, + "community_name": "20260918_0002_hold_lifecycle.py", + "file_type": "code", + "norm_label": "_has_check_constraint()", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L18" + }, + { + "id": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_column", + "label": "_has_column()", + "_callable": true, + "_origin": "ast", + "community": 65, + "community_name": "20260918_0002_hold_lifecycle.py", + "file_type": "code", + "norm_label": "_has_column()", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L13" + }, + { + "id": "backend_alembic_versions_20260918_0002_hold_lifecycle_upgrade", + "label": "upgrade()", + "_callable": true, + "_origin": "ast", + "community": 65, + "community_name": "20260918_0002_hold_lifecycle.py", + "file_type": "code", + "norm_label": "upgrade()", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L25" + }, + { + "id": "frontend_src_test_accounts_page_test_account", + "label": "account()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "account()", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L21" + }, + { + "id": "frontend_src_test_helpers_createtestqueryclient", + "label": "createTestQueryClient()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "createtestqueryclient()", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L7" + }, + { + "id": "frontend_src_test_helpers_renderwithproviders", + "label": "renderWithProviders()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "renderwithproviders()", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L16" + }, + { + "id": "frontend_src_test_import_polling_test_detail", + "label": "detail()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "detail()", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L25" + }, + { + "id": "frontend_src_test_import_polling_test_makewrapper", + "label": "makeWrapper()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "makewrapper()", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L51" + }, + { + "id": "frontend_src_test_login_page_test_renderlogin", + "label": "renderLogin()", + "_callable": true, + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "renderlogin()", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L32" + }, + { + "id": "backend_app_spaces_router_cancel_deletion", + "label": "cancel_deletion()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "cancel_deletion()", + "source_file": "backend/app/spaces/router.py", + "source_location": "L77" + }, + { + "id": "backend_app_spaces_router_current", + "label": "current()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "current()", + "source_file": "backend/app/spaces/router.py", + "source_location": "L26" + }, + { + "id": "backend_app_spaces_router_deletion_status", + "label": "deletion_status()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "deletion_status()", + "source_file": "backend/app/spaces/router.py", + "source_location": "L63" + }, + { + "id": "backend_app_spaces_router_invite_member", + "label": "invite_member()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "invite_member()", + "source_file": "backend/app/spaces/router.py", + "source_location": "L36" + }, + { + "id": "backend_app_spaces_router_schedule_deletion", + "label": "schedule_deletion()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "schedule_deletion()", + "source_file": "backend/app/spaces/router.py", + "source_location": "L50" + }, + { + "id": "backend_app_spaces_service_require_owner", + "label": "require_owner()", + "_callable": true, + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "require_owner()", + "source_file": "backend/app/spaces/service.py", + "source_location": "L44" + }, + { + "id": "backend_app_errors_unauthorized", + "label": "unauthorized()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "unauthorized()", + "source_file": "backend/app/errors.py", + "source_location": "L31" + }, + { + "id": "backend_app_identity_service_accept_invitation", + "label": "accept_invitation()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "accept_invitation()", + "source_file": "backend/app/identity/service.py", + "source_location": "L58" + }, + { + "id": "backend_app_identity_service_authenticate", + "label": "authenticate()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "authenticate()", + "source_file": "backend/app/identity/service.py", + "source_location": "L104" + }, + { + "id": "backend_app_identity_service_create_invitation", + "label": "create_invitation()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "create_invitation()", + "source_file": "backend/app/identity/service.py", + "source_location": "L28" + }, + { + "id": "backend_app_identity_service_create_password_reset", + "label": "create_password_reset()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "create_password_reset()", + "source_file": "backend/app/identity/service.py", + "source_location": "L147" + }, + { + "id": "backend_app_identity_service_create_session", + "label": "create_session()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "create_session()", + "source_file": "backend/app/identity/service.py", + "source_location": "L115" + }, + { + "id": "backend_app_identity_service_get_active_session", + "label": "get_active_session()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "get_active_session()", + "source_file": "backend/app/identity/service.py", + "source_location": "L131" + }, + { + "id": "backend_app_identity_service_normalize_email", + "label": "normalize_email()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "normalize_email()", + "source_file": "backend/app/identity/service.py", + "source_location": "L15" + }, + { + "id": "backend_app_identity_service_reset_password", + "label": "reset_password()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "reset_password()", + "source_file": "backend/app/identity/service.py", + "source_location": "L167" + }, + { + "id": "backend_app_identity_service_revoke_session", + "label": "revoke_session()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "revoke_session()", + "source_file": "backend/app/identity/service.py", + "source_location": "L140" + }, + { + "id": "backend_app_identity_service_validate_profile", + "label": "validate_profile()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "validate_profile()", + "source_file": "backend/app/identity/service.py", + "source_location": "L19" + }, + { + "id": "backend_app_security_hash_password", + "label": "hash_password()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "hash_password()", + "source_file": "backend/app/security.py", + "source_location": "L10" + }, + { + "id": "backend_app_security_new_token", + "label": "new_token()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "new_token()", + "source_file": "backend/app/security.py", + "source_location": "L21" + }, + { + "id": "backend_app_security_token_digest", + "label": "token_digest()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "token_digest()", + "source_file": "backend/app/security.py", + "source_location": "L25" + }, + { + "id": "backend_app_security_verify_password", + "label": "verify_password()", + "_callable": true, + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "verify_password()", + "source_file": "backend/app/security.py", + "source_location": "L14" + }, + { + "id": "backend_app_imports_crypto_encrypt_file", + "label": "encrypt_file()", + "_callable": true, + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "code", + "norm_label": "encrypt_file()", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L21" + }, + { + "id": "backend_app_imports_crypto_shred_dek_material", + "label": "shred_dek_material()", + "_callable": true, + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "code", + "norm_label": "shred_dek_material()", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L56" + }, + { + "id": "backend_app_dependencies_current_session", + "label": "current_session()", + "_callable": true, + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "current_session()", + "source_file": "backend/app/dependencies.py", + "source_location": "L28" + }, + { + "id": "backend_app_errors_unprocessable", + "label": "unprocessable()", + "_callable": true, + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "unprocessable()", + "source_file": "backend/app/errors.py", + "source_location": "L47" + }, + { + "id": "backend_app_imports_readers_quota_error", + "label": "_quota_error()", + "_callable": true, + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "_quota_error()", + "source_file": "backend/app/imports/readers.py", + "source_location": "L14" + }, + { + "id": "backend_app_identity_router_me", + "label": "me()", + "_callable": true, + "_origin": "ast", + "community": 76, + "community_name": "me", + "file_type": "code", + "norm_label": "me()", + "source_file": "backend/app/identity/router.py", + "source_location": "L147" + }, + { + "id": "kilo_plugins_graphify_graphifyplugin", + "label": "GraphifyPlugin()", + "_callable": true, + "_origin": "ast", + "community": 78, + "community_name": "graphify.js", + "file_type": "code", + "norm_label": "graphifyplugin()", + "source_file": ".kilo/plugins/graphify.js", + "source_location": "L6" + }, + { + "id": "frontend_src_app_router_requireauth", + "label": "RequireAuth()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "requireauth()", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L44" + }, + { + "id": "frontend_src_components_layout_applayout_applayout", + "label": "AppLayout()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "applayout()", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L17" + }, + { + "id": "frontend_src_components_layout_langswitcher_langswitcher", + "label": "LangSwitcher()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "langswitcher()", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L5" + }, + { + "id": "frontend_src_components_ui_fields_textfield", + "label": "TextField()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "textfield()", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L56" + }, + { + "id": "frontend_src_hooks_useauth_useacceptinvite", + "label": "useAcceptInvite()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "useacceptinvite()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L30" + }, + { + "id": "frontend_src_hooks_useauth_useconfirmpasswordreset", + "label": "useConfirmPasswordReset()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "useconfirmpasswordreset()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L38" + }, + { + "id": "frontend_src_hooks_useauth_uselogin", + "label": "useLogin()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "uselogin()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L26" + }, + { + "id": "frontend_src_hooks_useauth_uselogout", + "label": "useLogout()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "uselogout()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L42" + }, + { + "id": "frontend_src_hooks_useauth_useme", + "label": "useMe()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "useme()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L6" + }, + { + "id": "frontend_src_hooks_useauth_userequestpasswordreset", + "label": "useRequestPasswordReset()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "userequestpasswordreset()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L34" + }, + { + "id": "frontend_src_hooks_useauth_usesessionmutation", + "label": "useSessionMutation()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "usesessionmutation()", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L15" + }, + { + "id": "frontend_src_i18n_index_setlocale", + "label": "setLocale()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "setlocale()", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L46" + }, + { + "id": "frontend_src_pages_acceptinvitepage_acceptinvitepage", + "label": "AcceptInvitePage()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "acceptinvitepage()", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L19" + }, + { + "id": "frontend_src_pages_loginpage_loginpage", + "label": "LoginPage()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "loginpage()", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L18" + }, + { + "id": "frontend_src_pages_resetpasswordpage_resetpasswordpage", + "label": "ResetPasswordPage()", + "_callable": true, + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "resetpasswordpage()", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L19" + }, + { + "id": "backend_app_ledger_router_account_json", + "label": "account_json()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "account_json()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L55" + }, + { + "id": "backend_app_ledger_router_accounts", + "label": "accounts()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "accounts()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L100" + }, + { + "id": "backend_app_ledger_router_archive_account", + "label": "archive_account()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "archive_account()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L116" + }, + { + "id": "backend_app_ledger_router_create_account", + "label": "create_account()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "create_account()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L105" + }, + { + "id": "backend_app_ledger_router_create_operation", + "label": "create_operation()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "create_operation()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174" + }, + { + "id": "backend_app_ledger_router_delete_account", + "label": "delete_account()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "delete_account()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L132" + }, + { + "id": "backend_app_ledger_router_operation_json", + "label": "operation_json()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "operation_json()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L71" + }, + { + "id": "backend_app_ledger_router_operations", + "label": "operations()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "operations()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137" + }, + { + "id": "backend_app_ledger_router_patch_account", + "label": "patch_account()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "patch_account()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L124" + }, + { + "id": "backend_app_ledger_router_patch_operation", + "label": "patch_operation()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "patch_operation()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264" + }, + { + "id": "backend_app_ledger_router_void_operation", + "label": "void_operation()", + "_callable": true, + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "void_operation()", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250" + }, + { + "id": "backend_app_config", + "label": "config.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "config.py", + "source_file": "backend/app/config.py", + "source_location": "L1" + }, + { + "id": "backend_app_identity_mailer", + "label": "mailer.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "mailer.py", + "source_file": "backend/app/identity/mailer.py", + "source_location": "L1" + }, + { + "id": "backend_app_identity_router", + "label": "identity/router.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "identity/router.py", + "source_file": "backend/app/identity/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_identity_router_py_alias", + "label": "alias", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "alias", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_basemodel", + "label": "BaseModel", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "basemodel", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_header", + "label": "Header", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "header", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_post", + "label": "post", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_request", + "label": "Request", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "request", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_response", + "label": "Response", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "response", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_celery_app", + "label": "celery_app.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "celery_app.py", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L1" + }, + { + "id": "backend_app_ratelimit", + "label": "ratelimit.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "ratelimit.py", + "source_file": "backend/app/ratelimit.py", + "source_location": "L1" + }, + { + "id": "backend_app_worker", + "label": "worker.py", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "worker.py", + "source_file": "backend/app/worker.py", + "source_location": "L1" + }, + { + "id": "basesettings", + "label": "BaseSettings", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "basesettings", + "source_file": "", + "source_location": "" + }, + { + "id": "celery", + "label": "Celery", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "code", + "norm_label": "celery", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ratelimit_rationale_16", + "label": "Distributed fixed-window limiter with a local fail-safe fallback.", + "_origin": "ast", + "community": 0, + "community_name": "get_settings", + "file_type": "rationale", + "norm_label": "distributed fixed-window limiter with a local fail-safe fallback.", + "source_file": "backend/app/ratelimit.py", + "source_location": "L16" + }, + { + "id": "backend_app_analytics_init", + "label": "analytics/__init__.py", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "analytics/__init__.py", + "source_file": "backend/app/analytics/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_analytics_router", + "label": "analytics/router.py", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "analytics/router.py", + "source_file": "backend/app/analytics/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_analytics_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_analytics_router_py_date", + "label": "date", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_analytics_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_analytics_router_py_get", + "label": "get", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_init", + "label": "budgeting/__init__.py", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "budgeting/__init__.py", + "source_file": "backend/app/budgeting/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_budgeting_router", + "label": "budgeting/router.py", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "budgeting/router.py", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_budgeting_router_py_basemodel", + "label": "BaseModel", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "basemodel", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_csrf", + "label": "Csrf", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "csrf", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_get", + "label": "get", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_patch", + "label": "patch", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "patch", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_post", + "label": "post", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_router_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "put", + "label": "put", + "_origin": "ast", + "community": 1, + "community_name": "budgeting/router.py", + "file_type": "code", + "norm_label": "put", + "source_file": "", + "source_location": "" + }, + { + "id": "frontend_src_app_router_importspage", + "label": "ImportsPage", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "importspage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L22" + }, + { + "id": "frontend_src_components_ui_button", + "label": "Button.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "button.tsx", + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_confirmdialog", + "label": "ConfirmDialog.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "confirmdialog.tsx", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_emptystate", + "label": "EmptyState.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "emptystate.tsx", + "source_file": "frontend/src/components/ui/EmptyState.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_errorstate", + "label": "ErrorState.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "errorstate.tsx", + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_modal", + "label": "Modal.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "modal.tsx", + "source_file": "frontend/src/components/ui/Modal.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_querygate", + "label": "QueryGate.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "querygate.tsx", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_spinner", + "label": "Spinner.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "spinner.tsx", + "source_file": "frontend/src/components/ui/Spinner.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_accountspage", + "label": "AccountsPage.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "accountspage.tsx", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_importspage", + "label": "ImportsPage.tsx", + "_origin": "ast", + "community": 10, + "community_name": "AccountsPage.tsx", + "file_type": "code", + "norm_label": "importspage.tsx", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_tsconfig", + "label": "tsconfig.json", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "tsconfig.json", + "source_file": "frontend/tsconfig.json", + "source_location": "L1" + }, + { + "id": "frontend_tsconfig_compileroptions", + "label": "compilerOptions", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "compileroptions", + "source_file": "frontend/tsconfig.json", + "source_location": "L2" + }, + { + "id": "frontend_tsconfig_compileroptions_baseurl", + "label": "baseUrl", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "baseurl", + "source_file": "frontend/tsconfig.json", + "source_location": "L22" + }, + { + "id": "frontend_tsconfig_compileroptions_esmoduleinterop", + "label": "esModuleInterop", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "esmoduleinterop", + "source_file": "frontend/tsconfig.json", + "source_location": "L15" + }, + { + "id": "frontend_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "label": "forceConsistentCasingInFileNames", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "forceconsistentcasinginfilenames", + "source_file": "frontend/tsconfig.json", + "source_location": "L16" + }, + { + "id": "frontend_tsconfig_compileroptions_isolatedmodules", + "label": "isolatedModules", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "isolatedmodules", + "source_file": "frontend/tsconfig.json", + "source_location": "L14" + }, + { + "id": "frontend_tsconfig_compileroptions_jsx", + "label": "jsx", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "jsx", + "source_file": "frontend/tsconfig.json", + "source_location": "L7" + }, + { + "id": "frontend_tsconfig_compileroptions_lib", + "label": "lib", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "lib", + "source_file": "frontend/tsconfig.json", + "source_location": "L4" + }, + { + "id": "frontend_tsconfig_compileroptions_module", + "label": "module", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "module", + "source_file": "frontend/tsconfig.json", + "source_location": "L5" + }, + { + "id": "frontend_tsconfig_compileroptions_moduleresolution", + "label": "moduleResolution", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "moduleresolution", + "source_file": "frontend/tsconfig.json", + "source_location": "L6" + }, + { + "id": "frontend_tsconfig_compileroptions_noemit", + "label": "noEmit", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "noemit", + "source_file": "frontend/tsconfig.json", + "source_location": "L20" + }, + { + "id": "frontend_tsconfig_compileroptions_nofallthroughcasesinswitch", + "label": "noFallthroughCasesInSwitch", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "nofallthroughcasesinswitch", + "source_file": "frontend/tsconfig.json", + "source_location": "L11" + }, + { + "id": "frontend_tsconfig_compileroptions_nouncheckedindexedaccess", + "label": "noUncheckedIndexedAccess", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "nouncheckedindexedaccess", + "source_file": "frontend/tsconfig.json", + "source_location": "L12" + }, + { + "id": "frontend_tsconfig_compileroptions_nounusedlocals", + "label": "noUnusedLocals", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "nounusedlocals", + "source_file": "frontend/tsconfig.json", + "source_location": "L9" + }, + { + "id": "frontend_tsconfig_compileroptions_nounusedparameters", + "label": "noUnusedParameters", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "nounusedparameters", + "source_file": "frontend/tsconfig.json", + "source_location": "L10" + }, + { + "id": "frontend_tsconfig_compileroptions_paths", + "label": "paths", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "paths", + "source_file": "frontend/tsconfig.json", + "source_location": "L23" + }, + { + "id": "frontend_tsconfig_compileroptions_resolvejsonmodule", + "label": "resolveJsonModule", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "resolvejsonmodule", + "source_file": "frontend/tsconfig.json", + "source_location": "L18" + }, + { + "id": "frontend_tsconfig_compileroptions_skiplibcheck", + "label": "skipLibCheck", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "skiplibcheck", + "source_file": "frontend/tsconfig.json", + "source_location": "L19" + }, + { + "id": "frontend_tsconfig_compileroptions_strict", + "label": "strict", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "strict", + "source_file": "frontend/tsconfig.json", + "source_location": "L8" + }, + { + "id": "frontend_tsconfig_compileroptions_target", + "label": "target", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "target", + "source_file": "frontend/tsconfig.json", + "source_location": "L3" + }, + { + "id": "frontend_tsconfig_compileroptions_types", + "label": "types", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "types", + "source_file": "frontend/tsconfig.json", + "source_location": "L21" + }, + { + "id": "frontend_tsconfig_compileroptions_usedefineforclassfields", + "label": "useDefineForClassFields", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "usedefineforclassfields", + "source_file": "frontend/tsconfig.json", + "source_location": "L17" + }, + { + "id": "frontend_tsconfig_compileroptions_verbatimmodulesyntax", + "label": "verbatimModuleSyntax", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "verbatimmodulesyntax", + "source_file": "frontend/tsconfig.json", + "source_location": "L13" + }, + { + "id": "frontend_tsconfig_include", + "label": "include", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "code", + "norm_label": "include", + "source_file": "frontend/tsconfig.json", + "source_location": "L27" + }, + { + "id": "ref_dom", + "label": "DOM", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "concept", + "norm_label": "dom", + "source_file": "frontend/tsconfig.json", + "source_location": "L4" + }, + { + "id": "ref_dom_iterable", + "label": "DOM.Iterable", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "concept", + "norm_label": "dom.iterable", + "source_file": "frontend/tsconfig.json", + "source_location": "L4" + }, + { + "id": "ref_es2022", + "label": "ES2022", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "concept", + "norm_label": "es2022", + "source_file": "frontend/tsconfig.json", + "source_location": "L4" + }, + { + "id": "ref_src", + "label": "src", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "concept", + "norm_label": "src", + "source_file": "frontend/tsconfig.json", + "source_location": "L27" + }, + { + "id": "ref_vite_client", + "label": "vite/client", + "_origin": "ast", + "community": 11, + "community_name": "compilerOptions", + "file_type": "concept", + "norm_label": "vite/client", + "source_file": "frontend/tsconfig.json", + "source_location": "L21" + }, + { + "id": "frontend_src_app_router_analyticspage", + "label": "AnalyticsPage", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "analyticspage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L13" + }, + { + "id": "frontend_src_components_charts_columnchart", + "label": "ColumnChart.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "columnchart.tsx", + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_charts_horizontalbars", + "label": "HorizontalBars.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "horizontalbars.tsx", + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_charts_planfactbars", + "label": "PlanFactBars.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "planfactbars.tsx", + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_monthswitcher", + "label": "MonthSwitcher.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "monthswitcher.tsx", + "source_file": "frontend/src/components/ui/MonthSwitcher.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_hooks_useanalytics", + "label": "useAnalytics.ts", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "useanalytics.ts", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_analyticspage", + "label": "AnalyticsPage.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "analyticspage.tsx", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_analyticspage_range_choices", + "label": "RANGE_CHOICES", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "range_choices", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L21" + }, + { + "id": "frontend_src_test_chart_accessible_table_test", + "label": "chart-accessible-table.test.tsx", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "chart-accessible-table.test.tsx", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_chart_accessible_table_test_rows", + "label": "rows", + "_origin": "ast", + "community": 12, + "community_name": "AnalyticsPage.tsx", + "file_type": "code", + "norm_label": "rows", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L6" + }, + { + "id": "frontend_src_app_router_notfoundpage", + "label": "NotFoundPage", + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "notfoundpage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L28" + }, + { + "id": "frontend_src_components_ui_pageheader", + "label": "PageHeader.tsx", + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "pageheader.tsx", + "source_file": "frontend/src/components/ui/PageHeader.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_hooks_usespacelifecycle", + "label": "useSpaceLifecycle.ts", + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "usespacelifecycle.ts", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_notfoundpage", + "label": "NotFoundPage.tsx", + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "notfoundpage.tsx", + "source_file": "frontend/src/pages/NotFoundPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_settingspage", + "label": "SettingsPage.tsx", + "_origin": "ast", + "community": 13, + "community_name": "SettingsPage.tsx", + "file_type": "code", + "norm_label": "settingspage.tsx", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_package_devdependencies", + "label": "devDependencies", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "devdependencies", + "source_file": "frontend/package.json", + "source_location": "L27" + }, + { + "id": "frontend_package_devdependencies_eslint", + "label": "eslint", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "eslint", + "source_file": "frontend/package.json", + "source_location": "L36" + }, + { + "id": "frontend_package_devdependencies_eslint_js", + "label": "@eslint/js", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "@eslint/js", + "source_file": "frontend/package.json", + "source_location": "L28" + }, + { + "id": "frontend_package_devdependencies_eslint_plugin_jsx_a11y", + "label": "eslint-plugin-jsx-a11y", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "eslint-plugin-jsx-a11y", + "source_file": "frontend/package.json", + "source_location": "L37" + }, + { + "id": "frontend_package_devdependencies_globals", + "label": "globals", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "globals", + "source_file": "frontend/package.json", + "source_location": "L39" + }, + { + "id": "frontend_package_devdependencies_testing_library_jest_dom", + "label": "@testing-library/jest-dom", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "@testing-library/jest-dom", + "source_file": "frontend/package.json", + "source_location": "L30" + }, + { + "id": "frontend_package_devdependencies_testing_library_user_event", + "label": "@testing-library/user-event", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "@testing-library/user-event", + "source_file": "frontend/package.json", + "source_location": "L32" + }, + { + "id": "frontend_package_devdependencies_types_react", + "label": "@types/react", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "@types/react", + "source_file": "frontend/package.json", + "source_location": "L33" + }, + { + "id": "frontend_package_devdependencies_typescript", + "label": "typescript", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "typescript", + "source_file": "frontend/package.json", + "source_location": "L42" + }, + { + "id": "frontend_package_devdependencies_vitejs_plugin_react", + "label": "@vitejs/plugin-react", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "code", + "norm_label": "@vitejs/plugin-react", + "source_file": "frontend/package.json", + "source_location": "L35" + }, + { + "id": "eslint", + "label": "eslint", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "eslint", + "source_file": "frontend/package.json", + "source_location": "L36" + }, + { + "id": "eslint_js", + "label": "@eslint/js", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "@eslint/js", + "source_file": "frontend/package.json", + "source_location": "L28" + }, + { + "id": "eslint_plugin_jsx_a11y", + "label": "eslint-plugin-jsx-a11y", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "eslint-plugin-jsx-a11y", + "source_file": "frontend/package.json", + "source_location": "L37" + }, + { + "id": "globals", + "label": "globals", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "globals", + "source_file": "frontend/package.json", + "source_location": "L39" + }, + { + "id": "testing_library_jest_dom", + "label": "@testing-library/jest-dom", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "@testing-library/jest-dom", + "source_file": "frontend/package.json", + "source_location": "L30" + }, + { + "id": "testing_library_user_event", + "label": "@testing-library/user-event", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "@testing-library/user-event", + "source_file": "frontend/package.json", + "source_location": "L32" + }, + { + "id": "types_react", + "label": "@types/react", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "@types/react", + "source_file": "frontend/package.json", + "source_location": "L33" + }, + { + "id": "typescript", + "label": "typescript", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "typescript", + "source_file": "frontend/package.json", + "source_location": "L42" + }, + { + "id": "vitejs_plugin_react", + "label": "@vitejs/plugin-react", + "_origin": "ast", + "community": 14, + "community_name": "devDependencies", + "file_type": "concept", + "norm_label": "@vitejs/plugin-react", + "source_file": "frontend/package.json", + "source_location": "L35" + }, + { + "id": "backend_app_analytics_service", + "label": "analytics/service.py", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "analytics/service.py", + "source_file": "backend/app/analytics/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_analytics_service_py_date", + "label": "date", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_analytics_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_service", + "label": "budgeting/service.py", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "budgeting/service.py", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_budgeting_service_py_account", + "label": "Account", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "account", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_service_py_date", + "label": "date", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_service_py_user", + "label": "User", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_budget", + "label": "test_budget.py", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_budget.py", + "source_file": "backend/tests/test_budget.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_import_holds", + "label": "test_import_holds.py", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "test_import_holds.py", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_import_holds_py_date", + "label": "date", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_import_holds_py_testclient", + "label": "TestClient", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "testclient", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_import_holds_py_user", + "label": "User", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "expectedincome", + "label": "ExpectedIncome", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "code", + "norm_label": "expectedincome", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_budgeting_models_rationale_26", + "label": "Calendar month budget period in the space timezone (month granularity).", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "rationale", + "norm_label": "calendar month budget period in the space timezone (month granularity).", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L26" + }, + { + "id": "backend_app_budgeting_service_rationale_115", + "label": "Deterministic budget state. Resource model: - income lands in the general pool;\u2026", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "rationale", + "norm_label": "deterministic budget state. resource model: - income lands in the general pool;...", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L115" + }, + { + "id": "backend_app_categorization_service_rationale_9", + "label": "Standard categories resolve to a translation key; overrides/customs are literal.", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "rationale", + "norm_label": "standard categories resolve to a translation key; overrides/customs are literal.", + "source_file": "backend/app/categorization/service.py", + "source_location": "L9" + }, + { + "id": "backend_app_ledger_models_rationale_160", + "label": "Budget category. Kept in ledger module to avoid circular imports.", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "rationale", + "norm_label": "budget category. kept in ledger module to avoid circular imports.", + "source_file": "backend/app/ledger/models.py", + "source_location": "L160" + }, + { + "id": "backend_tests_test_import_holds_rationale_112", + "label": "A confirmed import whose active run contains exactly one unresolved hold.", + "_origin": "ast", + "community": 15, + "community_name": "Session", + "file_type": "rationale", + "norm_label": "a confirmed import whose active run contains exactly one unresolved hold.", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L112" + }, + { + "id": "frontend_package_dependencies", + "label": "dependencies", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "dependencies", + "source_file": "frontend/package.json", + "source_location": "L16" + }, + { + "id": "frontend_package_dependencies_hookform_resolvers", + "label": "@hookform/resolvers", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "@hookform/resolvers", + "source_file": "frontend/package.json", + "source_location": "L17" + }, + { + "id": "frontend_package_dependencies_i18next", + "label": "i18next", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "i18next", + "source_file": "frontend/package.json", + "source_location": "L19" + }, + { + "id": "frontend_package_dependencies_react", + "label": "react", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "react", + "source_file": "frontend/package.json", + "source_location": "L20" + }, + { + "id": "frontend_package_dependencies_react_dom", + "label": "react-dom", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "react-dom", + "source_file": "frontend/package.json", + "source_location": "L21" + }, + { + "id": "frontend_package_dependencies_react_hook_form", + "label": "react-hook-form", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "react-hook-form", + "source_file": "frontend/package.json", + "source_location": "L22" + }, + { + "id": "frontend_package_dependencies_react_i18next", + "label": "react-i18next", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "react-i18next", + "source_file": "frontend/package.json", + "source_location": "L23" + }, + { + "id": "frontend_package_dependencies_react_router_dom", + "label": "react-router-dom", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "react-router-dom", + "source_file": "frontend/package.json", + "source_location": "L24" + }, + { + "id": "frontend_package_dependencies_tanstack_react_query", + "label": "@tanstack/react-query", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "@tanstack/react-query", + "source_file": "frontend/package.json", + "source_location": "L18" + }, + { + "id": "frontend_package_dependencies_zod", + "label": "zod", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "code", + "norm_label": "zod", + "source_file": "frontend/package.json", + "source_location": "L25" + }, + { + "id": "hookform_resolvers", + "label": "@hookform/resolvers", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "@hookform/resolvers", + "source_file": "frontend/package.json", + "source_location": "L17" + }, + { + "id": "i18next", + "label": "i18next", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "i18next", + "source_file": "frontend/package.json", + "source_location": "L19" + }, + { + "id": "react", + "label": "react", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "react", + "source_file": "frontend/package.json", + "source_location": "L20" + }, + { + "id": "react_dom", + "label": "react-dom", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "react-dom", + "source_file": "frontend/package.json", + "source_location": "L21" + }, + { + "id": "react_hook_form", + "label": "react-hook-form", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "react-hook-form", + "source_file": "frontend/package.json", + "source_location": "L22" + }, + { + "id": "react_i18next", + "label": "react-i18next", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "react-i18next", + "source_file": "frontend/package.json", + "source_location": "L23" + }, + { + "id": "react_router_dom", + "label": "react-router-dom", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "react-router-dom", + "source_file": "frontend/package.json", + "source_location": "L24" + }, + { + "id": "tanstack_react_query", + "label": "@tanstack/react-query", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "@tanstack/react-query", + "source_file": "frontend/package.json", + "source_location": "L18" + }, + { + "id": "zod", + "label": "zod", + "_origin": "ast", + "community": 16, + "community_name": "dependencies", + "file_type": "concept", + "norm_label": "zod", + "source_file": "frontend/package.json", + "source_location": "L25" + }, + { + "id": "frontend_src_app_router_importdetailpage", + "label": "ImportDetailPage", + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "importdetailpage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L19" + }, + { + "id": "frontend_src_hooks_useimports", + "label": "useImports.ts", + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "useimports.ts", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_importdetailpage", + "label": "ImportDetailPage.tsx", + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "importdetailpage.tsx", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_importdetailpage_decisions", + "label": "DECISIONS", + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "decisions", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L24" + }, + { + "id": "frontend_src_pages_importdetailpage_step_order", + "label": "STEP_ORDER", + "_origin": "ast", + "community": 17, + "community_name": "ImportDetailPage.tsx", + "file_type": "code", + "norm_label": "step_order", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L31" + }, + { + "id": "frontend_src_components_ui_badge", + "label": "Badge.tsx", + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "badge.tsx", + "source_file": "frontend/src/components/ui/Badge.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_hooks_useoperations", + "label": "useOperations.ts", + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "useoperations.ts", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_operationspage", + "label": "OperationsPage.tsx", + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "operationspage.tsx", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_operationspage_operation_kinds", + "label": "OPERATION_KINDS", + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "operation_kinds", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L28" + }, + { + "id": "frontend_src_pages_reviewqueuepage", + "label": "ReviewQueuePage.tsx", + "_origin": "ast", + "community": 18, + "community_name": "OperationsPage.tsx", + "file_type": "code", + "norm_label": "reviewqueuepage.tsx", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L1" + }, + { + "id": "i1", + "label": "i1", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "i1", + "source_file": "i1" + }, + { + "id": "i2", + "label": "i2", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "confidence": "EXTRACTED", + "file_type": "code", + "norm_label": "i2", + "source_file": "i2" + }, + { + "id": "frontend_src_api_querykeys", + "label": "queryKeys.ts", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "querykeys.ts", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_api_querykeys_invalidationroots", + "label": "invalidationRoots", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "invalidationroots", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L10" + }, + { + "id": "frontend_src_api_querykeys_querykeys", + "label": "queryKeys", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "querykeys", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L20" + }, + { + "id": "frontend_src_api_querykeys_session_root", + "label": "SESSION_ROOT", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "session_root", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L4" + }, + { + "id": "frontend_src_api_querykeys_sessioninvalidationroot", + "label": "sessionInvalidationRoot", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "sessioninvalidationroot", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L6" + }, + { + "id": "frontend_src_api_querykeys_space_root", + "label": "SPACE_ROOT", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "space_root", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L3" + }, + { + "id": "frontend_src_api_querykeys_spaceinvalidationroot", + "label": "spaceInvalidationRoot", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "spaceinvalidationroot", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L8" + }, + { + "id": "frontend_src_hooks_useaccounts", + "label": "useAccounts.ts", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "useaccounts.ts", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_test_query_keys_test", + "label": "query-keys.test.ts", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "query-keys.test.ts", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_test_query_keys_test_sample_filters", + "label": "SAMPLE_FILTERS", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "sample_filters", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L10" + }, + { + "id": "frontend_src_test_query_keys_test_sample_keys", + "label": "SAMPLE_KEYS", + "_origin": "ast", + "community": 19, + "community_name": "queryKeys.ts", + "file_type": "code", + "norm_label": "sample_keys", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L12" + }, + { + "id": "backend_alembic_env", + "label": "env.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "env.py", + "source_file": "backend/alembic/env.py", + "source_location": "L1" + }, + { + "id": "backend_alembic_versions_20260911_0001_initial_schema", + "label": "20260911_0001_initial_schema.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "20260911_0001_initial_schema.py", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L1" + }, + { + "id": "backend_app_audit_models", + "label": "audit/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "audit/models.py", + "source_file": "backend/app/audit/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_budgeting_models", + "label": "budgeting/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "budgeting/models.py", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_categorization_models", + "label": "categorization/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "categorization/models.py", + "source_file": "backend/app/categorization/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_categorization_service", + "label": "categorization/service.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "categorization/service.py", + "source_file": "backend/app/categorization/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_db_base", + "label": "db/base.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "db/base.py", + "source_file": "backend/app/db/base.py", + "source_location": "L1" + }, + { + "id": "backend_app_db_base_py_any", + "label": "Any", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_db_init", + "label": "db/__init__.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "db/__init__.py", + "source_file": "backend/app/db/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_db_models", + "label": "db/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "db/models.py", + "source_file": "backend/app/db/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_models", + "label": "exports/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "exports/models.py", + "source_file": "backend/app/exports/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_service", + "label": "exports/service.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "exports/service.py", + "source_file": "backend/app/exports/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_service_py_datetime", + "label": "datetime", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "datetime", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_models", + "label": "identity/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "identity/models.py", + "source_file": "backend/app/identity/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_models", + "label": "imports/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "imports/models.py", + "source_file": "backend/app/imports/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_ledger_models", + "label": "ledger/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "ledger/models.py", + "source_file": "backend/app/ledger/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_spaces_models", + "label": "spaces/models.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "spaces/models.py", + "source_file": "backend/app/spaces/models.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_imports", + "label": "test_imports.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_imports.py", + "source_file": "backend/tests/test_imports.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_postgres_and_s3", + "label": "test_postgres_and_s3.py", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "test_postgres_and_s3.py", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L1" + }, + { + "id": "declarativebase", + "label": "DeclarativeBase", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "declarativebase", + "source_file": "", + "source_location": "" + }, + { + "id": "skipif", + "label": "skipif", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "skipif", + "source_file": "", + "source_location": "" + }, + { + "id": "typedecorator", + "label": "TypeDecorator", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "code", + "norm_label": "typedecorator", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_audit_models_rationale_11", + "label": "Append-only domain/security event. Never stores raw financial payloads.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "append-only domain/security event. never stores raw financial payloads.", + "source_file": "backend/app/audit/models.py", + "source_location": "L11" + }, + { + "id": "backend_app_budgeting_models_rationale_104", + "label": "Links one actual income operation to one expected income (1:1 per operation).", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "links one actual income operation to one expected income (1:1 per operation).", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L104" + }, + { + "id": "backend_app_budgeting_models_rationale_133", + "label": "Manual money movement between the general pool and a category/reserve.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "manual money movement between the general pool and a category/reserve.", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L133" + }, + { + "id": "backend_app_budgeting_models_rationale_167", + "label": "Immutable-at-rest snapshot written when a period closes.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "immutable-at-rest snapshot written when a period closes.", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L167" + }, + { + "id": "backend_app_categorization_models_rationale_104", + "label": "Maps a bank's raw category string to an MCC for suggestion purposes.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "maps a bank's raw category string to an mcc for suggestion purposes.", + "source_file": "backend/app/categorization/models.py", + "source_location": "L104" + }, + { + "id": "backend_app_categorization_models_rationale_65", + "label": "Confirmed payee rule: auto-applies category to matching future operations.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "confirmed payee rule: auto-applies category to matching future operations.", + "source_file": "backend/app/categorization/models.py", + "source_location": "L65" + }, + { + "id": "backend_app_categorization_models_rationale_94", + "label": "Global versioned MCC dictionary (not space-scoped, outside RLS).", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "global versioned mcc dictionary (not space-scoped, outside rls).", + "source_file": "backend/app/categorization/models.py", + "source_location": "L94" + }, + { + "id": "backend_app_db_base_rationale_22", + "label": "Datetimes stored as naive UTC in the DB and exposed tz-aware (UTC) in Python.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "datetimes stored as naive utc in the db and exposed tz-aware (utc) in python.", + "source_file": "backend/app/db/base.py", + "source_location": "L22" + }, + { + "id": "backend_app_db_models_rationale_1", + "label": "Import every mapped class so Alembic sees complete metadata.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "import every mapped class so alembic sees complete metadata.", + "source_file": "backend/app/db/models.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_models_rationale_30", + "label": "Durable deletion marker reapplied after disaster restore.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "durable deletion marker reapplied after disaster restore.", + "source_file": "backend/app/exports/models.py", + "source_location": "L30" + }, + { + "id": "backend_app_imports_models_rationale_101", + "label": "Immutable extracted bank fact with document origin coordinates.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "immutable extracted bank fact with document origin coordinates.", + "source_file": "backend/app/imports/models.py", + "source_location": "L101" + }, + { + "id": "backend_app_imports_models_rationale_220", + "label": "Append-only, tenant-scoped settlement of one HOLD source record. The extracted\u2026", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "append-only, tenant-scoped settlement of one hold source record. the extracted...", + "source_file": "backend/app/imports/models.py", + "source_location": "L220" + }, + { + "id": "backend_app_ledger_models_rationale_27", + "label": "Financial account. Balance is always derived: opening + confirmed postings.", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "financial account. balance is always derived: opening + confirmed postings.", + "source_file": "backend/app/ledger/models.py", + "source_location": "L27" + }, + { + "id": "backend_app_ledger_models_rationale_55", + "label": "User financial fact. amount_kopecks is always positive; direction lives in\u2026", + "_origin": "ast", + "community": 2, + "community_name": "Base", + "file_type": "rationale", + "norm_label": "user financial fact. amount_kopecks is always positive; direction lives in...", + "source_file": "backend/app/ledger/models.py", + "source_location": "L55" + }, + { + "id": "frontend_src_app", + "label": "App.tsx", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "app.tsx", + "source_file": "frontend/src/App.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_app_queryclient", + "label": "queryClient", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "queryclient", + "source_file": "frontend/src/App.tsx", + "source_location": "L9" + }, + { + "id": "frontend_src_components_ui_toaster", + "label": "Toaster.tsx", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toaster.tsx", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_ui_toaster_toastcontext", + "label": "ToastContext", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "toastcontext", + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L16" + }, + { + "id": "frontend_src_i18n_index", + "label": "index.ts", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "index.ts", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_i18n_index_i18n", + "label": "i18n", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "i18n", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L44" + }, + { + "id": "frontend_src_main", + "label": "main.tsx", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "main.tsx", + "source_file": "frontend/src/main.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_main_container", + "label": "container", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "container", + "source_file": "frontend/src/main.tsx", + "source_location": "L7" + }, + { + "id": "frontend_src_test_setup", + "label": "setup.ts", + "_origin": "ast", + "community": 20, + "community_name": "Toaster.tsx", + "file_type": "code", + "norm_label": "setup.ts", + "source_file": "frontend/src/test/setup.ts", + "source_location": "L1" + }, + { + "id": "backend_app_imports_adapters_base", + "label": "adapters/base.py", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "adapters/base.py", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_adapters_base_py_date", + "label": "date", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf", + "label": "ozon_pdf.py", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "ozon_pdf.py", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L1" + }, + { + "id": "pattern", + "label": "Pattern", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "code", + "norm_label": "pattern", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_adapters_base_rationale_111", + "label": "Parse statement money strings like '-1 234,56 RUR', '+ 500.00 \u20bd', '12 345'.\u2026", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "rationale", + "norm_label": "parse statement money strings like '-1 234,56 rur', '+ 500.00 \u20bd', '12 345'....", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L111" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_rationale_128", + "label": "Ozon debit statement contract, evidenced against the real document. A '\u0421\u043f\u0440\u0430\u0432\u043a\u0430\u2026", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "rationale", + "norm_label": "ozon debit statement contract, evidenced against the real document. a '\u0441\u043f\u0440\u0430\u0432\u043a\u0430...", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L128" + }, + { + "id": "backend_app_imports_adapters_ozon_pdf_rationale_31", + "label": "Ozon statement contract: text-layer PDF, per-page line scanning.", + "_origin": "ast", + "community": 21, + "community_name": "adapters/base.py", + "file_type": "rationale", + "norm_label": "ozon statement contract: text-layer pdf, per-page line scanning.", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L31" + }, + { + "id": "frontend_src_hooks_usebudget", + "label": "useBudget.ts", + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "usebudget.ts", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_budgetpage", + "label": "BudgetPage.tsx", + "_origin": "ast", + "community": 22, + "community_name": "BudgetPage.tsx", + "file_type": "code", + "norm_label": "budgetpage.tsx", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_api_client", + "label": "client.ts", + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "client.ts", + "source_file": "frontend/src/api/client.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_api_client_apiclient", + "label": "apiClient", + "_origin": "ast", + "community": 23, + "community_name": "client.ts", + "file_type": "code", + "norm_label": "apiclient", + "source_file": "frontend/src/api/client.ts", + "source_location": "L113" + }, + { + "id": "frontend_src_components_ui_fields", + "label": "fields.tsx", + "_origin": "ast", + "community": 24, + "community_name": "fields.tsx", + "file_type": "code", + "norm_label": "fields.tsx", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L1" + }, + { + "id": "frontend_package_scripts", + "label": "scripts", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "scripts", + "source_file": "frontend/package.json", + "source_location": "L6" + }, + { + "id": "frontend_package_scripts_api_generate", + "label": "api:generate", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "api:generate", + "source_file": "frontend/package.json", + "source_location": "L14" + }, + { + "id": "frontend_package_scripts_build", + "label": "build", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "build", + "source_file": "frontend/package.json", + "source_location": "L8" + }, + { + "id": "frontend_package_scripts_dev", + "label": "dev", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "dev", + "source_file": "frontend/package.json", + "source_location": "L7" + }, + { + "id": "frontend_package_scripts_lint", + "label": "lint", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "lint", + "source_file": "frontend/package.json", + "source_location": "L11" + }, + { + "id": "frontend_package_scripts_preview", + "label": "preview", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "preview", + "source_file": "frontend/package.json", + "source_location": "L9" + }, + { + "id": "frontend_package_scripts_test", + "label": "test", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "test", + "source_file": "frontend/package.json", + "source_location": "L12" + }, + { + "id": "frontend_package_scripts_test_watch", + "label": "test:watch", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "test:watch", + "source_file": "frontend/package.json", + "source_location": "L13" + }, + { + "id": "frontend_package_scripts_typecheck", + "label": "typecheck", + "_origin": "ast", + "community": 27, + "community_name": "scripts", + "file_type": "code", + "norm_label": "typecheck", + "source_file": "frontend/package.json", + "source_location": "L10" + }, + { + "id": "backend_app_audit_init", + "label": "audit/__init__.py", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "audit/__init__.py", + "source_file": "backend/app/audit/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_dependencies", + "label": "dependencies.py", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "dependencies.py", + "source_file": "backend/app/dependencies.py", + "source_location": "L1" + }, + { + "id": "backend_app_dependencies_py_context", + "label": "Context", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_dependencies_py_currentsession", + "label": "CurrentSession", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "currentsession", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_dependencies_py_header", + "label": "Header", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "header", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_errors_py_any", + "label": "Any", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_service", + "label": "spaces/service.py", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "spaces/service.py", + "source_file": "backend/app/spaces/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_spaces_service_py_user", + "label": "User", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 28, + "community_name": "dependencies.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_db_session", + "label": "session.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "session.py", + "source_file": "backend/app/db/session.py", + "source_location": "L1" + }, + { + "id": "backend_app_db_session_py_any", + "label": "Any", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_db_session_py_sessionmaker", + "label": "sessionmaker", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "sessionmaker", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_init", + "label": "exports/__init__.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "exports/__init__.py", + "source_file": "backend/app/exports/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_router", + "label": "exports/router.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "exports/router.py", + "source_file": "backend/app/exports/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_csrf", + "label": "Csrf", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "csrf", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_get", + "label": "get", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_post", + "label": "post", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_response", + "label": "Response", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "response", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_router_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_tasks", + "label": "exports/tasks.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "exports/tasks.py", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L1" + }, + { + "id": "backend_app_exports_tasks_py_task", + "label": "task", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_exports_tasks_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_main", + "label": "main.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "main.py", + "source_file": "backend/app/main.py", + "source_location": "L1" + }, + { + "id": "backend_app_main_py_get", + "label": "get", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_main_py_request", + "label": "Request", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "request", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_conftest", + "label": "conftest.py", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "conftest.py", + "source_file": "backend/tests/conftest.py", + "source_location": "L1" + }, + { + "id": "backend_tests_conftest_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_conftest_py_sessionmaker", + "label": "sessionmaker", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "sessionmaker", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_conftest_py_testclient", + "label": "TestClient", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "testclient", + "source_file": "", + "source_location": "" + }, + { + "id": "engine", + "label": "Engine", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "engine", + "source_file": "", + "source_location": "" + }, + { + "id": "exception_handler", + "label": "exception_handler", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "exception_handler", + "source_file": "", + "source_location": "" + }, + { + "id": "jsonresponse", + "label": "JSONResponse", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "jsonresponse", + "source_file": "", + "source_location": "" + }, + { + "id": "middleware", + "label": "middleware", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "middleware", + "source_file": "", + "source_location": "" + }, + { + "id": "staledataerror", + "label": "StaleDataError", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "code", + "norm_label": "staledataerror", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_db_session_rationale_50", + "label": "Transaction-local RLS context. No-op on SQLite (tests); fail-closed on\u2026", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "rationale", + "norm_label": "transaction-local rls context. no-op on sqlite (tests); fail-closed on...", + "source_file": "backend/app/db/session.py", + "source_location": "L50" + }, + { + "id": "backend_app_db_session_rationale_60", + "label": "Transactional scope for workers/endpoints that own the transaction lifecycle.", + "_origin": "ast", + "community": 3, + "community_name": "set_space_context", + "file_type": "rationale", + "norm_label": "transactional scope for workers/endpoints that own the transaction lifecycle.", + "source_file": "backend/app/db/session.py", + "source_location": "L60" + }, + { + "id": "backend_app_imports_adapters_base_py_protocol", + "label": "Protocol", + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "protocol", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_adapters_init", + "label": "adapters/__init__.py", + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "adapters/__init__.py", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_adapter_contracts", + "label": "test_adapter_contracts.py", + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "test_adapter_contracts.py", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L1" + }, + { + "id": "workbook", + "label": "Workbook", + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "code", + "norm_label": "workbook", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_adapter_contracts_rationale_1", + "label": "Sanitized synthetic contract tests for the evidenced statement adapters. These\u2026", + "_origin": "ast", + "community": 30, + "community_name": "test_adapter_contracts.py", + "file_type": "rationale", + "norm_label": "sanitized synthetic contract tests for the evidenced statement adapters. these...", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L1" + }, + { + "id": "frontend_package", + "label": "package.json", + "_origin": "ast", + "community": 36, + "community_name": "package.json", + "file_type": "code", + "norm_label": "package.json", + "source_file": "frontend/package.json", + "source_location": "L1" + }, + { + "id": "frontend_package_name", + "label": "name", + "_origin": "ast", + "community": 36, + "community_name": "package.json", + "file_type": "code", + "norm_label": "name", + "source_file": "frontend/package.json", + "source_location": "L2" + }, + { + "id": "frontend_package_private", + "label": "private", + "_origin": "ast", + "community": 36, + "community_name": "package.json", + "file_type": "code", + "norm_label": "private", + "source_file": "frontend/package.json", + "source_location": "L3" + }, + { + "id": "frontend_package_type", + "label": "type", + "_origin": "ast", + "community": 36, + "community_name": "package.json", + "file_type": "code", + "norm_label": "type", + "source_file": "frontend/package.json", + "source_location": "L5" + }, + { + "id": "frontend_package_version", + "label": "version", + "_origin": "ast", + "community": 36, + "community_name": "package.json", + "file_type": "code", + "norm_label": "version", + "source_file": "frontend/package.json", + "source_location": "L4" + }, + { + "id": "frontend_scripts_generate_api", + "label": "generate-api.mjs", + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "generate-api.mjs", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L1" + }, + { + "id": "frontend_scripts_generate_api_local_candidates", + "label": "LOCAL_CANDIDATES", + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "local_candidates", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L7" + }, + { + "id": "frontend_scripts_generate_api_out_dir", + "label": "OUT_DIR", + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "out_dir", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L6" + }, + { + "id": "frontend_scripts_generate_api_remote_candidates", + "label": "REMOTE_CANDIDATES", + "_origin": "ast", + "community": 39, + "community_name": "generate-api.mjs", + "file_type": "code", + "norm_label": "remote_candidates", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L11" + }, + { + "id": "backend_app_imports_init", + "label": "imports/__init__.py", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "imports/__init__.py", + "source_file": "backend/app/imports/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_router", + "label": "imports/router.py", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "imports/router.py", + "source_file": "backend/app/imports/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_router_py_alias", + "label": "alias", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "alias", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_any", + "label": "Any", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_basemodel", + "label": "BaseModel", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "basemodel", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_csrf", + "label": "Csrf", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "csrf", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_delete", + "label": "delete", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "delete", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_get", + "label": "get", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_patch", + "label": "patch", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "patch", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_post", + "label": "post", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_router_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_tasks", + "label": "imports/tasks.py", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "imports/tasks.py", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_tasks_py_task", + "label": "task", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "task", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_tasks_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "file", + "label": "File", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "file", + "source_file": "", + "source_location": "" + }, + { + "id": "form", + "label": "Form", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "form", + "source_file": "", + "source_location": "" + }, + { + "id": "uploadfile", + "label": "UploadFile", + "_origin": "ast", + "community": 4, + "community_name": "imports/router.py", + "file_type": "code", + "norm_label": "uploadfile", + "source_file": "", + "source_location": "" + }, + { + "id": "frontend_src_api_generated_schema_d", + "label": "schema.d.ts", + "_origin": "ast", + "community": 40, + "community_name": "schema.d.ts", + "file_type": "code", + "norm_label": "schema.d.ts", + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L1" + }, + { + "id": "backend_tests_test_api", + "label": "test_api.py", + "_origin": "ast", + "community": 41, + "community_name": "test_api.py", + "file_type": "code", + "norm_label": "test_api.py", + "source_file": "backend/tests/test_api.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_api_py_testclient", + "label": "TestClient", + "_origin": "ast", + "community": 41, + "community_name": "test_api.py", + "file_type": "code", + "norm_label": "testclient", + "source_file": "", + "source_location": "" + }, + { + "id": "frontend_src_test_i18n_parity_test", + "label": "i18n-parity.test.ts", + "_origin": "ast", + "community": 42, + "community_name": "i18n-parity.test.ts", + "file_type": "code", + "norm_label": "i18n-parity.test.ts", + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_test_i18n_parity_test_enkeys", + "label": "enKeys", + "_origin": "ast", + "community": 42, + "community_name": "i18n-parity.test.ts", + "file_type": "code", + "norm_label": "enkeys", + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L30" + }, + { + "id": "frontend_src_test_i18n_parity_test_rukeys", + "label": "ruKeys", + "_origin": "ast", + "community": 42, + "community_name": "i18n-parity.test.ts", + "file_type": "code", + "norm_label": "rukeys", + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L29" + }, + { + "id": "backend_app_imports_service_py_any", + "label": "Any", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_private_fixtures", + "label": "test_private_fixtures.py", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "test_private_fixtures.py", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_private_fixtures_py_fixture", + "label": "fixture", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "fixture", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_private_fixtures_py_path", + "label": "Path", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" + }, + { + "id": "fixturerequest", + "label": "FixtureRequest", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "code", + "norm_label": "fixturerequest", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_service_rationale_171", + "label": "Reconcile parsed rows against declared bank controls with stable diagnostics.\u2026", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "rationale", + "norm_label": "reconcile parsed rows against declared bank controls with stable diagnostics....", + "source_file": "backend/app/imports/service.py", + "source_location": "L171" + }, + { + "id": "backend_tests_test_private_fixtures_rationale_1", + "label": "Private real-statement suite (marker: private_fixtures). Runs only when invoked\u2026", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "rationale", + "norm_label": "private real-statement suite (marker: private_fixtures). runs only when invoked...", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L1" + }, + { + "id": "backend_tests_test_private_fixtures_rationale_35", + "label": "Resolve fixture entries. Returns (directory, entries, explicit_error). An\u2026", + "_origin": "ast", + "community": 44, + "community_name": "test_private_fixtures.py", + "file_type": "rationale", + "norm_label": "resolve fixture entries. returns (directory, entries, explicit_error). an...", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L35" + }, + { + "id": "frontend_package_devdependencies_jsdom", + "label": "jsdom", + "_origin": "ast", + "community": 46, + "community_name": "jsdom", + "file_type": "code", + "norm_label": "jsdom", + "source_file": "frontend/package.json", + "source_location": "L40" + }, + { + "id": "jsdom", + "label": "jsdom", + "_origin": "ast", + "community": 46, + "community_name": "jsdom", + "file_type": "concept", + "norm_label": "jsdom", + "source_file": "frontend/package.json", + "source_location": "L40" + }, + { + "id": "kilo_kilo", + "label": "kilo.json", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "kilo.json", + "source_file": ".kilo/kilo.json", + "source_location": "L1" + }, + { + "id": "kilo_kilo_graphify_command", + "label": "command", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "command", + "source_file": ".kilo/kilo.json", + "source_location": "L9" + }, + { + "id": "kilo_kilo_graphify_enabled", + "label": "enabled", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "enabled", + "source_file": ".kilo/kilo.json", + "source_location": "L13" + }, + { + "id": "kilo_kilo_graphify_timeout", + "label": "timeout", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "timeout", + "source_file": ".kilo/kilo.json", + "source_location": "L14" + }, + { + "id": "kilo_kilo_graphify_type", + "label": "type", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "type", + "source_file": ".kilo/kilo.json", + "source_location": "L8" + }, + { + "id": "kilo_kilo_mcp", + "label": "mcp", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "mcp", + "source_file": ".kilo/kilo.json", + "source_location": "L6" + }, + { + "id": "kilo_kilo_mcp_graphify", + "label": "graphify", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "graphify", + "source_file": ".kilo/kilo.json", + "source_location": "L7" + }, + { + "id": "kilo_kilo_plugin", + "label": "plugin", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "plugin", + "source_file": ".kilo/kilo.json", + "source_location": "L3" + }, + { + "id": "kilo_kilo_schema", + "label": "$schema", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "code", + "norm_label": "$schema", + "source_file": ".kilo/kilo.json", + "source_location": "L2" + }, + { + "id": "ref_file_home_k1nq_repos_finance_kilo_plugins_graphify_js", + "label": "file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "concept", + "norm_label": "file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js", + "source_file": ".kilo/kilo.json", + "source_location": "L3" + }, + { + "id": "ref_home_k1nq_local_bin_graphify_mcp", + "label": "/home/k1nq/.local/bin/graphify-mcp", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "concept", + "norm_label": "/home/k1nq/.local/bin/graphify-mcp", + "source_file": ".kilo/kilo.json", + "source_location": "L9" + }, + { + "id": "ref_home_k1nq_repos_finance_graphify_out_graph_json", + "label": "/home/k1nq/repos/finance/graphify-out/graph.json", + "_origin": "ast", + "community": 47, + "community_name": "graphify", + "file_type": "concept", + "norm_label": "/home/k1nq/repos/finance/graphify-out/graph.json", + "source_file": ".kilo/kilo.json", + "source_location": "L9" + }, + { + "id": "frontend_package_devdependencies_types_react_dom", + "label": "@types/react-dom", + "_origin": "ast", + "community": 48, + "community_name": "@types/react-dom", + "file_type": "code", + "norm_label": "@types/react-dom", + "source_file": "frontend/package.json", + "source_location": "L34" + }, + { + "id": "types_react_dom", + "label": "@types/react-dom", + "_origin": "ast", + "community": 48, + "community_name": "@types/react-dom", + "file_type": "concept", + "norm_label": "@types/react-dom", + "source_file": "frontend/package.json", + "source_location": "L34" + }, + { + "id": "frontend_package_devdependencies_typescript_eslint", + "label": "typescript-eslint", + "_origin": "ast", + "community": 49, + "community_name": "typescript-eslint", + "file_type": "code", + "norm_label": "typescript-eslint", + "source_file": "frontend/package.json", + "source_location": "L43" + }, + { + "id": "typescript_eslint", + "label": "typescript-eslint", + "_origin": "ast", + "community": 49, + "community_name": "typescript-eslint", + "file_type": "concept", + "norm_label": "typescript-eslint", + "source_file": "frontend/package.json", + "source_location": "L43" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx", + "label": "alfa_xlsx.py", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "alfa_xlsx.py", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_py_date", + "label": "date", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "typeddict", + "label": "TypedDict", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "code", + "norm_label": "typeddict", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_rationale_210", + "label": "Alfa debit statement contract, evidenced against the real export layout.\u2026", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "rationale", + "norm_label": "alfa debit statement contract, evidenced against the real export layout....", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L210" + }, + { + "id": "backend_app_imports_adapters_alfa_xlsx_rationale_34", + "label": "Alfa statement contract: XLSX with a header row and bank marker '\u0410\u043b\u044c\u0444\u0430'.", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "rationale", + "norm_label": "alfa statement contract: xlsx with a header row and bank marker '\u0430\u043b\u044c\u0444\u0430'.", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L34" + }, + { + "id": "backend_app_imports_adapters_base_rationale_67", + "label": "Stable diagnostic for unknown bank layouts; never guesses.", + "_origin": "ast", + "community": 5, + "community_name": "alfa_xlsx.py", + "file_type": "rationale", + "norm_label": "stable diagnostic for unknown bank layouts; never guesses.", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L67" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf", + "label": "rocketbank_pdf.py", + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "rocketbank_pdf.py", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_py_date", + "label": "date", + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_adapters_rocketbank_pdf_rationale_53", + "label": "Rocketbank debit statement contract, evidenced against the real document.\u2026", + "_origin": "ast", + "community": 50, + "community_name": "rocketbank_pdf.py", + "file_type": "rationale", + "norm_label": "rocketbank debit statement contract, evidenced against the real document....", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L53" + }, + { + "id": "frontend_package_devdependencies_vitest", + "label": "vitest", + "_origin": "ast", + "community": 51, + "community_name": "vitest", + "file_type": "code", + "norm_label": "vitest", + "source_file": "frontend/package.json", + "source_location": "L45" + }, + { + "id": "vitest", + "label": "vitest", + "_origin": "ast", + "community": 51, + "community_name": "vitest", + "file_type": "concept", + "norm_label": "vitest", + "source_file": "frontend/package.json", + "source_location": "L45" + }, + { + "id": "infra_postgres_init_app_role", + "label": "init-app-role.sh", + "_origin": "ast", + "community": 53, + "community_name": "init-app-role.sh", + "file_type": "code", + "metadata": { + "language": "bash", + "kind": "file" + }, + "norm_label": "init-app-role.sh", + "source_file": "infra/postgres/init-app-role.sh", + "source_location": "L1" + }, + { + "id": "infra_postgres_init_app_role_sh__entry", + "label": "init-app-role.sh script", + "_origin": "ast", + "community": 53, + "community_name": "init-app-role.sh", + "file_type": "code", + "metadata": { + "language": "bash", + "kind": "bash_entrypoint" + }, + "norm_label": "init-app-role.sh script", + "source_file": "infra/postgres/init-app-role.sh", + "source_location": "L1" + }, + { + "id": "backend_app_init", + "label": "app/__init__.py", + "_origin": "ast", + "community": 54, + "community_name": "app/__init__.py", + "file_type": "code", + "norm_label": "app/__init__.py", + "source_file": "backend/app/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_spaces_init", + "label": "spaces/__init__.py", + "_origin": "ast", + "community": 55, + "community_name": "spaces/__init__.py", + "file_type": "code", + "norm_label": "spaces/__init__.py", + "source_file": "backend/app/spaces/__init__.py", + "source_location": "L1" + }, + { + "id": "frontend_eslint_config", + "label": "eslint.config.js", + "_origin": "ast", + "community": 57, + "community_name": "eslint.config.js", + "file_type": "code", + "norm_label": "eslint.config.js", + "source_file": "frontend/eslint.config.js", + "source_location": "L1" + }, + { + "id": "frontend_src_test_money_test", + "label": "money.test.ts", + "_origin": "ast", + "community": 58, + "community_name": "money.test.ts", + "file_type": "code", + "norm_label": "money.test.ts", + "source_file": "frontend/src/test/money.test.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_vite_env_d", + "label": "vite-env.d.ts", + "_origin": "ast", + "community": 59, + "community_name": "vite-env.d.ts", + "file_type": "code", + "norm_label": "vite-env.d.ts", + "source_file": "frontend/src/vite-env.d.ts", + "source_location": "L1" + }, + { + "id": "backend_app_audit_service", + "label": "audit/service.py", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "audit/service.py", + "source_file": "backend/app/audit/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_audit_service_py_any", + "label": "Any", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_db_base_py_datetime", + "label": "datetime", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "datetime", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_blob", + "label": "blob.py", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "blob.py", + "source_file": "backend/app/imports/blob.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_blob_py_protocol", + "label": "Protocol", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "protocol", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_service", + "label": "imports/service.py", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "imports/service.py", + "source_file": "backend/app/imports/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_service_py_user", + "label": "User", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_service", + "label": "ledger/service.py", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "ledger/service.py", + "source_file": "backend/app/ledger/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_ledger_service_py_account", + "label": "Account", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "account", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_service_py_any", + "label": "Any", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_service_py_date", + "label": "date", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_service_py_user", + "label": "User", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_ledger_properties", + "label": "test_ledger_properties.py", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "test_ledger_properties.py", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L1" + }, + { + "id": "decimal", + "label": "Decimal", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "decimal", + "source_file": "", + "source_location": "" + }, + { + "id": "given", + "label": "given", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "given", + "source_file": "", + "source_location": "" + }, + { + "id": "operation", + "label": "Operation", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "operation", + "source_file": "", + "source_location": "" + }, + { + "id": "settings", + "label": "settings", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "code", + "norm_label": "settings", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_service_rationale_331", + "label": "Conservatively match unresolved confirmed-doc HOLDs to new posted records.\u2026", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "rationale", + "norm_label": "conservatively match unresolved confirmed-doc holds to new posted records....", + "source_file": "backend/app/imports/service.py", + "source_location": "L331" + }, + { + "id": "backend_app_imports_service_rationale_719", + "label": "Manually settle one HOLD: book it as a normal operation or discard it.", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "rationale", + "norm_label": "manually settle one hold: book it as a normal operation or discard it.", + "source_file": "backend/app/imports/service.py", + "source_location": "L719" + }, + { + "id": "backend_app_ledger_models_rationale_126", + "label": "Signed balance change of one account within one operation. Sign convention\u2026", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "rationale", + "norm_label": "signed balance change of one account within one operation. sign convention...", + "source_file": "backend/app/ledger/models.py", + "source_location": "L126" + }, + { + "id": "backend_app_ledger_service_rationale_126", + "label": "Precedence: explicit choice (already set) > confirmed payee rule.", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "rationale", + "norm_label": "precedence: explicit choice (already set) > confirmed payee rule.", + "source_file": "backend/app/ledger/service.py", + "source_location": "L126" + }, + { + "id": "backend_app_ledger_service_rationale_20", + "label": "Convert a decimal ruble amount to integer kopecks. Floats are rejected upstream.", + "_origin": "ast", + "community": 6, + "community_name": "imports/service.py", + "file_type": "rationale", + "norm_label": "convert a decimal ruble amount to integer kopecks. floats are rejected upstream.", + "source_file": "backend/app/ledger/service.py", + "source_location": "L20" + }, + { + "id": "frontend_vite_config", + "label": "vite.config.ts", + "_origin": "ast", + "community": 60, + "community_name": "vite.config.ts", + "file_type": "code", + "norm_label": "vite.config.ts", + "source_file": "frontend/vite.config.ts", + "source_location": "L1" + }, + { + "id": "pkg_finance_backend", + "label": "finance-backend", + "_origin": "ast", + "community": 61, + "community_name": "finance-backend", + "ecosystem": "python", + "file_type": "code", + "norm_label": "finance-backend", + "source_file": "backend/pyproject.toml", + "source_location": "L1", + "type": "package", + "version": "0.1.0" + }, + { + "id": "backend_app_imports_blob_py_path", + "label": "Path", + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "code", + "norm_label": "path", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_blob_rationale_18", + "label": "S3-neutral local store; production swaps in an S3-compatible client.", + "_origin": "ast", + "community": 62, + "community_name": "LocalDirectoryBlobStore", + "file_type": "rationale", + "norm_label": "s3-neutral local store; production swaps in an s3-compatible client.", + "source_file": "backend/app/imports/blob.py", + "source_location": "L18" + }, + { + "id": "monkeypatch", + "label": "MonkeyPatch", + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "code", + "norm_label": "monkeypatch", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_tests_test_adapter_contracts_rationale_771", + "label": "Build a small valid single-font PDF with empty or ASCII-only pages.", + "_origin": "ast", + "community": 63, + "community_name": "TestOzonDebitContract", + "file_type": "rationale", + "norm_label": "build a small valid single-font pdf with empty or ascii-only pages.", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L771" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports", + "label": "1789727434954-gitea-ci-real-statement-imports.md", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "page", + "norm_label": "1789727434954-gitea-ci-real-statement-imports.md", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L1" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_confirmed_decisions", + "label": "Confirmed decisions", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "confirmed decisions", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L12" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "label": "Gitea CI and real statement imports", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "gitea ci and real statement imports", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L1" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_goal_and_constraints", + "label": "Goal and constraints", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "goal and constraints", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L3" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_implementation_plan", + "label": "Implementation plan", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "implementation plan", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L22" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_principal_risks", + "label": "Principal risks", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "principal risks", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L79" + }, + { + "id": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_validation_and_rollout", + "label": "Validation and rollout", + "_origin": "ast", + "community": 64, + "community_name": "Gitea CI and real statement imports", + "file_type": "document", + "node_kind": "heading", + "norm_label": "validation and rollout", + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L70" + }, + { + "id": "backend_alembic_versions_20260918_0002_hold_lifecycle", + "label": "20260918_0002_hold_lifecycle.py", + "_origin": "ast", + "community": 65, + "community_name": "20260918_0002_hold_lifecycle.py", + "file_type": "code", + "norm_label": "20260918_0002_hold_lifecycle.py", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L1" + }, + { + "id": "frontend_package_devdependencies_eslint_plugin_react_hooks", + "label": "eslint-plugin-react-hooks", + "_origin": "ast", + "community": 66, + "community_name": "eslint-plugin-react-hooks", + "file_type": "code", + "norm_label": "eslint-plugin-react-hooks", + "source_file": "frontend/package.json", + "source_location": "L38" + }, + { + "id": "eslint_plugin_react_hooks", + "label": "eslint-plugin-react-hooks", + "_origin": "ast", + "community": 66, + "community_name": "eslint-plugin-react-hooks", + "file_type": "concept", + "norm_label": "eslint-plugin-react-hooks", + "source_file": "frontend/package.json", + "source_location": "L38" + }, + { + "id": "frontend_package_devdependencies_openapi_typescript", + "label": "openapi-typescript", + "_origin": "ast", + "community": 67, + "community_name": "openapi-typescript", + "file_type": "code", + "norm_label": "openapi-typescript", + "source_file": "frontend/package.json", + "source_location": "L41" + }, + { + "id": "openapi_typescript", + "label": "openapi-typescript", + "_origin": "ast", + "community": 67, + "community_name": "openapi-typescript", + "file_type": "concept", + "norm_label": "openapi-typescript", + "source_file": "frontend/package.json", + "source_location": "L41" + }, + { + "id": "frontend_package_devdependencies_testing_library_dom", + "label": "@testing-library/dom", + "_origin": "ast", + "community": 68, + "community_name": "@testing-library/dom", + "file_type": "code", + "norm_label": "@testing-library/dom", + "source_file": "frontend/package.json", + "source_location": "L29" + }, + { + "id": "testing_library_dom", + "label": "@testing-library/dom", + "_origin": "ast", + "community": 68, + "community_name": "@testing-library/dom", + "file_type": "concept", + "norm_label": "@testing-library/dom", + "source_file": "frontend/package.json", + "source_location": "L29" + }, + { + "id": "frontend_package_devdependencies_testing_library_react", + "label": "@testing-library/react", + "_origin": "ast", + "community": 69, + "community_name": "@testing-library/react", + "file_type": "code", + "norm_label": "@testing-library/react", + "source_file": "frontend/package.json", + "source_location": "L31" + }, + { + "id": "testing_library_react", + "label": "@testing-library/react", + "_origin": "ast", + "community": 69, + "community_name": "@testing-library/react", + "file_type": "concept", + "norm_label": "@testing-library/react", + "source_file": "frontend/package.json", + "source_location": "L31" + }, + { + "id": "frontend_src_api_endpoints", + "label": "endpoints.ts", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "endpoints.ts", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_api_endpoints_api", + "label": "api", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "api", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L27" + }, + { + "id": "frontend_src_api_types", + "label": "types.ts", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "types.ts", + "source_file": "frontend/src/api/types.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_test_accounts_page_test", + "label": "accounts-page.test.tsx", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "accounts-page.test.tsx", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_accounts_page_test_createmock", + "label": "createMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "createmock", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L19" + }, + { + "id": "frontend_src_test_accounts_page_test_listmock", + "label": "listMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "listmock", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L18" + }, + { + "id": "frontend_src_test_budget_plan_test", + "label": "budget-plan.test.tsx", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "budget-plan.test.tsx", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_budget_plan_test_categories", + "label": "categories", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "categories", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L43" + }, + { + "id": "frontend_src_test_budget_plan_test_categoriesmock", + "label": "categoriesMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "categoriesmock", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L24" + }, + { + "id": "frontend_src_test_budget_plan_test_month", + "label": "month", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "month", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L27" + }, + { + "id": "frontend_src_test_budget_plan_test_summary", + "label": "summary", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "summary", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L29" + }, + { + "id": "frontend_src_test_budget_plan_test_summarymock", + "label": "summaryMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "summarymock", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_test_budget_plan_test_updateplanmock", + "label": "updatePlanMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "updateplanmock", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L25" + }, + { + "id": "frontend_src_test_helpers", + "label": "helpers.tsx", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "helpers.tsx", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_import_polling_test", + "label": "import-polling.test.tsx", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "import-polling.test.tsx", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_import_polling_test_getimport", + "label": "getImport", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "getimport", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L23" + }, + { + "id": "frontend_src_test_login_page_test", + "label": "login-page.test.tsx", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "login-page.test.tsx", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_test_login_page_test_loginmock", + "label": "loginMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "loginmock", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L22" + }, + { + "id": "frontend_src_test_login_page_test_memock", + "label": "meMock", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "memock", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L21" + }, + { + "id": "frontend_src_test_login_page_test_user", + "label": "user", + "_origin": "ast", + "community": 7, + "community_name": "types.ts", + "file_type": "code", + "norm_label": "user", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L24" + }, + { + "id": "frontend_package_devdependencies_vite", + "label": "vite", + "_origin": "ast", + "community": 70, + "community_name": "vite", + "file_type": "code", + "norm_label": "vite", + "source_file": "frontend/package.json", + "source_location": "L44" + }, + { + "id": "vite", + "label": "vite", + "_origin": "ast", + "community": 70, + "community_name": "vite", + "file_type": "concept", + "norm_label": "vite", + "source_file": "frontend/package.json", + "source_location": "L44" + }, + { + "id": "backend_app_identity_init", + "label": "identity/__init__.py", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "identity/__init__.py", + "source_file": "backend/app/identity/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_spaces_router", + "label": "spaces/router.py", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "spaces/router.py", + "source_file": "backend/app/spaces/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_spaces_router_py_alias", + "label": "alias", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "alias", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_basemodel", + "label": "BaseModel", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "basemodel", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_csrf", + "label": "Csrf", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "csrf", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_currentsession", + "label": "CurrentSession", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "currentsession", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_delete", + "label": "delete", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "delete", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_get", + "label": "get", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_header", + "label": "Header", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "header", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_spaces_router_py_post", + "label": "post", + "_origin": "ast", + "community": 71, + "community_name": "spaces/router.py", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_service", + "label": "identity/service.py", + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "identity/service.py", + "source_file": "backend/app/identity/service.py", + "source_location": "L1" + }, + { + "id": "backend_app_identity_service_py_user", + "label": "User", + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_service_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_security", + "label": "security.py", + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "security.py", + "source_file": "backend/app/security.py", + "source_location": "L1" + }, + { + "id": "dbsession", + "label": "DbSession", + "_origin": "ast", + "community": 72, + "community_name": "identity/service.py", + "file_type": "code", + "norm_label": "dbsession", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_imports_crypto", + "label": "crypto.py", + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "code", + "norm_label": "crypto.py", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_crypto_rationale_22", + "label": "Per-file random DEK; DEK wrapped with the KEK from the secret manager.", + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "rationale", + "norm_label": "per-file random dek; dek wrapped with the kek from the secret manager.", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L22" + }, + { + "id": "backend_app_imports_crypto_rationale_57", + "label": "Crypto-shred hook: deleting wrapped DEK rows in DB plus blobs removes access.", + "_origin": "ast", + "community": 73, + "community_name": "crypto.py", + "file_type": "rationale", + "norm_label": "crypto-shred hook: deleting wrapped dek rows in db plus blobs removes access.", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L57" + }, + { + "id": "backend_app_dependencies_py_alias", + "label": "alias", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "alias", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_dependencies_py_db", + "label": "Db", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_dependencies_py_user", + "label": "User", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "user", + "source_file": "", + "source_location": "" + }, + { + "id": "cookie", + "label": "Cookie", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "cookie", + "source_file": "", + "source_location": "" + }, + { + "id": "session_cookie_name", + "label": "session_cookie_name", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "session_cookie_name", + "source_file": "", + "source_location": "" + }, + { + "id": "usersession", + "label": "UserSession", + "_origin": "ast", + "community": 74, + "community_name": "current_session", + "file_type": "code", + "norm_label": "usersession", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_errors", + "label": "errors.py", + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "errors.py", + "source_file": "backend/app/errors.py", + "source_location": "L1" + }, + { + "id": "backend_app_imports_readers", + "label": "readers.py", + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "readers.py", + "source_file": "backend/app/imports/readers.py", + "source_location": "L1" + }, + { + "id": "exception", + "label": "Exception", + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "code", + "norm_label": "exception", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_errors_rationale_5", + "label": "Domain error rendered as a machine-readable JSON error payload.", + "_origin": "ast", + "community": 75, + "community_name": "AppError", + "file_type": "rationale", + "norm_label": "domain error rendered as a machine-readable json error payload.", + "source_file": "backend/app/errors.py", + "source_location": "L5" + }, + { + "id": "backend_app_identity_router_py_currentsession", + "label": "CurrentSession", + "_origin": "ast", + "community": 76, + "community_name": "me", + "file_type": "code", + "norm_label": "currentsession", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_identity_router_py_get", + "label": "get", + "_origin": "ast", + "community": 76, + "community_name": "me", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "agents", + "label": "AGENTS.md", + "_origin": "ast", + "community": 77, + "community_name": "AGENTS.md", + "file_type": "document", + "node_kind": "page", + "norm_label": "agents.md", + "source_file": "AGENTS.md", + "source_location": "L1" + }, + { + "id": "agents_graphify", + "label": "graphify", + "_origin": "ast", + "community": 77, + "community_name": "AGENTS.md", + "file_type": "document", + "node_kind": "heading", + "norm_label": "graphify", + "source_file": "AGENTS.md", + "source_location": "L1" + }, + { + "id": "kilo_plugins_graphify", + "label": "graphify.js", + "_origin": "ast", + "community": 78, + "community_name": "graphify.js", + "file_type": "code", + "norm_label": "graphify.js", + "source_file": ".kilo/plugins/graphify.js", + "source_location": "L1" + }, + { + "id": "frontend_src_app_router", + "label": "router.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "router.tsx", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_app_router_acceptinvitepage", + "label": "AcceptInvitePage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "acceptinvitepage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L7" + }, + { + "id": "frontend_src_app_router_accountspage", + "label": "AccountsPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "accountspage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L10" + }, + { + "id": "frontend_src_app_router_budgetpage", + "label": "BudgetPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "budgetpage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L16" + }, + { + "id": "frontend_src_app_router_loginpage", + "label": "LoginPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "loginpage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L25" + }, + { + "id": "frontend_src_app_router_operationspage", + "label": "OperationsPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "operationspage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L31" + }, + { + "id": "frontend_src_app_router_resetpasswordpage", + "label": "ResetPasswordPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "resetpasswordpage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L37" + }, + { + "id": "frontend_src_app_router_reviewqueuepage", + "label": "ReviewQueuePage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "reviewqueuepage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L34" + }, + { + "id": "frontend_src_app_router_settingspage", + "label": "SettingsPage", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "settingspage", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L40" + }, + { + "id": "frontend_src_components_layout_applayout", + "label": "AppLayout.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "applayout.tsx", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_components_layout_applayout_nav_items", + "label": "NAV_ITEMS", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "nav_items", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L7" + }, + { + "id": "frontend_src_components_layout_langswitcher", + "label": "LangSwitcher.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "langswitcher.tsx", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_hooks_useauth", + "label": "useAuth.ts", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "useauth.ts", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L1" + }, + { + "id": "frontend_src_i18n_index_locales", + "label": "LOCALES", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "locales", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L7" + }, + { + "id": "frontend_src_pages_acceptinvitepage", + "label": "AcceptInvitePage.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "acceptinvitepage.tsx", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_loginpage", + "label": "LoginPage.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "loginpage.tsx", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L1" + }, + { + "id": "frontend_src_pages_resetpasswordpage", + "label": "ResetPasswordPage.tsx", + "_origin": "ast", + "community": 8, + "community_name": "router.tsx", + "file_type": "code", + "norm_label": "resetpasswordpage.tsx", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L1" + }, + { + "id": "backend_app_categorization_init", + "label": "categorization/__init__.py", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "categorization/__init__.py", + "source_file": "backend/app/categorization/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_ledger_init", + "label": "ledger/__init__.py", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "ledger/__init__.py", + "source_file": "backend/app/ledger/__init__.py", + "source_location": "L1" + }, + { + "id": "backend_app_ledger_router", + "label": "ledger/router.py", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "ledger/router.py", + "source_file": "backend/app/ledger/router.py", + "source_location": "L1" + }, + { + "id": "backend_app_ledger_router_py_alias", + "label": "alias", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "alias", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_any", + "label": "Any", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "any", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_basemodel", + "label": "BaseModel", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "basemodel", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_context", + "label": "Context", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "context", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_csrf", + "label": "Csrf", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "csrf", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_date", + "label": "date", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "date", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_db", + "label": "Db", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "db", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_delete", + "label": "delete", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "delete", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_get", + "label": "get", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "get", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_header", + "label": "Header", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "header", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_patch", + "label": "patch", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "patch", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_post", + "label": "post", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "post", + "source_file": "", + "source_location": "" + }, + { + "id": "backend_app_ledger_router_py_uuid", + "label": "UUID", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "uuid", + "source_file": "", + "source_location": "" + }, + { + "id": "ge", + "label": "ge", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "ge", + "source_file": "", + "source_location": "" + }, + { + "id": "le", + "label": "le", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "le", + "source_file": "", + "source_location": "" + }, + { + "id": "query", + "label": "Query", + "_origin": "ast", + "community": 9, + "community_name": "ledger/router.py", + "file_type": "code", + "norm_label": "query", + "source_file": "", + "source_location": "" + }, + { + "id": "infra_docker_compose_commodity_services", + "label": "Commodity Infrastructure Services", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "commodity infrastructure services", + "source_file": "infra/docker-compose.yml", + "source_location": "lines 46-125", + "source_url": null + }, + { + "id": "infra_docker_compose_internal_backend_network", + "label": "Internal Backend Network", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "internal backend network", + "source_file": "infra/docker-compose.yml", + "source_location": "lines 163-222", + "source_url": null + }, + { + "id": "infra_docker_compose_same_origin_frontend", + "label": "Same-Origin Frontend Service", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "same-origin frontend service", + "source_file": "infra/docker-compose.yml", + "source_location": "lines 198-211", + "source_url": null + }, + { + "id": "infra_docker_compose_worker_isolation", + "label": "Worker Parsing Isolation", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "worker parsing isolation", + "source_file": "infra/docker-compose.yml", + "source_location": "lines 165-182", + "source_url": null + }, + { + "id": "infra_readme_same_origin_proxy", + "label": "Same-Origin Reverse Proxy", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "same-origin reverse proxy", + "source_file": "infra/README.md", + "source_location": "lines 25-30", + "source_url": null + }, + { + "id": "infra_readme_workstream_contracts", + "label": "Backend and Frontend Workstream Contracts", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "concept", + "norm_label": "backend and frontend workstream contracts", + "source_file": "infra/README.md", + "source_location": "lines 40-55", + "source_url": null + }, + { + "id": "infra_docker_compose_docker_compose_stack", + "label": "Docker Compose Development Stack", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "document", + "norm_label": "docker compose development stack", + "source_file": "infra/docker-compose.yml", + "source_location": "lines 1-222", + "source_url": null + }, + { + "id": "infra_readme_infrastructure", + "label": "Finance Infrastructure", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 25, + "community_name": "Docker Compose Development Stack", + "contributor": null, + "file_type": "document", + "norm_label": "finance infrastructure", + "source_file": "infra/README.md", + "source_location": "lines 1-69", + "source_url": null + }, + { + "id": "context_credit_reserve", + "label": "Credit Reserve", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "credit reserve", + "source_file": "CONTEXT.md", + "source_location": "line 21", + "source_url": null + }, + { + "id": "context_financial_account", + "label": "Financial Account", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "financial account", + "source_file": "CONTEXT.md", + "source_location": "line 6", + "source_url": null + }, + { + "id": "context_financial_space", + "label": "Financial Space", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "financial space", + "source_file": "CONTEXT.md", + "source_location": "line 4", + "source_url": null + }, + { + "id": "context_membership", + "label": "Membership", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "membership", + "source_file": "CONTEXT.md", + "source_location": "line 5", + "source_url": null + }, + { + "id": "context_user", + "label": "User", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "user", + "source_file": "CONTEXT.md", + "source_location": "line 3", + "source_url": null + }, + { + "id": "docs_adr_0002_journal_and_budget_reserves_budget_reserves", + "label": "Carry-Over Budget Reserves", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "carry-over budget reserves", + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "source_url": null + }, + { + "id": "docs_adr_0004_provider_neutral_encrypted_data_boundary_rf_data_residency", + "label": "Russian Federation Data Residency", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "russian federation data residency", + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "lines 9-13", + "source_url": null + }, + { + "id": "infra_readme_provider_neutral_infrastructure", + "label": "Provider-Neutral Infrastructure", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "provider-neutral infrastructure", + "source_file": "infra/README.md", + "source_location": "lines 64-69", + "source_url": null + }, + { + "id": "readme_closed_beta_budgeting", + "label": "Closed Beta Zero-Based Budgeting", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "concept", + "norm_label": "closed beta zero-based budgeting", + "source_file": "README.md", + "source_location": "lines 3-5", + "source_url": null + }, + { + "id": "readme_finance_tracker", + "label": "Finance Tracker", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "document", + "norm_label": "finance tracker", + "source_file": "README.md", + "source_location": "lines 1-56", + "source_url": null + }, + { + "id": "docs_adr_0004_provider_neutral_encrypted_data_boundary_provider_neutral_boundary", + "label": "Provider-Neutral Data Boundary", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "rationale", + "norm_label": "provider-neutral data boundary", + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "lines 1-29", + "source_url": null + }, + { + "id": "readme_production_boundary", + "label": "Production Data Boundary", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 26, + "community_name": "Financial Space", + "contributor": null, + "file_type": "rationale", + "norm_label": "production data boundary", + "source_file": "README.md", + "source_location": "lines 47-53", + "source_url": null + }, + { + "id": "context_budget_period", + "label": "Budget Period", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "budget period", + "source_file": "CONTEXT.md", + "source_location": "line 15", + "source_url": null + }, + { + "id": "context_funding", + "label": "Funding", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "funding", + "source_file": "CONTEXT.md", + "source_location": "line 18", + "source_url": null + }, + { + "id": "context_general_pool", + "label": "General Pool", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "general pool", + "source_file": "CONTEXT.md", + "source_location": "line 16", + "source_url": null + }, + { + "id": "context_monthly_category", + "label": "Monthly Category", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "monthly category", + "source_file": "CONTEXT.md", + "source_location": "line 19", + "source_url": null + }, + { + "id": "context_plan_assignment", + "label": "Plan Assignment", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "plan assignment", + "source_file": "CONTEXT.md", + "source_location": "line 17", + "source_url": null + }, + { + "id": "context_savings_envelope", + "label": "Savings Envelope", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "savings envelope", + "source_file": "CONTEXT.md", + "source_location": "line 20", + "source_url": null + }, + { + "id": "docs_adr_0002_journal_and_budget_reserves_closure_snapshots", + "label": "Immutable Closure Snapshots", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "immutable closure snapshots", + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 17-23", + "source_url": null + }, + { + "id": "docs_adr_0002_journal_and_budget_reserves_plan_funding_separation", + "label": "Plan and Funding Separation", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 29, + "community_name": "General Pool", + "contributor": null, + "file_type": "concept", + "norm_label": "plan and funding separation", + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "source_url": null + }, + { + "id": "docs_adr_0003_versioned_statement_imports_immutable_statement_document", + "label": "Immutable Statement Document", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "immutable statement document", + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 13-14", + "source_url": null + }, + { + "id": "docs_adr_0004_provider_neutral_encrypted_data_boundary_envelope_encryption", + "label": "Per-File Envelope Encryption", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "per-file envelope encryption", + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "line 14", + "source_url": null + }, + { + "id": "docs_operations_backup_and_restore_kek_backup", + "label": "Mandatory KEK Backup", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "mandatory kek backup", + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 16-18", + "source_url": null + }, + { + "id": "docs_operations_backup_and_restore_restore_drill", + "label": "Quarterly Restore Drill", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "quarterly restore drill", + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 31-38", + "source_url": null + }, + { + "id": "docs_operations_backup_and_restore_restore_procedure", + "label": "Disaster Restore Procedure", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "disaster restore procedure", + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 20-29", + "source_url": null + }, + { + "id": "docs_operations_deletion_ledger_post_restore_replay", + "label": "Post-Restore Deletion Replay", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "concept", + "norm_label": "post-restore deletion replay", + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 23-30", + "source_url": null + }, + { + "id": "docs_operations_backup_and_restore_backup_and_restore", + "label": "Backup and Restore Runbook", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 31, + "community_name": "Per-File Envelope Encryption", + "contributor": null, + "file_type": "document", + "norm_label": "backup and restore runbook", + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 1-38", + "source_url": null + }, + { + "id": "context_internal_transfer", + "label": "Internal Transfer", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "concept", + "norm_label": "internal transfer", + "source_file": "CONTEXT.md", + "source_location": "line 9", + "source_url": null + }, + { + "id": "context_operation", + "label": "Operation", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "concept", + "norm_label": "operation", + "source_file": "CONTEXT.md", + "source_location": "line 7", + "source_url": null + }, + { + "id": "context_posting", + "label": "Posting", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "concept", + "norm_label": "posting", + "source_file": "CONTEXT.md", + "source_location": "line 8", + "source_url": null + }, + { + "id": "context_refund", + "label": "Refund", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "concept", + "norm_label": "refund", + "source_file": "CONTEXT.md", + "source_location": "line 10", + "source_url": null + }, + { + "id": "docs_adr_0002_journal_and_budget_reserves_derived_balances", + "label": "Derived Account Balances", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "concept", + "norm_label": "derived account balances", + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 13-15", + "source_url": null + }, + { + "id": "docs_adr_0002_journal_and_budget_reserves_operations_postings_journal", + "label": "Operations and Postings Journal", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 32, + "community_name": "Operation", + "contributor": null, + "file_type": "rationale", + "norm_label": "operations and postings journal", + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 1-29", + "source_url": null + }, + { + "id": "context_parse_run", + "label": "Parse Run", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "parse run", + "source_file": "CONTEXT.md", + "source_location": "line 12", + "source_url": null + }, + { + "id": "context_source_record", + "label": "Source Record", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "source record", + "source_file": "CONTEXT.md", + "source_location": "line 13", + "source_url": null + }, + { + "id": "context_statement_import", + "label": "Statement Import", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "statement import", + "source_file": "CONTEXT.md", + "source_location": "line 11", + "source_url": null + }, + { + "id": "docs_adr_0003_versioned_statement_imports_atomic_confirm_revert", + "label": "Atomic Import Confirm and Revert", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "atomic import confirm and revert", + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 15", + "source_url": null + }, + { + "id": "docs_adr_0003_versioned_statement_imports_conservative_deduplication", + "label": "Conservative Deduplication", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "conservative deduplication", + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 16", + "source_url": null + }, + { + "id": "docs_adr_0003_versioned_statement_imports_parser_versioning", + "label": "Parser Versioning and Review Diff", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "parser versioning and review diff", + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 17-18", + "source_url": null + }, + { + "id": "docs_parsers_private_fixture_gate_layout_drift_regating", + "label": "Layout Drift Re-Gating", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "layout drift re-gating", + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 34-45", + "source_url": null + }, + { + "id": "docs_parsers_private_fixture_gate_private_statement_contract", + "label": "Private Statement Test Contract", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "private statement test contract", + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 7-17", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_import_pipeline", + "label": "Statement Import Pipeline", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "concept", + "norm_label": "statement import pipeline", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 159-176", + "source_url": null + }, + { + "id": "docs_parsers_private_fixture_gate_private_fixture_gate", + "label": "Parser Private Fixture Gate", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "document", + "norm_label": "parser private fixture gate", + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 1-45", + "source_url": null + }, + { + "id": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "label": "Versioned Statement Imports", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 33, + "community_name": "Versioned Statement Imports", + "contributor": null, + "file_type": "rationale", + "norm_label": "versioned statement imports", + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 1-30", + "source_url": null + }, + { + "id": "docs_adr_0004_provider_neutral_encrypted_data_boundary_secret_boundary", + "label": "Server-Side Secret Boundary", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "concept", + "norm_label": "server-side secret boundary", + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "lines 16-18", + "source_url": null + }, + { + "id": "frontend_readme_accessible_responsive_ui", + "label": "Accessible Responsive UI", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "concept", + "norm_label": "accessible responsive ui", + "source_file": "frontend/README.md", + "source_location": "lines 60-67", + "source_url": null + }, + { + "id": "frontend_readme_ru_en_localization", + "label": "RU and EN Localization", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "concept", + "norm_label": "ru and en localization", + "source_file": "frontend/README.md", + "source_location": "lines 3-14", + "source_url": null + }, + { + "id": "frontend_readme_space_scoped_query_keys", + "label": "Space-Scoped Query Keys", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "concept", + "norm_label": "space-scoped query keys", + "source_file": "frontend/README.md", + "source_location": "lines 52-58", + "source_url": null + }, + { + "id": "frontend_readme_typed_api_client", + "label": "Typed Same-Origin API Client", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "concept", + "norm_label": "typed same-origin api client", + "source_file": "frontend/README.md", + "source_location": "lines 35-50", + "source_url": null + }, + { + "id": "frontend_index_grossbukh_app_shell", + "label": "Grossbukh Application Shell", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "document", + "norm_label": "grossbukh application shell", + "source_file": "frontend/index.html", + "source_location": "lines 1-14", + "source_url": null + }, + { + "id": "frontend_readme_finance_frontend", + "label": "Finance Frontend SPA", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 34, + "community_name": "Finance Frontend SPA", + "contributor": null, + "file_type": "document", + "norm_label": "finance frontend spa", + "source_file": "frontend/README.md", + "source_location": "lines 1-70", + "source_url": null + }, + { + "id": "docs_adr_0004_provider_neutral_encrypted_data_boundary_crypto_shredding", + "label": "Crypto-Shredded Deletion", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "crypto-shredded deletion", + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "line 15", + "source_url": null + }, + { + "id": "docs_operations_beta_release_runbook_incident_response", + "label": "Financial Data Incident Response", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "financial data incident response", + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 32-35", + "source_url": null + }, + { + "id": "docs_operations_beta_release_runbook_launch_gates", + "label": "Closed Beta Launch Gates", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "closed beta launch gates", + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 6-17", + "source_url": null + }, + { + "id": "docs_operations_beta_release_runbook_launch_sequence", + "label": "Production Launch Sequence", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "production launch sequence", + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 19-24", + "source_url": null + }, + { + "id": "docs_operations_deletion_ledger_delayed_space_deletion", + "label": "Thirty-Day Space Deletion", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "thirty-day space deletion", + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 13-21", + "source_url": null + }, + { + "id": "docs_operations_deletion_ledger_idempotent_purge", + "label": "Idempotent Resumable Purge", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "idempotent resumable purge", + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 32-36", + "source_url": null + }, + { + "id": "docs_parsers_private_fixture_gate_adapter_beta_eligibility", + "label": "Adapter Beta Eligibility", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "adapter beta eligibility", + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 19-32", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_release_gates", + "label": "MVP Release Gates", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "concept", + "norm_label": "mvp release gates", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 256-275", + "source_url": null + }, + { + "id": "docs_operations_beta_release_runbook_closed_beta_release", + "label": "Closed Beta Release Runbook", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "document", + "norm_label": "closed beta release runbook", + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 1-40", + "source_url": null + }, + { + "id": "docs_operations_deletion_ledger_deletion_ledger", + "label": "Durable Deletion Ledger", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "document", + "norm_label": "durable deletion ledger", + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 1-36", + "source_url": null + }, + { + "id": "docs_operations_beta_release_runbook_forward_fix_rollback", + "label": "Forward-Fix Rollback Policy", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 35, + "community_name": "Closed Beta Launch Gates", + "contributor": null, + "file_type": "rationale", + "norm_label": "forward-fix rollback policy", + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 26-30", + "source_url": null + }, + { + "id": "docs_adr_0001_financial_space_ownership_and_rls_break_glass_access", + "label": "Audited Break-Glass Access", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "audited break-glass access", + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 20-26", + "source_url": null + }, + { + "id": "docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity", + "label": "Cross-Space Referential Integrity", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "cross-space referential integrity", + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "line 19", + "source_url": null + }, + { + "id": "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "label": "Defense-in-Depth Authorization", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "defense-in-depth authorization", + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 15-20", + "source_url": null + }, + { + "id": "docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls", + "label": "Transaction-Local RLS Context", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "transaction-local rls context", + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 16-18", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_budget_invariants", + "label": "Budget Invariants", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "budget invariants", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 127-142", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_critical_user_path", + "label": "Critical User Path", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "critical user path", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 7-14", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_ledger_invariants", + "label": "Ledger Invariants", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "ledger invariants", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 115-125", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_tenant_boundary", + "label": "Tenant Boundary", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "concept", + "norm_label": "tenant boundary", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 105-113", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "label": "Financial Tracker MVP", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "document", + "norm_label": "financial tracker mvp", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 1-277", + "source_url": null + }, + { + "id": "docs_adr_0001_financial_space_ownership_and_rls_space_ownership", + "label": "Financial Space Ownership", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "rationale", + "norm_label": "financial space ownership", + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 1-32", + "source_url": null + }, + { + "id": "kilo_plans_1789034192214_financial_tracker_mvp_modular_monolith", + "label": "Modular Monolith", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 37, + "community_name": "Financial Tracker MVP", + "contributor": null, + "file_type": "rationale", + "norm_label": "modular monolith", + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 68-92", + "source_url": null + }, + { + "id": "context_expected_income", + "label": "Expected Income", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 43, + "community_name": "Expected Income", + "contributor": null, + "file_type": "concept", + "norm_label": "expected income", + "source_file": "CONTEXT.md", + "source_location": "line 22", + "source_url": null + }, + { + "id": "context_income_source", + "label": "Income Source", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 43, + "community_name": "Expected Income", + "contributor": null, + "file_type": "concept", + "norm_label": "income source", + "source_file": "CONTEXT.md", + "source_location": "line 23", + "source_url": null + }, + { + "id": "frontend_public_favicon_svg", + "label": "Favicon SVG (ledger lines icon)", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 52, + "community_name": "Favicon SVG (ledger lines icon)", + "contributor": null, + "file_type": "image", + "norm_label": "favicon svg (ledger lines icon)", + "source_file": "frontend/public/favicon.svg", + "source_location": "lines 1-7", + "source_url": null + }, + { + "id": "frontend_public_favicon_svg_ledger_lines_design", + "label": "Ledger Lines Icon Design", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 52, + "community_name": "Favicon SVG (ledger lines icon)", + "contributor": null, + "file_type": "rationale", + "norm_label": "ledger lines icon design", + "source_file": "frontend/public/favicon.svg", + "source_location": "lines 2-6", + "source_url": null + }, + { + "id": "context_payee", + "label": "Payee", + "_origin": "semantic", + "author": null, + "captured_at": null, + "community": 56, + "community_name": "Payee", + "contributor": null, + "file_type": "concept", + "norm_label": "payee", + "source_file": "CONTEXT.md", + "source_location": "line 14", + "source_url": null + } + ], + "links": [ + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle_downgrade", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_column", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle_downgrade", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_check_constraint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle_upgrade", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_column", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle_upgrade", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_check_constraint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_balances", + "target": "backend_app_analytics_service_balances", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/router.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_cash_flow", + "target": "backend_app_analytics_service_cash_flow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/router.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_category_spend", + "target": "backend_app_analytics_service_category_spend", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/router.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_plan_fact", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/router.py", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_plan_fact", + "target": "backend_app_analytics_service_plan_fact", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/router.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_balances", + "target": "backend_app_ledger_service_account_balance", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/service.py", + "source_location": "L95", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_category_spend", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/service.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_plan_fact", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/service.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_plan_fact", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/analytics/service.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service_record", + "target": "backend_app_audit_models_auditevent", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/audit/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L205", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_service_set_assignments", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L206", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_service_list_categories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L252", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L274", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L275", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L276", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_frontend_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L278", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L292", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L293", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_service_copy_previous_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L294", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_frontend_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L296", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L266", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_service_copy_previous_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L267", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_service_create_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_service_add_expected_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L239", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L218", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_service_fund", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L187", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_service_fund", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_categories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L198", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_parse_month", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_parse_month", + "target": "backend_app_budgeting_service_validate_year_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_period_for", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L257", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_service_reopen_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L258", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L283", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L284", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_service_reopen_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L285", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L286", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_frontend_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_frontend_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_parse_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_period_for", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L168", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_service_set_assignments", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L169", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_categories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L176", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_service_require_open", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L643", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L645", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L646", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "expectedincome", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L646", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_budgeting_service_get_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L556", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L558", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L560", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_blockers", + "target": "backend_app_budgeting_service_period_bounds", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L458", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_service_require_open", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L735", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_service_previous_ym", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L736", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L753", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L758", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L779", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L789", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_period_bounds", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_closure_snapshot", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_previous_ym", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L285", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_balance_until", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L310", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L338", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_close_blockers", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L424", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_require_open", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L834", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_previous_ym", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L835", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L842", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_get_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L845", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_models_planassignment", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L855", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L868", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "expectedincome", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L868", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_shift_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L871", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L879", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_ledger_models_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L511", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L514", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_ensure_credit_reserve_category", + "target": "backend_app_ledger_models_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L533", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_service_require_open", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L711", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L713", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_service_get_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L716", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L717", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_category", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L497", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_or_create_period", + "target": "backend_app_budgeting_service_validate_year_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_or_create_period", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_period", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L672", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L678", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L685", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L689", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_period_bounds", + "target": "backend_app_budgeting_service_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_budgeting_service_get_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L573", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L578", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L806", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_require_open", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L489", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_service_require_open", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L596", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_service_get_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L599", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L601", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L604", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_models_planassignment", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L611", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L622", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_shift_month", + "target": "backend_app_budgeting_service_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_validate_year_month", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_add_alias", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_add_alias", + "target": "backend_app_categorization_models_payeealias", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_ensure_income_source", + "target": "backend_app_categorization_models_incomesource", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_income_source", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_or_create_payee", + "target": "backend_app_categorization_models_payee", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_or_create_payee", + "target": "backend_app_categorization_service_add_alias", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_set_payee_rule", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_set_payee_rule", + "target": "backend_app_categorization_service_rule_category_for_payee", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_set_payee_rule", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/categorization/service.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "backend_app_config_get_settings", + "target": "backend_app_config_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/config.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_db", + "target": "backend_app_db_session_get_session_factory", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_engine", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_session_factory", + "target": "backend_app_db_session_get_engine", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_session_factory", + "target": "backend_app_db_session_py_sessionmaker", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_session_scope", + "target": "backend_app_db_session_get_session_factory", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_session_scope", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/db/session.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_dependencies_requestcontext", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "backend_app_errors_unauthorized", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "backend_app_identity_service_get_active_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_require_csrf", + "target": "backend_app_security_constant_time_equals", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_require_csrf", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/dependencies.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_errors_bad_request", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_errors_conflict", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_errors_forbidden", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_errors_not_found", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_errors_unauthorized", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "backend_app_errors_unprocessable", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/errors.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_service_consume_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_export_status", + "target": "backend_app_exports_service_get_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_service_request_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_tasks_enqueue_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_service_get_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/router.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_exports_service_csv_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L107", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_imports_blob_new_object_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_exports_service_get_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_exports_service_json_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_cancel_deletion", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L165", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_exports_service_get_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_imports_crypto_decrypt_file", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_get_export", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_purge_due_spaces", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_purge_due_spaces", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_request_export", + "target": "backend_app_exports_models_dataexport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_schedule_deletion", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_schedule_deletion", + "target": "backend_app_exports_models_deletionledger", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/service.py", + "source_location": "L156", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_build_export_task", + "target": "backend_app_db_session_session_scope", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_build_export_task", + "target": "backend_app_exports_service_build_export", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_purge_due_spaces_task", + "target": "backend_app_db_session_session_scope", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_purge_due_spaces_task", + "target": "backend_app_exports_service_purge_due_spaces", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_identity_mailer_send_token_email", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/mailer.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_service_accept_invitation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_service_create_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_router_set_auth_cookies", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_service_reset_password", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_service_create_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_router_set_auth_cookies", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_security_constant_time_equals", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_service_create_invitation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_ratelimit_allow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_service_authenticate", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_service_create_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_set_auth_cookies", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_identity_service_revoke_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L161", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L162", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_ratelimit_allow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_service_create_password_reset", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_set_auth_cookies", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/router.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_identity_service_validate_profile", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_errors_unauthorized", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_identity_models_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_identity_service_py_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_security_hash_password", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "backend_app_spaces_models_membership", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_authenticate", + "target": "backend_app_identity_service_normalize_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L107", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_authenticate", + "target": "backend_app_security_verify_password", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_authenticate", + "target": "backend_app_errors_unauthorized", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_identity_service_normalize_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_security_new_token", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_identity_models_invitation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_identity_service_normalize_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_security_new_token", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_identity_models_passwordreset", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L157", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_security_new_token", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_identity_models_session", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_get_active_session", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_get_active_session", + "target": "backend_app_errors_unauthorized", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L169", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_security_token_digest", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L172", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_errors_unauthorized", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L178", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_security_hash_password", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L187", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_revoke_session", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L144", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_validate_profile", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/identity/service.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_detect", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L261", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_detect", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_read_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L262", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_detect", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L272", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_get_settings_row_cap", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_read_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L274", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L276", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L278", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L279", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L280", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L283", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L288", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_detect", + "target": "backend_app_imports_adapters_alfa_xlsx_scan_text", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_get_settings_row_cap", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_find_header", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_rows_text", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_find_account_value", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_alfa_xlsx_cell_str", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L321", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L338", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L380", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L389", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L390", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L344", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "target": "backend_app_imports_adapters_alfa_xlsx_cell_str", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L347", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L350", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L420", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L428", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_alfa_xlsx_cell_str", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L429", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L441", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L452", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L465", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L365", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L368", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "target": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L369", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_find_header", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L187", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_get_settings_row_cap", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_scan_text", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_scan_text", + "target": "backend_app_imports_adapters_alfa_xlsx_rows_text", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_amount_to_kopecks", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_money_to_kopecks", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_money_to_kopecks", + "target": "backend_app_imports_adapters_base_mask_digits", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L121", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_money_to_kopecks", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_record_fingerprint", + "target": "backend_app_imports_adapters_base_normalize_description", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_sourcerow_post_init", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init_detect_adapter", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "target": "backend_app_imports_readers_open_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L121", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_detect", + "target": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L161", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_detect", + "target": "backend_app_imports_adapters_ozon_pdf_ozon_normalize", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_ozon_pdf_ozon_normalize", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L191", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L193", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_required_line", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L213", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "target": "backend_app_imports_readers_open_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L176", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L186", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_required_line", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L240", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L245", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "target": "backend_app_imports_adapters_ozon_pdf_ozon_cell", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L246", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L275", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_detect", + "target": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "target": "backend_app_imports_readers_open_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "target": "backend_app_imports_adapters_ozon_pdf_parse_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_parse_row", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_parse_row", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_date_from", + "target": "backend_app_imports_adapters_rocketbank_pdf_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L288", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_detect", + "target": "backend_app_imports_readers_open_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_rocketbank_pdf_date_from", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L145", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_rocketbank_pdf_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L169", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L215", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "target": "backend_app_imports_readers_open_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L95", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L247", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_get_blob_store", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_get_blob_store", + "target": "backend_app_imports_blob_s3blobstore", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_get_blob_store", + "target": "backend_app_imports_blob_localdirectoryblobstore", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore_delete", + "target": "backend_app_imports_blob_localdirectoryblobstore_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore_get", + "target": "backend_app_imports_blob_localdirectoryblobstore_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore_init", + "target": "backend_app_imports_blob_py_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore_put", + "target": "backend_app_imports_blob_localdirectoryblobstore_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_s3blobstore_init", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/blob.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app_create_celery_app", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app_create_celery_app", + "target": "celery", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_decrypt_file", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_decrypt_file", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_encrypt_file", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_encrypt_file", + "target": "backend_app_imports_crypto_encryptedfile", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_open_pdf", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_open_pdf", + "target": "backend_app_imports_readers_quota_error", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_open_xlsx", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_open_xlsx", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_open_xlsx", + "target": "backend_app_imports_readers_quota_error", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers_quota_error", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/readers.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L270", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_service_set_review_confirmation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L272", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_service_confirm_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L280", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L283", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_service_decide_source_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L239", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_service_delete_source_file", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L323", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L326", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_service_document_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L107", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_router_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L109", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_imports", + "target": "backend_app_imports_router_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_imports", + "target": "backend_app_imports_service_list_documents", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_service_prepare_reparse", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L288", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_tasks_enqueue_process_statement", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L300", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L310", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_service_resolve_hold", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_service_revert_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L315", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L318", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_service_set_review_confirmation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L213", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L102", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_service_create_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_tasks_enqueue_process_statement", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/router.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_imports_models_holdresolution", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_db_base_utcnow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L410", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L415", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_build_candidates", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L277", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_ledger_service_create_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1024", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_ledger_service_create_expense", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1036", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1057", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L824", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L829", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_service_apply_hold_matches", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L855", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_service_match_hold_resolutions", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L860", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L908", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_ledger_service_create_transfer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L956", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L970", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_blob_new_object_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L607", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L618", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L620", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1262", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1267", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document_detail", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L520", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1070", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1072", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1082", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_db_session_session_scope", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L428", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L429", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L433", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_errors_apperror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L438", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_crypto_decrypt_file", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L446", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L447", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L452", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L457", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_draft_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L461", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L466", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_source_from_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L477", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_build_candidates", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L482", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L720", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L722", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L727", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L740", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_imports_models_holdresolution", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L750", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_db_base_utcnow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L758", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_ledger_service_create_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L771", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_ledger_service_create_expense", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L783", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L795", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L805", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1097", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1151", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_ledger_service_create_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1201", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_ledger_service_create_expense", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1218", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1234", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L1249", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_imports_service_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L677", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L680", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L682", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_source_from_row", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L145", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_source_from_row", + "target": "backend_app_imports_adapters_base_record_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/service.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks_process_statement_task", + "target": "backend_app_imports_service_process_statement_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_accounts", + "target": "backend_app_ledger_router_account_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L101", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_account_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_account_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_categorization_service_get_or_create_payee", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_categorization_service_ensure_income_source", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L203", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L245", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_operation_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L246", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operation_json", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_operation_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L168", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_account_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_operation_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L278", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_operation_json", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/router.py", + "source_location": "L260", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_apply_suggestion", + "target": "backend_app_categorization_service_find_payee_by_description", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_apply_suggestion", + "target": "backend_app_categorization_service_rule_category_for_payee", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_ledger_service_get_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L465", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_ledger_service_account_balance", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L468", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L469", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L474", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L101", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_ledger_models_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_ledger_service_py_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L153", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_existing_by_request_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L154", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_require_active_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L157", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_validate_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_models_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_apply_suggestion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L175", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_models_posting", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L177", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L208", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_existing_by_request_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L209", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_require_active_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_categorization_service_get_income_source", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L214", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L215", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_models_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L216", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L216", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_models_posting", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L238", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L336", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_existing_by_request_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L337", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L347", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L349", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L350", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_refunded_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L351", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_models_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L358", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L358", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_models_posting", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L373", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L380", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L262", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_existing_by_request_key", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_require_active_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L268", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L270", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_models_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_models_posting", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L286", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L301", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_ledger_service_get_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L485", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L492", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L497", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_ensure_period_open_for_date", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L404", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_account", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_operation", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_require_active_account", + "target": "backend_app_ledger_service_get_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_require_active_account", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_to_kopecks", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_get_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L440", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L442", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L443", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_validate_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L446", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L452", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_validate_category", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_validate_category", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_ledger_service_get_operation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L414", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L417", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ledger/service.py", + "source_location": "L420", + "weight": 1.0 + }, + { + "source": "backend_app_main_app_error_handler", + "target": "jsonresponse", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/main.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_main_healthz", + "target": "backend_app_main_health", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/main.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_main_readiness", + "target": "backend_app_db_session_get_engine", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/main.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_main_stale_data_handler", + "target": "jsonresponse", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/main.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_ratelimit_allow", + "target": "backend_app_config_get_settings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/ratelimit.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_security_constant_time_equals", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_service_require_owner", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_exports_service_cancel_deletion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletion_status", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletion_status", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_service_require_owner", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_identity_service_create_invitation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_errors_bad_request", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_service_require_owner", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_exports_service_schedule_deletion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_spaces_models_financialspace", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_spaces_models_membership", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_audit_service_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_membership", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_errors_not_found", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_spaces_service_get_membership", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_errors_conflict", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_require_owner", + "target": "backend_app_errors_forbidden", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/app/spaces/service.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_client", + "target": "backend_tests_conftest_py_testclient", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/conftest.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db", + "target": "backend_tests_conftest_db_factory", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/conftest.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db_factory", + "target": "backend_tests_conftest_py_sessionmaker", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/conftest.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_make_draft", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_make_source_row", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_setup_method", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L327", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_setup_method", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_setup_method", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_detect_rejects_workbook_without_contract_header", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L334", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_inconsistent_expense_control_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L363", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_inconsistent_expense_control_fails_closed", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L380", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_malformed_layout_fails_closed", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L449", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_missing_period_field_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L356", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_missing_period_field_fails_closed", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L359", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_contract_fields", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L344", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_contract", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L432", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_flags_mismatch", + "target": "backend_tests_test_adapter_contracts_make_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L438", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_flags_mismatch", + "target": "backend_tests_test_adapter_contracts_make_source_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L442", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_flags_mismatch", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L444", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unexpected_mid_table_row_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L456", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unexpected_mid_table_row_fails_closed", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L459", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unsupported_currency_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L463", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unsupported_currency_fails_closed", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L466", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_pdf", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_pdf", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_xlsx", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_draft_declared_totals_default_to_none", + "target": "backend_tests_test_adapter_contracts_make_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_magic_kind", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_negative_amount_is_rejected", + "target": "backend_tests_test_adapter_contracts_make_source_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_source_row_defaults_to_posted", + "target": "backend_tests_test_adapter_contracts_make_source_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_unknown_bank_status_is_rejected", + "target": "backend_tests_test_adapter_contracts_make_source_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testmoneyparsing_test_malformed_amount_fails_closed_without_leaking_digits", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L142", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testmoneyparsing_test_plain_and_separated_amounts", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_setup_method", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L533", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_setup_method", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L534", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_core_contract_fields", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L541", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L586", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_header_marker_fails_closed", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L563", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_totals_fail_closed", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L569", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_no_rows_fails_closed", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L575", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "backend_tests_test_adapter_contracts_quotasettings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L595", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L597", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_unexpected_row_shape_fails_closed", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L580", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_setup_method", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L655", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_day_and_page_state_machine", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L658", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L751", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_fold_line_cap_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L746", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "backend_tests_test_adapter_contracts_quotasettings", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L760", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L762", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_parse_is_deterministic", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L716", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_record_folding_and_enrichment", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L691", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_repeated_headers_and_daily_totals_are_ignored", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L708", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_row_refs_are_unique_within_a_page", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L665", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_row_refs_are_unique_within_a_page", + "target": "backend_tests_test_adapter_contracts_same_page_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L669", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_statement_controls", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L675", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_statement_controls", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L679", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_unrecognized_content_fails_closed", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L739", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_seed", + "target": "backend_app_identity_models_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_seed", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_tests_test_budget_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_create_category", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_set_assignments", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_add_expected_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_copy_previous_month", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "target": "backend_tests_test_budget_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L94", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "target": "backend_tests_test_budget_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "target": "backend_app_budgeting_service_reopen_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_tests_test_budget_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_ledger_service_create_expense", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_budget.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_app_imports_adapters_base_record_fingerprint", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_hold_document", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_hold_document", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_hold_document", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_make_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_make_document", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_app_identity_models_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_tests_test_import_holds_py_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L534", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L535", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L536", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L565", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L566", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L130", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_confirm_as_posted_requires_reason", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L204", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L234", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L235", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L584", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L585", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L586", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L611", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L612", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L478", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L479", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L480", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L498", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L508", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L509", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L259", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L260", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L261", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L617", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L619", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L620", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L641", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L642", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_resolution_rejects_unknown_kind", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L726", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_resolution_rejects_unknown_kind", + "target": "backend_app_imports_models_holdresolution", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L728", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L161", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L162", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L169", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L323", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L356", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L357", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L403", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L404", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L405", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L408", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L409", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L409", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L375", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L377", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L280", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L281", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L284", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_resolution_requires_reason_at_database_level", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L740", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_resolution_requires_reason_at_database_level", + "target": "backend_app_imports_models_holdresolution", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L742", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L571", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L572", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L573", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_balance_equation_ignores_holds", + "target": "backend_tests_test_import_holds_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L836", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_balance_equation_ignores_holds", + "target": "backend_tests_test_import_holds_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L838", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_declared_outflow_mismatch_blocks", + "target": "backend_tests_test_import_holds_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L811", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_declared_outflow_mismatch_blocks", + "target": "backend_tests_test_import_holds_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L812", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_hold_mismatch_is_review_blocking", + "target": "backend_tests_test_import_holds_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L826", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_hold_mismatch_is_review_blocking", + "target": "backend_tests_test_import_holds_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L826", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_separates_posted_and_hold_totals", + "target": "backend_tests_test_import_holds_draft", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L786", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_separates_posted_and_hold_totals", + "target": "backend_tests_test_import_holds_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L788", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_reconciliation_without_declared_totals_keeps_legacy_semantics", + "target": "backend_tests_test_import_holds_row", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L856", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L912", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L918", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L921", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L922", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L665", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L666", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L667", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L692", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L693", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_preserves_manual_hold_operation_and_provenance", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L699", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_source_row_without_bank_status_defaults_posted", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L873", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_source_row_without_bank_status_defaults_posted", + "target": "backend_tests_test_import_holds_py_date", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L875", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_tests_test_import_holds_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L438", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_tests_test_import_holds_make_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L439", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_tests_test_import_holds_add_record", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L440", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L470", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L471", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L187", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_app_budgeting_service_close_period", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L189", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L191", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_ready_document", + "target": "backend_tests_test_imports_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_ready_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_ready_document", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_ready_document", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_seed", + "target": "backend_app_identity_models_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_seed", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_seed", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_and_revert_are_idempotent", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_rejects_arithmetic_mismatch", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L327", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L331", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirmed_import_must_be_reverted_before_reparse", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L172", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L184", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L193", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_rows_from_same_parse_run", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_rows_from_same_parse_run", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L228", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L252", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L274", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L292", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L295", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "target": "backend_app_imports_router_detail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L304", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_invalid_direction_is_critical", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_tests_test_imports_ready_document", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L347", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L352", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L360", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L372", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L381", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_unexpected_parser_failure_reaches_terminal_state", + "target": "backend_tests_test_imports_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L135", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_unexpected_parser_failure_reaches_terminal_state", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_imports.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_seed", + "target": "backend_app_identity_models_user", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_seed", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_tests_test_ledger_properties_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_ledger_service_create_expense", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_ledger_service_account_balance", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_ledger_service_create_refund", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_tests_test_ledger_properties_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_app_spaces_service_create_space", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_app_ledger_service_get_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "target": "backend_tests_test_ledger_properties_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "target": "backend_app_ledger_service_create_income", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "target": "backend_app_ledger_service_account_balance", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "backend_tests_test_ledger_properties_seed", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "backend_app_ledger_service_create_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "backend_app_ledger_service_create_transfer", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "backend_app_ledger_service_account_balance", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_spaces_models_financialspace", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_ledger_models_account", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_db_session_set_space_context", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_imports_models_statementdocument", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_imports_models_parserun", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_imports_models_sourcerecord", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_imports_models_holdresolution", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_s3_blob_round_trip", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_load_entries", + "target": "backend_tests_test_private_fixtures_py_path", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_parsed", + "target": "backend_tests_test_private_fixtures_fail", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_parsed", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L95", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_parsed", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_balances", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L182", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_control_totals", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_declared_totals_match_parsed_rows", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L209", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_hold_totals", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_manifest_contract", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_row_counts", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_row_invariants", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_service_reconciliation_matches", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L216", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_test_service_reconciliation_matches", + "target": "backend_tests_test_private_fixtures_check", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api_main", + "target": "frontend_scripts_generate_api_firstreadable", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_request", + "target": "frontend_src_api_client_apierror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_request", + "target": "frontend_src_api_client_toapierror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_request", + "target": "frontend_src_api_client_readcsrftoken", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_request", + "target": "frontend_src_api_client_buildurl", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_toapierror", + "target": "frontend_src_api_client_parseerrorenvelope", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_toapierror", + "target": "frontend_src_api_client_apierror", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/api/client.ts", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_requireauth", + "target": "frontend_src_hooks_useauth_useme", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout_applayout", + "target": "frontend_src_hooks_useauth_useme", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout_applayout", + "target": "frontend_src_hooks_useauth_uselogout", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_langswitcher_langswitcher", + "target": "frontend_src_i18n_index_setlocale", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts_useactiveaccounts", + "target": "frontend_src_hooks_useaccounts_useaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts_usearchiveaccount", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts_usecreateaccount", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth_useacceptinvite", + "target": "frontend_src_hooks_useauth_usesessionmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth_useconfirmpasswordreset", + "target": "frontend_src_hooks_useauth_usesessionmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth_uselogin", + "target": "frontend_src_hooks_useauth_usesessionmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_useclosemonth", + "target": "frontend_src_hooks_usebudget_useperiodmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_usecopypreviousmonth", + "target": "frontend_src_hooks_usebudget_useperiodmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_usefundcategory", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_usefundcategory", + "target": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_useperiodmutation", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_useperiodmutation", + "target": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_usereopenmonth", + "target": "frontend_src_hooks_usebudget_useperiodmutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_useupdateplan", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget_useupdateplan", + "target": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_useconfirmimport", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_useconfirmimport", + "target": "frontend_src_hooks_useimports_useimporterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_useimporterrortoaster", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_usereparseimport", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_usereparseimport", + "target": "frontend_src_hooks_useimports_useimporterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_userevertimport", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_userevertimport", + "target": "frontend_src_hooks_useimports_useimporterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_usesaverowdecision", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_useuploadimport", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports_useuploadimport", + "target": "frontend_src_hooks_useimports_useimporterrortoaster", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations_usecategorizeoperation", + "target": "frontend_src_hooks_useoperations_useledgermutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations_usecreateoperation", + "target": "frontend_src_hooks_useoperations_useledgermutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations_useledgermutation", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations_usevoidoperation", + "target": "frontend_src_hooks_useoperations_useledgermutation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle_usecanceldeletion", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle_userequestdeletion", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle_userequestexport", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index_createi18n", + "target": "frontend_src_i18n_index_detectlocale", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index_detectlocale", + "target": "frontend_src_i18n_index_storedlocale", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage_acceptinvitepage", + "target": "frontend_src_hooks_useauth_useacceptinvite", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage_acceptinvitepage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage_accountform", + "target": "frontend_src_hooks_useaccounts_usecreateaccount", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage_accountform", + "target": "frontend_src_pages_accountspage_usememoschema", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage_accountspage", + "target": "frontend_src_hooks_useaccounts_useaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage_accountspage", + "target": "frontend_src_hooks_useaccounts_usearchiveaccount", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticscategoryspend", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticscashflow", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticsbalances", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticsplanfact", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_budgetpage", + "target": "frontend_src_hooks_usebudget_usebudgetsummary", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_budgetpage", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_budgetpage", + "target": "frontend_src_hooks_usebudget_useclosemonth", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_budgetpage", + "target": "frontend_src_hooks_usebudget_usereopenmonth", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L130", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_budgetpage", + "target": "frontend_src_hooks_usebudget_usecopypreviousmonth", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_fundmodal", + "target": "frontend_src_hooks_usebudget_usefundcategory", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L87", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage_planmodal", + "target": "frontend_src_hooks_usebudget_useupdateplan", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_confirmmodal", + "target": "frontend_src_hooks_useimports_useconfirmimport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_importdetailpage", + "target": "frontend_src_hooks_useimports_usesaverowdecision", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_importdetailpage", + "target": "frontend_src_pages_importdetailpage_stepindexfor", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L142", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_importdetailpage", + "target": "frontend_src_hooks_useimports_useimport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_importdetailpage", + "target": "frontend_src_hooks_useimports_usereparseimport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage_importdetailpage", + "target": "frontend_src_hooks_useimports_userevertimport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage_importspage", + "target": "frontend_src_hooks_useimports_useimports", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage_uploadmodal", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage_uploadmodal", + "target": "frontend_src_hooks_useimports_useuploadimport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage_loginpage", + "target": "frontend_src_hooks_useauth_uselogin", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage_loginpage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_expenseform", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_expenseform", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_expenseform", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_expenseform", + "target": "frontend_src_pages_operationspage_amountfield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_expenseform", + "target": "frontend_src_pages_operationspage_datefield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_incomeform", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L145", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_incomeform", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L146", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_incomeform", + "target": "frontend_src_pages_operationspage_amountfield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L149", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_incomeform", + "target": "frontend_src_pages_operationspage_datefield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_operationspage", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L453", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_operationspage", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L481", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_refundform", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_refundform", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L300", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_refundform", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L301", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_refundform", + "target": "frontend_src_pages_operationspage_amountfield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L304", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_refundform", + "target": "frontend_src_pages_operationspage_datefield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L305", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_transferform", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_transferform", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_transferform", + "target": "frontend_src_pages_operationspage_amountfield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_transferform", + "target": "frontend_src_pages_operationspage_datefield", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L226", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage_voidmodal", + "target": "frontend_src_hooks_useoperations_usevoidoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L407", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage_resetpasswordpage", + "target": "frontend_src_hooks_useauth_userequestpasswordreset", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage_resetpasswordpage", + "target": "frontend_src_hooks_useauth_useconfirmpasswordreset", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage_reviewqueuepage", + "target": "frontend_src_hooks_useimports_useimports", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage_reviewqueuepage", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage_reviewqueuepage", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage_uncategorizedrow", + "target": "frontend_src_hooks_useoperations_usecategorizeoperation", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage_deletionform", + "target": "frontend_src_hooks_usespacelifecycle_userequestdeletion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage_settingspage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_usespacedeletion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_userequestexport", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_usecanceldeletion", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "frontend_src_test_helpers_renderwithproviders", + "target": "frontend_src_test_helpers_createtestqueryclient", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test_renderlogin", + "target": "frontend_src_test_helpers_renderwithproviders", + "relation": "calls", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "call", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_balances", + "target": "backend_app_analytics_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/analytics/router.py", + "source_location": "L88", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_cash_flow", + "target": "backend_app_analytics_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/analytics/router.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_category_spend", + "target": "backend_app_analytics_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/analytics/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_plan_fact", + "target": "backend_app_analytics_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/analytics/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "put", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L201", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L249", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L272", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L290", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L151", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L229", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L216", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L179", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L255", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L281", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L107", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_py_patch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/exports/router.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_export_status", + "target": "backend_app_exports_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/exports/router.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/exports/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_build_export_task", + "target": "backend_app_exports_tasks_py_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_purge_due_spaces_task", + "target": "backend_app_exports_tasks_py_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L97", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L158", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_me", + "target": "backend_app_identity_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L146", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/identity/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L262", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_py_patch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_py_delete", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L321", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_imports", + "target": "backend_app_imports_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L286", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L242", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L313", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L211", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/router.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks_process_statement_task", + "target": "backend_app_imports_tasks_py_task", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_accounts", + "target": "backend_app_ledger_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L173", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_delete_account", + "target": "backend_app_ledger_router_py_delete", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_py_patch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_py_patch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/ledger/router.py", + "source_location": "L249", + "weight": 1.0 + }, + { + "source": "backend_app_main_app_error_handler", + "target": "exception_handler", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_main_health", + "target": "backend_app_main_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_main_healthz", + "target": "backend_app_main_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_main_readiness", + "target": "backend_app_main_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_main_security_headers", + "target": "middleware", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_main_stale_data_handler", + "target": "exception_handler", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/main.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_router_py_delete", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/spaces/router.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_current", + "target": "backend_app_spaces_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/spaces/router.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletion_status", + "target": "backend_app_spaces_router_py_get", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/spaces/router.py", + "source_location": "L62", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/spaces/router.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_router_py_post", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/app/spaces/router.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_client", + "target": "backend_tests_conftest_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/conftest.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db", + "target": "backend_tests_conftest_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/conftest.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db_factory", + "target": "backend_tests_conftest_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/conftest.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "given", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "settings", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "skipif", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_s3_blob_round_trip", + "target": "skipif", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_parsed", + "target": "backend_tests_test_private_fixtures_py_fixture", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "decorator", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_alfa_xlsx", + "relation": "re_exports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "export", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_base", + "relation": "re_exports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "export", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_ozon_pdf", + "relation": "re_exports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "export", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_rocketbank_pdf", + "relation": "re_exports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "export", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_emptystate", + "relation": "re_exports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "export", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage_accountformvalues", + "target": "frontend_src_api_types_accounttype", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "field", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service_record", + "target": "backend_app_audit_service_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/audit/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_categories", + "target": "backend_app_ledger_models_category", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_periods", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_db", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/db/session.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_session_factory", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/db/session.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_session_scope", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/db/session.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "backend_app_dependencies_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "backend_app_dependencies_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "cookie", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "session_cookie_name", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "usersession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_require_csrf", + "target": "backend_app_dependencies_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_require_csrf", + "target": "backend_app_dependencies_py_header", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/dependencies.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_router_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/identity/router.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_router_py_header", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/identity/router.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "target": "backend_app_imports_adapters_alfa_xlsx_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L362", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_required_line", + "target": "pattern", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L237", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "file", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "form", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "uploadfile", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_draft_json", + "target": "backend_app_imports_service_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/service.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_list_documents", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/service.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_match_hold_resolutions", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/service.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_reconciliation_summary", + "target": "backend_app_imports_service_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/imports/service.py", + "source_location": "L170", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_header", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "ge", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "le", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "query", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_accounts", + "target": "backend_app_ledger_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/service.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_operations", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/ledger/service.py", + "source_location": "L506", + "weight": 1.0 + }, + { + "source": "backend_app_main_security_headers", + "target": "backend_app_main_py_request", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/main.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_router_py_alias", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_router_py_header", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_spaces_models_financialspace", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_spaces_models_membership", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_list_spaces_for_user", + "target": "backend_app_spaces_models_financialspace", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_list_spaces_for_user", + "target": "backend_app_spaces_models_membership", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/app/spaces/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_client", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/tests/conftest.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/tests/conftest.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db_factory", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "generic_arg", + "source_file": "backend/tests/conftest.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_acceptinvitepage", + "target": "frontend_src_pages_acceptinvitepage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_accountspage", + "target": "frontend_src_pages_accountspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_analyticspage", + "target": "frontend_src_pages_analyticspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_budgetpage", + "target": "frontend_src_pages_budgetpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_importdetailpage", + "target": "frontend_src_pages_importdetailpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_importspage", + "target": "frontend_src_pages_importspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_loginpage", + "target": "frontend_src_pages_loginpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_notfoundpage", + "target": "frontend_src_pages_notfoundpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_operationspage", + "target": "frontend_src_pages_operationspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_resetpasswordpage", + "target": "frontend_src_pages_resetpasswordpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_reviewqueuepage", + "target": "frontend_src_pages_reviewqueuepage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router_settingspage", + "target": "frontend_src_pages_settingspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "deferred": true, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions_lib", + "target": "ref_dom", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/tsconfig.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions_lib", + "target": "ref_dom_iterable", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/tsconfig.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions_lib", + "target": "ref_es2022", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/tsconfig.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions_types", + "target": "ref_vite_client", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/tsconfig.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_include", + "target": "ref_src", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/tsconfig.json", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "kilo_kilo_graphify_command", + "target": "ref_home_k1nq_local_bin_graphify_mcp", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": ".kilo/kilo.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "kilo_kilo_graphify_command", + "target": "ref_home_k1nq_repos_finance_graphify_out_graph_json", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": ".kilo/kilo.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "kilo_kilo_plugin", + "target": "ref_file_home_k1nq_repos_finance_kilo_plugins_graphify_js", + "relation": "extends", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": ".kilo/kilo.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/env.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/env.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_budgeting_router_parse_month", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/router.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_analytics_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_service_account_balance", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service", + "target": "backend_app_audit_models_auditevent", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_db_base_utcdatetime", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models_planassignment", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_imports_models_holdresolution", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L443", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L443", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L443", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_models_posting", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/models.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/models.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/models.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_models_incomesource", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_models_payee", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_models_payeealias", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_bankcategorymapping", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_incomesource", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_mcccode", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_payee", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models_payeealias", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_exports_models_dataexport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_exports_models_deletionledger", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_identity_models_invitation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_identity_models_passwordreset", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_identity_models_session", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models_parserun", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_ledger_models_posting", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_audit_models_auditevent", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_spaces_models_financialspace", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_spaces_models_membership", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models_planassignment", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/session.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_identity_models_session", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_identity_service_get_active_session", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_security_constant_time_equals", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_spaces_models_financialspace", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_spaces_models_membership", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_db_session_get_db", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_errors_forbidden", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_errors_unauthorized", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_db_base_utcdatetime", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_router_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_tasks_enqueue_export", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_audit_models_auditevent", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_budgeting_models_planassignment", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_models_dataexport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_models_deletionledger", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_blob_new_object_key", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_crypto_decrypt_file", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L187", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_spaces_models_financialspace", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_tasks_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_db_session_session_scope", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_service_build_export", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_service_purge_due_spaces", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_identity_mailer", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/mailer.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_db_base_utcdatetime", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L101", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_ratelimit_allow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_security_constant_time_equals", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_errors_forbidden", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_models_invitation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_models_passwordreset", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_models_session", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_security_hash_password", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_security_new_token", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_security_token_digest", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_security_verify_password", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_spaces_service_create_space", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_errors_unauthorized", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_spaces_models_membership", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L95", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_base_statementadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_readers_open_pdf", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_readers_open_pdf", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/blob.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base_utcdatetime", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base_utcnow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/readers.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/readers.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_tasks_enqueue_process_statement", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L1095", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_db_base_utcnow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_db_session_session_scope", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_base_record_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_blob_new_object_key", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_crypto_decrypt_file", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_holdresolution", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_parserun", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_service_create_expense", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_service_create_income", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_service_create_transfer", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L909", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks", + "target": "backend_app_imports_tasks_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks", + "target": "backend_app_imports_service_process_statement_document", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_categorization_models_incomesource", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_categorization_models_payee", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_models_posting", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L391", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_models_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_db_session_get_engine", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ratelimit", + "target": "backend_app_config_get_settings", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ratelimit.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_db_base_pkmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_db_base_timestampmixin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_db_base_utcdatetime", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_security_constant_time_equals", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_service_require_owner", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_errors_bad_request", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_errors_forbidden", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_py_uuid", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_errors_conflict", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_errors_forbidden", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_errors_not_found", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_models_financialspace", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_models_membership", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_base_base", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_session_get_db", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_ledger_service_create_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_ledger_service_create_expense", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_spaces_service_create_space", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_add_expected_income", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_close_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_copy_previous_month", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_create_category", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_reopen_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service_set_assignments", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_budgeting_service_close_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_adapters_base_record_fingerprint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models_holdresolution", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models_parserun", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_ledger_service_create_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_spaces_models_membership", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_spaces_service_create_space", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L867", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models_parserun", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_ledger_models_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_ledger_service_create_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_spaces_service_create_space", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_models_posting", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_account_balance", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_create_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_create_expense", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_create_income", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_create_refund", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_create_transfer", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service_get_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_spaces_service_create_space", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_errors_apperror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_identity_models_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_db_session_set_space_context", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_models_holdresolution", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_models_parserun", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_models_sourcerecord", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_models_statementdocument", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_ledger_models_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_spaces_models_financialspace", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_hookform_resolvers", + "target": "hookform_resolvers", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_i18next", + "target": "i18next", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_react", + "target": "react", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_react_dom", + "target": "react_dom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_react_hook_form", + "target": "react_hook_form", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_react_i18next", + "target": "react_i18next", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_react_router_dom", + "target": "react_router_dom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_tanstack_react_query", + "target": "tanstack_react_query", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies_zod", + "target": "zod", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_eslint", + "target": "eslint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_eslint_js", + "target": "eslint_js", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_eslint_plugin_jsx_a11y", + "target": "eslint_plugin_jsx_a11y", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_eslint_plugin_react_hooks", + "target": "eslint_plugin_react_hooks", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_globals", + "target": "globals", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_jsdom", + "target": "jsdom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_openapi_typescript", + "target": "openapi_typescript", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_testing_library_dom", + "target": "testing_library_dom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_testing_library_jest_dom", + "target": "testing_library_jest_dom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_testing_library_react", + "target": "testing_library_react", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_testing_library_user_event", + "target": "testing_library_user_event", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_types_react", + "target": "types_react", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_types_react_dom", + "target": "types_react_dom", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_typescript", + "target": "typescript", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_typescript_eslint", + "target": "typescript_eslint", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_vite", + "target": "vite", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_vitejs_plugin_react", + "target": "vitejs_plugin_react", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies_vitest", + "target": "vitest", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/package.json", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_client_apiclient", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_acceptinvitepayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_balancesreport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_budgetcategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_budgetsummary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_cashflowmonth", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_categoryspenditem", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_confirmimportpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_createaccountpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_createoperationpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_exportinfo", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_importdetail", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_importsummary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_loginpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_operationfilters", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_page", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_passwordresetpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_planfactreport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_saverowdecisionpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_spacedeletionstatus", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_types_operationfilters", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_app_router_approutes", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/App.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_components_ui_toaster_toastprovider", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/App.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_components_ui_spinner_spinner", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_components_layout_applayout_applayout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_hooks_useauth_useme", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_hooks_useauth_uselogout", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_hooks_useauth_useme", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_langswitcher", + "target": "frontend_src_i18n_index_locales", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_langswitcher", + "target": "frontend_src_i18n_index_setlocale", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_errorstate", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_errorstate_errorstate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_spinner_spinner", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_types_createaccountpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_types_acceptinvitepayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_types_loginpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_types_passwordresetpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_types_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_types_confirmimportpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_types_importstatus", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_types_saverowdecisionpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_types_createoperationpayload", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_types_operationfilters", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_api_types_locale", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_main", + "target": "frontend_src_app_app", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/main.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_hooks_useauth_useacceptinvite", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_fields_moneyfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_fields_selectfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_hooks_useaccounts_useaccounts", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_hooks_useaccounts_usearchiveaccount", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_hooks_useaccounts_usecreateaccount", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_api_types_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_api_types_accounttype", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_confirmdialog_confirmdialog", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticsbalances", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticscashflow", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticscategoryspend", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_hooks_useanalytics_useanalyticsplanfact", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_columnchart_columnchart", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_horizontalbars_horizontalbars", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_planfactbars_planfactbars", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_monthswitcher_monthswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_fields_moneyfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_monthswitcher_monthswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_usebudgetsummary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_useclosemonth", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_usecopypreviousmonth", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_usefundcategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_usereopenmonth", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget_useupdateplan", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_api_types_budgetcategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_confirmdialog_confirmdialog", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports_useconfirmimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports_useimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports_usereparseimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports_userevertimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports_usesaverowdecision", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_api_types_rowdecision", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_confirmdialog_confirmdialog", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_hooks_useimports_useimports", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_hooks_useimports_useuploadimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_fields_selectfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_hooks_useauth_uselogin", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_notfoundpage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/NotFoundPage.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_fields_moneyfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_fields_selectfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_fields_textareafield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_modal_modal", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useoperations_usevoidoperation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types_operationfilters", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types_operationkind", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types_operationstatus", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_hooks_useauth_useconfirmpasswordreset", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_hooks_useauth_userequestpasswordreset", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_useoperations_usecategorizeoperation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_useimports_useimports", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_api_types_budgetcategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_api_types_operation", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_useauth_useme", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_usecanceldeletion", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_userequestdeletion", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_userequestexport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_usespacelifecycle_usespacedeletion", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_badge_badge", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_button_button", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_api_types_account", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_pages_accountspage_accountspage", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_test_helpers_renderwithproviders", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_api_types_budgetcategory", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_api_types_budgetsummary", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_pages_budgetpage_budgetpage", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_helpers_renderwithproviders", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_chart_accessible_table_test", + "target": "frontend_src_components_charts_horizontalbars_horizontalbars", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_chart_accessible_table_test", + "target": "frontend_src_components_charts_columnchart_columnchart", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_helpers", + "target": "frontend_src_components_ui_toaster_toastprovider", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_api_types_importdetail", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_api_types_importstatus", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_hooks_useimports_useimport", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_client_apierror", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_endpoints_api", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_types_user", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_pages_loginpage_loginpage", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_helpers_renderwithproviders", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_querykeys_session_root", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_querykeys_space_root", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_types_operationfilters", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_test_setup", + "target": "frontend_src_i18n_index_i18n", + "relation": "imports", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/setup.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/env.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_db_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/env.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/env.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_app_db_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/router.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_categorization_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_budgeting_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_budgeting_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/analytics/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service", + "target": "backend_app_audit_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/audit/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/models.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_audit_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_categorization_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/models.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/categorization/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_py_datetime", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/base.py", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_categorization_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_exports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_audit_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_db_models", + "target": "backend_app_budgeting_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/models.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/db/session.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_identity_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_security", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/dependencies.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_tasks", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_audit_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_budgeting_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_blob", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_crypto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_py_datetime", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_imports_celery_app", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_identity_mailer", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/mailer.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_mailer", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_ratelimit", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_security", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_security", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_audit_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/identity/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_readers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "decimal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_readers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_readers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/blob.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app", + "target": "celery", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/crypto.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/models.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/readers.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/readers.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_tasks", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_audit_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_blob", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_crypto", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks", + "target": "backend_app_imports_celery_app", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_categorization_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_categorization_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_categorization_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "decimal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_audit_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_exports_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_identity_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_imports_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_ledger_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_spaces_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_analytics_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_budgeting_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/main.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_ratelimit", + "target": "backend_app_config", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/ratelimit.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/models.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_identity_mailer", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_security", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_dependencies", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_exports_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_identity_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_audit_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_worker", + "target": "backend_app_imports_celery_app", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/app/worker.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_main", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/conftest.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_ozon_pdf", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_rocketbank_pdf", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_app_budgeting_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_budget.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_budgeting_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_adapters_base", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_spaces_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_errors", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_app_identity_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_db_session", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_blob", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_imports_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_ledger_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_app_spaces_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_app_imports_adapters_init", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_app_imports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_client", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L2", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L1", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_app_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/App.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/App.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_components_ui_spinner", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_components_layout_applayout", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/app/router.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_layout_langswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_langswitcher", + "target": "frontend_src_i18n_index", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_errorstate", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_errorstate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_spinner", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L5", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_main", + "target": "frontend_src_app", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/main.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_main", + "target": "frontend_src_i18n_index", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/main.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_components_layout_langswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_emptystate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_hooks_useaccounts", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L6", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_components_ui_confirmdialog", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_hooks_useanalytics", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_columnchart", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_horizontalbars", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_charts_planfactbars", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_components_ui_monthswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_monthswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_hooks_usebudget", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L6", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_components_ui_confirmdialog", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_hooks_useimports", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_confirmdialog", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_hooks_useaccounts", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_hooks_useimports", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_emptystate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_components_layout_langswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_notfoundpage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/NotFoundPage.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_emptystate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_modal", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_usebudget", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useaccounts", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_hooks_useoperations", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L7", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_layout_langswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_usebudget", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_useoperations", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_hooks_useimports", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_emptystate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_querygate", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_useauth", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_hooks_usespacelifecycle", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_badge", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_button", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_fields", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_layout_langswitcher", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_components_ui_pageheader", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_pages_accountspage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_test_helpers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L4", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_pages_budgetpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_helpers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_chart_accessible_table_test", + "target": "frontend_src_components_charts_horizontalbars", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_chart_accessible_table_test", + "target": "frontend_src_components_charts_columnchart", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_helpers", + "target": "frontend_src_components_ui_toaster", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L6", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_hooks_useimports", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_client", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_endpoints", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L5", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_pages_loginpage", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_helpers", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_querykeys", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_api_types", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L8", + "type_only": true, + "weight": 1.0 + }, + { + "source": "frontend_src_test_setup", + "target": "frontend_src_i18n_index", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "import", + "source_file": "frontend/src/test/setup.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_balances", + "target": "backend_app_analytics_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_balances", + "target": "backend_app_analytics_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_cash_flow", + "target": "backend_app_analytics_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_cash_flow", + "target": "backend_app_analytics_router_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_cash_flow", + "target": "backend_app_analytics_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_category_spend", + "target": "backend_app_analytics_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_category_spend", + "target": "backend_app_analytics_router_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_category_spend", + "target": "backend_app_analytics_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_plan_fact", + "target": "backend_app_analytics_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router_plan_fact", + "target": "backend_app_analytics_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/router.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_balances", + "target": "backend_app_analytics_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_balances", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_cash_flow", + "target": "backend_app_analytics_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_cash_flow", + "target": "backend_app_analytics_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_cash_flow", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_category_spend", + "target": "backend_app_analytics_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_category_spend", + "target": "backend_app_analytics_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_category_spend", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_plan_fact", + "target": "backend_app_analytics_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service_plan_fact", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/analytics/service.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service_record", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/audit/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_router_assignmentsbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignments", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categories", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_monthbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_close_frontend", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_monthbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_frontend", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_copy_previous", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_router_categorybody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_create_category", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_expectedincomebody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expected_income", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_fundingbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_categoryfundingbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fund_category", + "target": "backend_app_budgeting_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_period_for", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_period_for", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_monthbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_reopen_frontend", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_summary", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_planbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_update_plan", + "target": "backend_app_budgeting_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_add_expected_income", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_balance_until", + "target": "backend_app_budgeting_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_balance_until", + "target": "backend_app_budgeting_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_balance_until", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_blockers", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_blockers", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_blockers", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_close_period", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_closure_snapshot", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_closure_snapshot", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_compute_period_state", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_copy_previous_month", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L501", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L501", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_create_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L501", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_ensure_credit_reserve_category", + "target": "backend_app_budgeting_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L524", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_ensure_credit_reserve_category", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L524", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_ensure_credit_reserve_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L524", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_fund", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_category", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L494", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L494", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_or_create_period", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_or_create_period", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_period", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_period", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_categories", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_categories", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_periods", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_list_periods", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L659", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L659", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_match_expected_income", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L659", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_reopen_period", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_require_open", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L487", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_budgeting_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_set_assignments", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_add_alias", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_ensure_income_source", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_find_payee_by_description", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_income_source", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_or_create_payee", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_resolve_category_name", + "target": "backend_app_ledger_models_category", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_rule_category_for_payee", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_set_payee_rule", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_session_scope", + "target": "backend_app_db_session_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/db/session.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_set_space_context", + "target": "backend_app_db_session_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/db/session.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_set_space_context", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/db/session.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_dependencies_py_currentsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/dependencies.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_context", + "target": "backend_app_dependencies_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/dependencies.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_current_session", + "target": "backend_app_dependencies_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies_require_csrf", + "target": "backend_app_dependencies_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/dependencies.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_errors_apperror_init", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_errors_bad_request", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_errors_conflict", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_errors_forbidden", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_errors_not_found", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_errors_unauthorized", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_errors_unprocessable", + "target": "backend_app_errors_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/errors.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_export_status", + "target": "backend_app_exports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_export_status", + "target": "backend_app_exports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_export_status", + "target": "backend_app_exports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_exports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_exports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_cancel_deletion", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_cancel_deletion", + "target": "backend_app_spaces_models_financialspace", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_exports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_consume_export", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_get_export", + "target": "backend_app_exports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_get_export", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_purge_due_spaces", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L173", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_request_export", + "target": "backend_app_exports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_request_export", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_schedule_deletion", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_schedule_deletion", + "target": "backend_app_spaces_models_financialspace", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_enqueue_export", + "target": "backend_app_exports_tasks_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_router_acceptinvitebody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_accept_invite", + "target": "backend_app_identity_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_confirm_password_reset", + "target": "backend_app_identity_router_resetbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_router_invitebody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_create_invite", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_loginbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_py_request", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_identity_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_identity_router_py_currentsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_logout", + "target": "backend_app_identity_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_me", + "target": "backend_app_identity_router_py_currentsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_router_py_request", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_identity_router_resetrequestbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_set_auth_cookies", + "target": "backend_app_identity_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/router.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_accept_invitation", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_authenticate", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "backend_app_identity_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_invitation", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_password_reset", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "backend_app_identity_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_create_session", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_get_active_session", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_revoke_session", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_revoke_session", + "target": "dbsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L317", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_read_rows", + "target": "workbook", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L307", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L362", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_record_fingerprint", + "target": "backend_app_imports_adapters_base_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "target": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L232", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "target": "backend_app_imports_adapters_rocketbank_pdf_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L232", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_confirmbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirm", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_decisionbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decide_row", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_delete_source", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_detail", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_imports", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_imports", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_holdresolvebody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_resolve_hold", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_revert", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_review", + "target": "backend_app_imports_router_reviewbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_summary", + "target": "backend_app_imports_router_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_imports_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_imports_models_parserun", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_apply_hold_matches", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_build_candidates", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_build_candidates", + "target": "backend_app_imports_models_parserun", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_build_candidates", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_create_document", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L597", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L597", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_decide_source_record", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L597", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document_detail", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L519", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document_detail", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L519", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_draft_json", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_list_documents", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_list_documents", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_match_hold_resolutions", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_match_hold_resolutions", + "target": "backend_app_imports_models_parserun", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_match_hold_resolutions", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1067", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1067", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1067", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L427", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L708", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L708", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_resolve_hold", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L708", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1092", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_imports_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1092", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1092", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L668", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L668", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_source_from_row", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_source_from_row", + "target": "backend_app_imports_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks_enqueue_process_statement", + "target": "backend_app_imports_tasks_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/imports/tasks.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_account_json", + "target": "backend_app_ledger_router_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_account_json", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_accounts", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_accounts", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_archive_account", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_accountbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_account", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_operationbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_create_operation", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_delete_account", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_delete_account", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_delete_account", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_delete_account", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operation_json", + "target": "backend_app_ledger_router_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operation_json", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operations", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_account", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_operationpatchbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_patch_operation", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_void_operation", + "target": "backend_app_ledger_router_voidbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_account_balance", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_account_balance", + "target": "backend_app_ledger_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_apply_suggestion", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_apply_suggestion", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_apply_suggestion", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_account", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_expense", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_income", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_refund", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_create_transfer", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_delete_account", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_ensure_period_open_for_date", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L390", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_ensure_period_open_for_date", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L390", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_ensure_period_open_for_date", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L390", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_existing_by_request_key", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_existing_by_request_key", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_account", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_account", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_operation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_operation", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_accounts", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_accounts", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_operations", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L506", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_operations", + "target": "backend_app_ledger_service_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L506", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_list_operations", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L506", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_refunded_kopecks", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_refunded_kopecks", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_require_active_account", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_require_active_account", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_to_kopecks", + "target": "decimal", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_validate_category", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_validate_category", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_ledger_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "backend_app_ledger_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_main_app_error_handler", + "target": "backend_app_main_py_request", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/main.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_main_stale_data_handler", + "target": "backend_app_main_py_request", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/main.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_main_stale_data_handler", + "target": "staledataerror", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/main.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_router_py_currentsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_cancel_deletion", + "target": "backend_app_spaces_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_current", + "target": "backend_app_spaces_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletion_status", + "target": "backend_app_spaces_router_py_currentsession", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletion_status", + "target": "backend_app_spaces_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_router_memberinvitebody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_invite_member", + "target": "backend_app_spaces_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_router_deletionbody", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_router_py_context", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_router_py_csrf", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_schedule_deletion", + "target": "backend_app_spaces_router_py_db", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_create_space", + "target": "backend_app_spaces_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_membership", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_membership", + "target": "backend_app_spaces_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_spaces_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_space_for_member", + "target": "backend_app_spaces_service_py_uuid", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_list_spaces_for_user", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_list_spaces_for_user", + "target": "backend_app_spaces_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_require_owner", + "target": "backend_app_spaces_models_membership", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_client", + "target": "backend_tests_conftest_py_sessionmaker", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/conftest.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest_db", + "target": "backend_tests_conftest_py_sessionmaker", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/conftest.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_row_quota_is_enforced", + "target": "monkeypatch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L468", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "monkeypatch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L592", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_oversized_pdf_is_rejected_by_quota", + "target": "monkeypatch", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L757", + "weight": 1.0 + }, + { + "source": "backend_tests_test_api_test_invite_login_and_authenticated_space", + "target": "backend_tests_test_api_py_testclient", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_api.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_tests_test_api_test_openapi_contains_critical_paths", + "target": "backend_tests_test_api_py_testclient", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_api.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_seed", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_budget.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_budget.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_budget.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_budget.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_budget.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_app_imports_models_parserun", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_add_record", + "target": "backend_tests_test_import_holds_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_hold_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_hold_document", + "target": "backend_tests_test_import_holds_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_make_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_make_document", + "target": "backend_tests_test_import_holds_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_seed", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L533", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_confirm_as_posted_requires_reason", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L241", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L203", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L583", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L477", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L507", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L258", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L616", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_resolution_rejects_unknown_kind", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L725", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L402", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L374", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L279", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_manual_resolution_requires_reason_at_database_level", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L739", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L890", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "target": "backend_tests_test_import_holds_py_testclient", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L890", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L664", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_revert_preserves_manual_hold_operation_and_provenance", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L698", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L186", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_ready_document", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_seed", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_and_revert_are_idempotent", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_rejects_arithmetic_mismatch", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L326", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_confirmed_import_must_be_reverted_before_reparse", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_rows_from_same_parse_run", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L247", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L346", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports_test_unexpected_parser_failure_reaches_terminal_state", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_imports.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_seed", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_parsed", + "target": "fixturerequest", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "parameter_type", + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_archive_category", + "target": "backend_app_ledger_models_category", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_category", + "target": "backend_app_ledger_models_category", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L494", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_get_period", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rename_category", + "target": "backend_app_ledger_models_category", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_find_payee_by_description", + "target": "backend_app_categorization_models_payee", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_get_income_source", + "target": "backend_app_categorization_models_incomesource", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_rule_category_for_payee", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/categorization/service.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcdatetime_process_bind_param", + "target": "backend_app_db_base_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/db/base.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcdatetime_process_result_value", + "target": "backend_app_db_base_py_any", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/db/base.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcnow", + "target": "backend_app_db_base_py_datetime", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/db/base.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_get_engine", + "target": "engine", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/db/session.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router_download", + "target": "backend_app_exports_router_py_response", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/exports/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_get_export", + "target": "backend_app_exports_models_dataexport", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service_schedule_deletion", + "target": "backend_app_exports_service_py_datetime", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/exports/service.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_authenticate", + "target": "backend_app_identity_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_get_active_session", + "target": "backend_app_identity_models_session", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service_reset_password", + "target": "backend_app_identity_service_py_user", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/identity/service.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaheadermeta", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "target": "backend_app_imports_adapters_alfa_xlsx_py_date", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L154", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_statementadapter_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init_detect_adapter", + "target": "backend_app_imports_adapters_base_statementadapter", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L171", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_get_blob_store", + "target": "backend_app_imports_blob_blobstore", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/blob.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore_path", + "target": "backend_app_imports_blob_py_path", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/blob.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_confirm_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_delete_source_file", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_prepare_reparse", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1067", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_revert_document", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L1092", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_set_review_confirmation", + "target": "backend_app_imports_models_statementdocument", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/imports/service.py", + "source_location": "L668", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_archive_account", + "target": "backend_app_ledger_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_existing_by_request_key", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_account", + "target": "backend_app_ledger_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_get_operation", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_require_active_account", + "target": "backend_app_ledger_service_py_account", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_update_operation", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_void_operation", + "target": "operation", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/ledger/service.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service_get_membership", + "target": "backend_app_spaces_models_membership", + "relation": "references", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "return_type", + "source_file": "backend/app/spaces/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_app_db_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/alembic/env.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_app_db_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/analytics/router.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/budgeting/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_audit_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/budgeting/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/exports/router.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/identity/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_audit_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/identity/service.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/imports/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_audit_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/imports/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_categorization_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/ledger/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_categorization_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_audit_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/ledger/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_exports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_identity_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/spaces/router.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_audit_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/app/spaces/service.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_app_db_models", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/tests/conftest.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_app_imports_adapters_alfa_xlsx", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_app_imports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_router", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_app_imports_service", + "relation": "imports_from", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "submodule_import", + "source_file": "backend/tests/test_imports.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types_importdetail", + "target": "frontend_src_api_types_importsummary", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "type", + "source_file": "frontend/src/api/types.ts", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields_moneyfieldprops", + "target": "frontend_src_components_ui_fields_inputprops", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "type", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields_selectfieldprops", + "target": "frontend_src_components_ui_fields_selectprops", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "type", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields_textareafieldprops", + "target": "frontend_src_components_ui_fields_textareaprops", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "type", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields_textfieldprops", + "target": "frontend_src_components_ui_fields_inputprops", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "context": "type", + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "agents", + "target": "agents_graphify", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "AGENTS.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_alembic_env_run_migrations_offline", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/env.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_alembic_env", + "target": "backend_alembic_env_run_migrations_online", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/env.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_alembic_versions_20260911_0001_initial_schema_upgrade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema", + "target": "backend_alembic_versions_20260911_0001_initial_schema_downgrade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_downgrade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_column", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_has_check_constraint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_alembic_versions_20260918_0002_hold_lifecycle", + "target": "backend_alembic_versions_20260918_0002_hold_lifecycle_upgrade", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/alembic/versions/20260918_0002_hold_lifecycle.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_router_category_spend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/router.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_router_cash_flow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/router.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_router_plan_fact", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/router.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_router", + "target": "backend_app_analytics_router_balances", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/router.py", + "source_location": "L89", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_analytics_service_category_spend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_analytics_service_cash_flow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/service.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_analytics_service_plan_fact", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/service.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_app_analytics_service", + "target": "backend_app_analytics_service_balances", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/analytics/service.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models", + "target": "backend_app_audit_models_auditevent", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_audit_service", + "target": "backend_app_audit_service_record", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_planassignment", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models", + "target": "backend_app_budgeting_models_expectedincome", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L108", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_categories", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_categorybody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_create_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L152", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_update_plan", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_fund_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_assignmentitem", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_assignments", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L202", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_fund", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_expected_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L230", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_assignmentsbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_close", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_reopen", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_copy_previous", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L265", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_close_frontend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L273", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_fundingbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_reopen_frontend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L282", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_copy_frontend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_expectedincomebody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_period_for", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_monthbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_planbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_categoryfundingbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_parse_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router", + "target": "backend_app_budgeting_router_frontend_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_validate_year_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_period_bounds", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_shift_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_close_blockers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L435", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_get_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_require_open", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L487", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_get_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L494", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_create_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L501", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_ensure_credit_reserve_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L524", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_get_or_create_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_list_categories", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L544", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_archive_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L553", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_rename_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_set_assignments", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L588", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_add_expected_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L632", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_match_expected_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L659", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_list_periods", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_fund", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L700", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_close_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L731", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_previous_ym", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_reopen_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L799", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_closure_snapshot", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_copy_previous_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L831", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service", + "target": "backend_app_budgeting_service_balance_until", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_bankcategorymapping", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_incomesource", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_payee", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_payeealias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models", + "target": "backend_app_categorization_models_mcccode", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_get_income_source", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_ensure_income_source", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_get_or_create_payee", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_add_alias", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_find_payee_by_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_rule_category_for_payee", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L75", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service", + "target": "backend_app_categorization_service_set_payee_rule", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_config", + "target": "backend_app_config_get_settings", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/config.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_config", + "target": "backend_app_config_settings", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/config.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_base", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_utcdatetime", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_utcnow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_pkmixin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_db_base", + "target": "backend_app_db_base_timestampmixin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_db_session_get_engine", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_db_session_get_session_factory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_db_session_get_db", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_db_session_set_space_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_db_session", + "target": "backend_app_db_session_session_scope", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_dependencies_requestcontext", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/dependencies.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_dependencies_current_session", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/dependencies.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_dependencies_current_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/dependencies.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_dependencies", + "target": "backend_app_dependencies_require_csrf", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/dependencies.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_bad_request", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_unauthorized", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_forbidden", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_not_found", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_apperror", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_conflict", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_errors", + "target": "backend_app_errors_unprocessable", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_exports_models_dataexport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models", + "target": "backend_app_exports_models_deletionledger", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_router_request_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/router.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_router_export_status", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/router.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_exports_router", + "target": "backend_app_exports_router_download", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_consume_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_schedule_deletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_cancel_deletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L163", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_purge_due_spaces", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L173", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_request_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_get_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_json_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_csv_bytes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "backend_app_exports_service", + "target": "backend_app_exports_service_build_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/service.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_tasks_enqueue_export", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/tasks.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_tasks_purge_due_spaces_task", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/tasks.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks", + "target": "backend_app_exports_tasks_build_export_task", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/tasks.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_identity_mailer", + "target": "backend_app_identity_mailer_send_token_email", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/mailer.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_identity_models_user", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_identity_models_invitation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_identity_models_passwordreset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models", + "target": "backend_app_identity_models_session", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_request_password_reset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L117", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_confirm_password_reset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_me", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_logout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_invitebody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_acceptinvitebody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_loginbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_resetrequestbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_resetbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_set_auth_cookies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_create_invite", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_accept_invite", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router", + "target": "backend_app_identity_router_login", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L98", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_authenticate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_create_session", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_get_active_session", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L131", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_revoke_session", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_create_password_reset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_normalize_email", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_reset_password", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_validate_profile", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_create_invitation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_identity_service", + "target": "backend_app_identity_service_accept_invitation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/service.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_get_settings_row_cap", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L121", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_scan_text", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_rows_text", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_cell_str", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_parse_date", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L154", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_find_header", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L170", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_find_account_value", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L190", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L209", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_norm", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L301", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_read_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L307", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_find_header", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L317", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_header_value", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L341", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaheadermeta", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L353", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_statement_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L362", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_header_metadata", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L376", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_debit_operation_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx", + "target": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_mask_digits", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L102", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_account_fingerprint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_normalize_description", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L130", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_record_fingerprint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L136", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_sourcerow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_statementdraft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_statementadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base", + "target": "backend_app_imports_adapters_base_amount_to_kopecks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_init_magic_kind", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_init", + "target": "backend_app_imports_adapters_init_detect_adapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/__init__.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_first_page_text", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_ozon_normalize", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L292", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_ozon_cell", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L296", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L302", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf", + "target": "backend_app_imports_adapters_ozon_pdf_parse_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L266", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_rocketbank_pdf_date_from", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L286", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_imports_blob_blobstore", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_imports_blob_localdirectoryblobstore", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_imports_blob_s3blobstore", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_imports_blob_get_blob_store", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob", + "target": "backend_app_imports_blob_new_object_key", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_imports_celery_app", + "target": "backend_app_imports_celery_app_create_celery_app", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/celery_app.py", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_imports_crypto_encryptedfile", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_imports_crypto_decrypt_file", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto", + "target": "backend_app_imports_crypto_shred_dek_material", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_sourcerecord", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_sourcerecordlink", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_dedupcandidate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_holdresolution", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_statementdocument", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models", + "target": "backend_app_imports_models_parserun", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_imports_readers_quota_error", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/readers.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_imports_readers_open_xlsx", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/readers.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_imports_readers", + "target": "backend_app_imports_readers_open_pdf", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/readers.py", + "source_location": "L52", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_detail", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_reviewbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_decisionbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_review", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L212", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_decide_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L223", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_resolve_hold", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_confirm", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_confirmbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_reparse", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L287", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_revert", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L314", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_delete_source", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_holdresolvebody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_imports", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router", + "target": "backend_app_imports_router_upload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_prepare_reparse", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L1067", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_revert_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L1092", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_draft_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L120", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_delete_source_file", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L1259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_source_from_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L170", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_build_candidates", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L225", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_match_hold_resolutions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L328", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_apply_hold_matches", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L395", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_process_statement_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L427", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_create_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_list_documents", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L510", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_document_detail", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L519", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_decide_source_record", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L597", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_set_review_confirmation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L668", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_resolve_hold", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L708", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service", + "target": "backend_app_imports_service_confirm_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L821", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks", + "target": "backend_app_imports_tasks_enqueue_process_statement", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/tasks.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_imports_tasks", + "target": "backend_app_imports_tasks_process_statement_task", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/tasks.py", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_ledger_models_posting", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_ledger_models_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_ledger_models_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models", + "target": "backend_app_ledger_models_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_accounts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_create_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L105", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_archive_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_patch_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_delete_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_operations", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_accountbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_create_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_void_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L250", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_patch_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L264", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_operationbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_voidbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_operationpatchbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_account_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router", + "target": "backend_app_ledger_router_operation_json", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_existing_by_request_key", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_apply_suggestion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L119", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_create_expense", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L138", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_to_kopecks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_create_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_create_transfer", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L248", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_get_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_refunded_kopecks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L311", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_create_refund", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L324", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_get_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_ensure_period_open_for_date", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L390", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_void_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L411", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_update_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_require_active_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_archive_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_delete_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_list_operations", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L506", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_validate_category", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_list_accounts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L551", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_account_balance", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service", + "target": "backend_app_ledger_service_create_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_app_error_handler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_stale_data_handler", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_security_headers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_health", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_healthz", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "backend_app_main", + "target": "backend_app_main_readiness", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/main.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_ratelimit", + "target": "backend_app_ratelimit_allow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ratelimit.py", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "backend_app_security", + "target": "backend_app_security_hash_password", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/security.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_security", + "target": "backend_app_security_verify_password", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/security.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_security", + "target": "backend_app_security_new_token", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/security.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_security", + "target": "backend_app_security_token_digest", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/security.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_security", + "target": "backend_app_security_constant_time_equals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/security.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_spaces_models_financialspace", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models", + "target": "backend_app_spaces_models_membership", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_deletionbody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_memberinvitebody", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_current", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_invite_member", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_schedule_deletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_deletion_status", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L63", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router", + "target": "backend_app_spaces_router_cancel_deletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_create_space", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/service.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_get_membership", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/service.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_get_space_for_member", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/service.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_require_owner", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/service.py", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_service", + "target": "backend_app_spaces_service_list_spaces_for_user", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/service.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_tests_conftest_db_factory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/conftest.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_tests_conftest_db", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/conftest.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_tests_conftest", + "target": "backend_tests_conftest_client", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/conftest.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_testmoneyparsing", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L147", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_synthetic_alfa_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L157", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L325", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_make_source_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_ozon_extracted", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L475", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L531", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_make_draft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_same_page_rocket_lines", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L601", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_synthetic_rocket_lines", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L620", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L653", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_testbasecontract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L72", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_quotasettings", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L766", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L770", + "weight": 1.0 + }, + { + "source": "backend_tests_test_api", + "target": "backend_tests_test_api_test_openapi_contains_critical_paths", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_api.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_tests_test_api", + "target": "backend_tests_test_api_test_invite_login_and_authenticated_space", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_api.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_tests_test_budget_seed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_budget.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_budget.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_tests_test_budget_test_copy_previous_month_clamps_expected_day", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_budget.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_tests_test_budget_test_reopen_preserves_immutable_closure_history", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_budget.py", + "source_location": "L83", + "weight": 1.0 + }, + { + "source": "backend_tests_test_budget", + "target": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_budget.py", + "source_location": "L92", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_bank_status_defaults_to_posted_and_is_constrained", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_hold_row_creates_no_operation_on_confirm", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L186", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L203", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_confirm_as_posted_requires_reason", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L241", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L258", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L279", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_seed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L322", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_manual_confirm_of_income_hold_creates_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L374", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L402", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_unique_posted_record_resolves_hold_on_confirmation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_make_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_external_id_match_survives_description_drift", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L477", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_fingerprint_match_without_external_id_resolves", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L507", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_ambiguous_overlap_remains_unresolved", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L533", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_matcher_rejects_two_posted_candidates_for_one_hold", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L570", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_discarded_posted_record_does_not_resolve_hold", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L583", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L616", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_revert_clears_automatic_match_and_reblocks_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L664", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_revert_preserves_manual_hold_operation_and_provenance", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L698", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_hold_resolution_rejects_unknown_kind", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L725", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_manual_resolution_requires_reason_at_database_level", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L739", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_draft", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L764", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_row", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L776", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_reconciliation_separates_posted_and_hold_totals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L784", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_reconciliation_declared_outflow_mismatch_blocks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L809", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_add_record", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_reconciliation_hold_mismatch_is_review_blocking", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L824", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_reconciliation_balance_equation_ignores_holds", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L834", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_reconciliation_without_declared_totals_keeps_legacy_semantics", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L851", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_source_row_without_bank_status_defaults_posted", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L866", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds", + "target": "backend_tests_test_import_holds_test_resolve_endpoint_requires_csrf_and_resolves_hold", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L890", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_confirmed_import_must_be_reverted_before_reparse", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_invalid_direction_is_critical", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_unexpected_parser_failure_reaches_terminal_state", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_duplicate_candidate_can_reuse_unique_operation_without_client_id", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_duplicate_candidates_ignore_rows_from_same_parse_run", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L222", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_duplicate_candidates_ignore_unconfirmed_documents", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L247", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_seed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_import_detail_exposes_pending_candidate_and_blocker", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L326", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_transfer_merge_revert_restores_counterpart_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L346", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_ready_document", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_confirm_and_revert_are_idempotent", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_tests_test_imports", + "target": "backend_tests_test_imports_test_confirm_rejects_arithmetic_mismatch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_imports.py", + "source_location": "L96", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_tests_test_ledger_properties_test_idempotency_key_prevents_duplicate_income", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_tests_test_ledger_properties_seed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_tests_test_ledger_properties_test_transfer_postings_conserve_money", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_tests_test_ledger_properties", + "target": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L71", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3", + "target": "backend_tests_test_postgres_and_s3_test_s3_blob_round_trip", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L91", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_manifest_contract", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_row_counts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L124", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_row_invariants", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L144", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_hold_totals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L155", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_control_totals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L161", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_balances", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L180", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_declared_totals_match_parsed_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L194", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_test_service_reconciliation_matches", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L214", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_load_entries", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_check", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L74", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_fail", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures", + "target": "backend_tests_test_private_fixtures_parsed", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L86", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_dependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_name", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_devdependencies", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_private", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_version", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_type", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_package", + "target": "frontend_package_scripts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_hookform_resolvers", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_tanstack_react_query", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_i18next", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_react", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_react_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_react_hook_form", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_react_i18next", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_react_router_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_package_dependencies", + "target": "frontend_package_dependencies_zod", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_eslint_js", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_testing_library_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_testing_library_jest_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_testing_library_react", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_testing_library_user_event", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_types_react", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_types_react_dom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_vitejs_plugin_react", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_eslint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_eslint_plugin_jsx_a11y", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_eslint_plugin_react_hooks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_globals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_jsdom", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_openapi_typescript", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L41", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_typescript", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_typescript_eslint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_vite", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_package_devdependencies", + "target": "frontend_package_devdependencies_vitest", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_typecheck", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_lint", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_test", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_test_watch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_api_generate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_dev", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_build", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_package_scripts", + "target": "frontend_package_scripts_preview", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/package.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api", + "target": "frontend_scripts_generate_api_remote_candidates", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api", + "target": "frontend_scripts_generate_api_firstreadable", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api", + "target": "frontend_scripts_generate_api_main", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api", + "target": "frontend_scripts_generate_api_out_dir", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_scripts_generate_api", + "target": "frontend_scripts_generate_api_local_candidates", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/scripts/generate-api.mjs", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_apierror", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_apiclient", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L113", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_isapierror", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_queryvalue", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_requestoptions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_buildurl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_readcsrftoken", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_errorenvelope", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_parseerrorenvelope", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_toapierror", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client", + "target": "frontend_src_api_client_request", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L78", + "weight": 1.0 + }, + { + "source": "frontend_src_api_endpoints", + "target": "frontend_src_api_endpoints_api", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/endpoints.ts", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_src_api_generated_schema_d", + "target": "frontend_src_api_generated_schema_d_defs", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L1000", + "weight": 1.0 + }, + { + "source": "frontend_src_api_generated_schema_d", + "target": "frontend_src_api_generated_schema_d_operations", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L1001", + "weight": 1.0 + }, + { + "source": "frontend_src_api_generated_schema_d", + "target": "frontend_src_api_generated_schema_d_paths", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_api_generated_schema_d", + "target": "frontend_src_api_generated_schema_d_webhooks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L746", + "weight": 1.0 + }, + { + "source": "frontend_src_api_generated_schema_d", + "target": "frontend_src_api_generated_schema_d_components", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/generated/schema.d.ts", + "source_location": "L747", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_invalidationroots", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_querykeys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_space_root", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_session_root", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_sessioninvalidationroot", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_api_querykeys", + "target": "frontend_src_api_querykeys_spaceinvalidationroot", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/queryKeys.ts", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_locale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_page", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_accounttype", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_loginpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_acceptinvitepayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_accountstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_passwordresetpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_budgetstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L127", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_budgetwarning", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L129", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_budgetblocker", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L134", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_expectedincomestatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L139", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_expectedincome", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L141", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_budgetsummary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L150", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_categorykind", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L164", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_budgetcategory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_importstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L179", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_importsummary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_importissue", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L200", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_reconciliationstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L206", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_reconciliation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L208", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_rowdecision", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L216", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_importrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L218", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_importdetail", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L231", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_saverowdecisionpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L246", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_confirmimportpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L251", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_categoryspenditem", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L256", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_createaccountpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_planfactitem", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L263", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_planfactreport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_cashflowmonth", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L276", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_balanceitem", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L284", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_balancesreport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L291", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_exportstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L299", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_user", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_exportinfo", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L301", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_spacedeletionstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L308", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_operationkind", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_operationstatus", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_operation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_createoperationpayload", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "frontend_src_api_types", + "target": "frontend_src_api_types_operationfilters", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/types.ts", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_app_app", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/App.tsx", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_app", + "target": "frontend_src_app_queryclient", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/App.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_accountspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_analyticspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_budgetpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_importdetailpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_importspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_loginpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_notfoundpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_operationspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_reviewqueuepage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_resetpasswordpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_settingspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_requireauth", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_approutes", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_app_router_acceptinvitepage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_columnchart", + "target": "frontend_src_components_charts_columnchart_columnchartprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_columnchart", + "target": "frontend_src_components_charts_columnchart_columnchart", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_columnchart", + "target": "frontend_src_components_charts_columnchart_cashflowcolumn", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/ColumnChart.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_horizontalbars", + "target": "frontend_src_components_charts_horizontalbars_horizontalbars", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_horizontalbars", + "target": "frontend_src_components_charts_horizontalbars_barrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_horizontalbars", + "target": "frontend_src_components_charts_horizontalbars_horizontalbarsprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/HorizontalBars.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_planfactbars", + "target": "frontend_src_components_charts_planfactbars_planfactbarsprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_planfactbars", + "target": "frontend_src_components_charts_planfactbars_planfactbars", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_src_components_charts_planfactbars", + "target": "frontend_src_components_charts_planfactbars_planfactrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/charts/PlanFactBars.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_layout_applayout_applayout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_applayout", + "target": "frontend_src_components_layout_applayout_nav_items", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/layout/AppLayout.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_components_layout_langswitcher", + "target": "frontend_src_components_layout_langswitcher_langswitcher", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/layout/LangSwitcher.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_badge", + "target": "frontend_src_components_ui_badge_badgetone", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Badge.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_badge", + "target": "frontend_src_components_ui_badge_badge", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Badge.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_button", + "target": "frontend_src_components_ui_button_variant", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_button", + "target": "frontend_src_components_ui_button_buttonprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_button", + "target": "frontend_src_components_ui_button_button", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Button.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_confirmdialog_confirmdialog", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_confirmdialog", + "target": "frontend_src_components_ui_confirmdialog_confirmdialogprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/ConfirmDialog.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_emptystate", + "target": "frontend_src_components_ui_emptystate_emptystateprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/EmptyState.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_emptystate", + "target": "frontend_src_components_ui_emptystate_emptystate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/EmptyState.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_errorstate", + "target": "frontend_src_components_ui_errorstate_errorstate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_errorstate", + "target": "frontend_src_components_ui_errorstate_errorstateprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/ErrorState.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_inputprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_selectprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_selectfieldprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_selectfield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L118", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_textareaprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_textareafieldprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L137", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_textareafield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L143", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_fieldchrome", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_fieldchromewrap", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_textfieldprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_textfield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_moneyfieldprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_fields", + "target": "frontend_src_components_ui_fields_moneyfield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/fields.tsx", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_modal", + "target": "frontend_src_components_ui_modal_modal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Modal.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_modal", + "target": "frontend_src_components_ui_modal_modalprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Modal.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_monthswitcher", + "target": "frontend_src_components_ui_monthswitcher_monthswitcher", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/MonthSwitcher.tsx", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_monthswitcher", + "target": "frontend_src_components_ui_monthswitcher_monthswitcherprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/MonthSwitcher.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_pageheader", + "target": "frontend_src_components_ui_pageheader_pageheaderprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/PageHeader.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_pageheader", + "target": "frontend_src_components_ui_pageheader_pageheader", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/PageHeader.tsx", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_querygate_querygate", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_querygate", + "target": "frontend_src_components_ui_querygate_querygateprops", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/QueryGate.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_spinner", + "target": "frontend_src_components_ui_spinner_spinner", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Spinner.tsx", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_toastapi", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_toastcontext", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_toastprovider", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_toastkind", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_usetoast", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "frontend_src_components_ui_toaster", + "target": "frontend_src_components_ui_toaster_toastitem", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/components/ui/Toaster.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_hooks_useaccounts_useactiveaccounts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_hooks_useaccounts_usecreateaccount", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_hooks_useaccounts_usearchiveaccount", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useaccounts", + "target": "frontend_src_hooks_useaccounts_useaccounts", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAccounts.ts", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_hooks_useanalytics_useanalyticsplanfact", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_hooks_useanalytics_useanalyticscashflow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_hooks_useanalytics_useanalyticsbalances", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useanalytics", + "target": "frontend_src_hooks_useanalytics_useanalyticscategoryspend", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAnalytics.ts", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_usesessionmutation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_uselogin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_useacceptinvite", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_userequestpasswordreset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_useconfirmpasswordreset", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_uselogout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useauth", + "target": "frontend_src_hooks_useauth_useme", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useAuth.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usebudgetcategories", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usebudgeterrortoaster", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_useupdateplan", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usefundcategory", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_useperiodmutation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L59", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_useclosemonth", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usebudgetsummary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usereopenmonth", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usebudget", + "target": "frontend_src_hooks_usebudget_usecopypreviousmonth", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useBudget.ts", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_userevertimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L101", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_useimports", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_useimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_useimporterrortoaster", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_useuploadimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_usesaverowdecision", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L56", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_useconfirmimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useimports", + "target": "frontend_src_hooks_useimports_usereparseimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useImports.ts", + "source_location": "L85", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_hooks_useoperations_useledgermutation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_hooks_useoperations_usecreateoperation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L37", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_hooks_useoperations_usevoidoperation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_hooks_useoperations_usecategorizeoperation", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_useoperations", + "target": "frontend_src_hooks_useoperations_useoperations", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useOperations.ts", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_hooks_usespacelifecycle_userequestexport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_hooks_usespacelifecycle_userequestdeletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_hooks_usespacelifecycle_usecanceldeletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "frontend_src_hooks_usespacelifecycle", + "target": "frontend_src_hooks_usespacelifecycle_usespacedeletion", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/hooks/useSpaceLifecycle.ts", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_storedlocale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_detectlocale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_createi18n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_i18n", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L44", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_setlocale", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_localelabel", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "frontend_src_i18n_index", + "target": "frontend_src_i18n_index_locales", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/i18n/index.ts", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_main", + "target": "frontend_src_main_container", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/main.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_pages_acceptinvitepage_acceptinvitevalues", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_acceptinvitepage", + "target": "frontend_src_pages_acceptinvitepage_acceptinvitepage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AcceptInvitePage.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_pages_accountspage_usememoschema", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L102", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_pages_accountspage_accountspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_pages_accountspage_accountformvalues", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_accountspage", + "target": "frontend_src_pages_accountspage_accountform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AccountsPage.tsx", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_pages_analyticspage_range_choices", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_analyticspage", + "target": "frontend_src_pages_analyticspage_analyticspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/AnalyticsPage.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_pages_budgetpage_budgetpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L123", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_pages_budgetpage_planmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_budgetpage", + "target": "frontend_src_pages_budgetpage_fundmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/BudgetPage.tsx", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_pages_importdetailpage_decisions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_pages_importdetailpage_step_order", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_pages_importdetailpage_stepindexfor", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_pages_importdetailpage_confirmmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importdetailpage", + "target": "frontend_src_pages_importdetailpage_importdetailpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportDetailPage.tsx", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_pages_importspage_uploadmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_importspage", + "target": "frontend_src_pages_importspage_importspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ImportsPage.tsx", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_pages_loginpage_loginformvalues", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_loginpage", + "target": "frontend_src_pages_loginpage_loginpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/LoginPage.tsx", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_notfoundpage", + "target": "frontend_src_pages_notfoundpage_notfoundpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/NotFoundPage.tsx", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_incomeform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L143", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_transferform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L217", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_operation_kinds", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_refundform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L296", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_amountfield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_datefield", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_accountselect", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_operationmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L379", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_voidmodal", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L404", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_operationspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L450", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_operationspage", + "target": "frontend_src_pages_operationspage_expenseform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/OperationsPage.tsx", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_pages_resetpasswordpage_resetvalues", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_resetpasswordpage", + "target": "frontend_src_pages_resetpasswordpage_resetpasswordpage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ResetPasswordPage.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_pages_reviewqueuepage_uncategorizedrow", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_reviewqueuepage", + "target": "frontend_src_pages_reviewqueuepage_reviewqueuepage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/ReviewQueuePage.tsx", + "source_location": "L68", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_pages_settingspage_deletionformvalues", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_pages_settingspage_deletionform", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_pages_settingspage", + "target": "frontend_src_pages_settingspage_settingspage", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/pages/SettingsPage.tsx", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_test_accounts_page_test_listmock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_test_accounts_page_test_createmock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_src_test_accounts_page_test", + "target": "frontend_src_test_accounts_page_test_account", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/accounts-page.test.tsx", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_summarymock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_categoriesmock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_updateplanmock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_month", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_summary", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_test_budget_plan_test", + "target": "frontend_src_test_budget_plan_test_categories", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/budget-plan.test.tsx", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "frontend_src_test_chart_accessible_table_test", + "target": "frontend_src_test_chart_accessible_table_test_rows", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/chart-accessible-table.test.tsx", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_test_helpers", + "target": "frontend_src_test_helpers_renderwithproviders", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_src_test_helpers", + "target": "frontend_src_test_helpers_createtestqueryclient", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/helpers.tsx", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_i18n_parity_test", + "target": "frontend_src_test_i18n_parity_test_rukeys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "frontend_src_test_i18n_parity_test", + "target": "frontend_src_test_i18n_parity_test_enkeys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "frontend_src_test_i18n_parity_test", + "target": "frontend_src_test_i18n_parity_test_collect", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/i18n-parity.test.ts", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_test_import_polling_test_getimport", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_test_import_polling_test_detail", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "frontend_src_test_import_polling_test", + "target": "frontend_src_test_import_polling_test_makewrapper", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/import-polling.test.tsx", + "source_location": "L51", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_login_page_test_memock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_login_page_test_loginmock", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_login_page_test_user", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "frontend_src_test_login_page_test", + "target": "frontend_src_test_login_page_test_renderlogin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/login-page.test.tsx", + "source_location": "L32", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_test_query_keys_test_sample_filters", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "frontend_src_test_query_keys_test_sample_keys", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/query-keys.test.ts", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig", + "target": "frontend_tsconfig_compileroptions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig", + "target": "frontend_tsconfig_include", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_nounusedparameters", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_nofallthroughcasesinswitch", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_nouncheckedindexedaccess", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_verbatimmodulesyntax", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_isolatedmodules", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_esmoduleinterop", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L15", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_forceconsistentcasinginfilenames", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_usedefineforclassfields", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_resolvejsonmodule", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_skiplibcheck", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_noemit", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_types", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_baseurl", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_paths", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_target", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_lib", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_module", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_moduleresolution", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_jsx", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_strict", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "frontend_tsconfig_compileroptions", + "target": "frontend_tsconfig_compileroptions_nounusedlocals", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/tsconfig.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "infra_postgres_init_app_role", + "target": "infra_postgres_init_app_role_sh__entry", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/postgres/init-app-role.sh", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "kilo_kilo", + "target": "kilo_kilo_schema", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L2", + "weight": 1.0 + }, + { + "source": "kilo_kilo", + "target": "kilo_kilo_plugin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "kilo_kilo", + "target": "kilo_kilo_mcp", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "kilo_kilo_mcp", + "target": "kilo_kilo_mcp_graphify", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L7", + "weight": 1.0 + }, + { + "source": "kilo_kilo_mcp_graphify", + "target": "kilo_kilo_graphify_enabled", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "kilo_kilo_mcp_graphify", + "target": "kilo_kilo_graphify_timeout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "kilo_kilo_mcp_graphify", + "target": "kilo_kilo_graphify_type", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "kilo_kilo_mcp_graphify", + "target": "kilo_kilo_graphify_command", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/kilo.json", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_confirmed_decisions", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_implementation_plan", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_goal_and_constraints", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L3", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_validation_and_rollout", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L70", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_gitea_ci_and_real_statement_imports", + "target": "kilo_plans_1789727434954_gitea_ci_real_statement_imports_principal_risks", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md", + "source_location": "L79", + "weight": 1.0 + }, + { + "source": "kilo_plugins_graphify", + "target": "kilo_plugins_graphify_graphifyplugin", + "relation": "contains", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plugins/graphify.js", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_acceptinvitepage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_accountspage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_analyticspage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_budgetpage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_importdetailpage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_importspage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_loginpage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_notfoundpage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_operationspage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_resetpasswordpage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_reviewqueuepage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_app_router", + "target": "frontend_src_pages_settingspage", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/app/router.tsx" + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "i1", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/query-keys.test.ts" + }, + { + "source": "frontend_src_test_query_keys_test", + "target": "i2", + "relation": "dynamic_import", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/test/query-keys.test.ts" + }, + { + "source": "backend_app_audit_models_auditevent", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models_auditevent", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models_auditevent", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_budgetperiod", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_budgetperiod", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_budgetperiod", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L25", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincome", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincome", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincome", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincomematch", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincomematch", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_expectedincomematch", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_fundingmovement", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_fundingmovement", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_fundingmovement", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L132", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_periodclosure", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_periodclosure", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_periodclosure", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L166", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_planassignment", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_planassignment", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_planassignment", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L47", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignmentitem", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L19", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_assignmentsbody", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L24", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categorybody", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_categoryfundingbody", + "target": "backend_app_budgeting_router_monthbody", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_expectedincomebody", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_fundingbody", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_monthbody", + "target": "backend_app_budgeting_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L46", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_router_planbody", + "target": "backend_app_budgeting_router_monthbody", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/router.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_bankcategorymapping", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_bankcategorymapping", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L103", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_categorizationrule", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_categorizationrule", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_categorizationrule", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L64", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_incomesource", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_incomesource", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_incomesource", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_mcccode", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payee", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payee", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payee", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payeealias", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payeealias", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_payeealias", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_config_settings", + "target": "basesettings", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/config.py", + "source_location": "L8", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_base", + "target": "declarativebase", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcdatetime", + "target": "typedecorator", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_errors_apperror", + "target": "exception", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L4", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_dataexport", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_dataexport", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_dataexport", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_deletionledger", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_deletionledger", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_deletionledger", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L29", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_invitation", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_invitation", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_invitation", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_passwordreset", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_passwordreset", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_passwordreset", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_session", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_session", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_session", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_user", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_user", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_models_user", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_acceptinvitebody", + "target": "backend_app_identity_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_invitebody", + "target": "backend_app_identity_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_loginbody", + "target": "backend_app_identity_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_resetbody", + "target": "backend_app_identity_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_identity_router_resetrequestbody", + "target": "backend_app_identity_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/identity/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L484", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaheadermeta", + "target": "typeddict", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L353", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_statementadapter", + "target": "backend_app_imports_adapters_base_py_protocol", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "target": "backend_app_errors_apperror", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L66", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L302", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_blobstore", + "target": "backend_app_imports_blob_py_protocol", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_dedupcandidate", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_dedupcandidate", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_dedupcandidate", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L174", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_holdresolution", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_holdresolution", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_holdresolution", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L219", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_parserun", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_parserun", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_parserun", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L77", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecord", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecord", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecord", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L100", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecordlink", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecordlink", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_sourcerecordlink", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L148", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_statementdocument", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_statementdocument", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_statementdocument", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L42", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_confirmbody", + "target": "backend_app_imports_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_decisionbody", + "target": "backend_app_imports_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_holdresolvebody", + "target": "backend_app_imports_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_imports_router_reviewbody", + "target": "backend_app_imports_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/router.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_account", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_account", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_account", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_category", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_category", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_category", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_operation", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_operation", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_operation", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_posting", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_posting", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_posting", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L125", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_accountbody", + "target": "backend_app_ledger_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operationbody", + "target": "backend_app_ledger_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_operationpatchbody", + "target": "backend_app_ledger_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L49", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_router_voidbody", + "target": "backend_app_ledger_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/router.py", + "source_location": "L45", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_financialspace", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_financialspace", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_financialspace", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_membership", + "target": "backend_app_db_base_base", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_membership", + "target": "backend_app_db_base_pkmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_models_membership", + "target": "backend_app_db_base_timestampmixin", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/models.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_deletionbody", + "target": "backend_app_spaces_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L17", + "weight": 1.0 + }, + { + "source": "backend_app_spaces_router_memberinvitebody", + "target": "backend_app_spaces_router_py_basemodel", + "relation": "inherits", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/spaces/router.py", + "source_location": "L21", + "weight": 1.0 + }, + { + "source": "backend_app_config_settings", + "target": "backend_app_config_settings_broker_url", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/config.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_config_settings", + "target": "backend_app_config_settings_kek", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/config.py", + "source_location": "L54", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcdatetime", + "target": "backend_app_db_base_utcdatetime_process_bind_param", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_utcdatetime", + "target": "backend_app_db_base_utcdatetime_process_result_value", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_errors_apperror", + "target": "backend_app_errors_apperror_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L10", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L259", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L271", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L40", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_sourcerow", + "target": "backend_app_imports_adapters_base_sourcerow_post_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L39", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_statementadapter", + "target": "backend_app_imports_adapters_base_statementadapter_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_statementadapter", + "target": "backend_app_imports_adapters_base_statementadapter_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L81", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L69", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L159", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L171", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_draft_from_extracted", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L188", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_required_line", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L237", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter_table_row", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L243", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "target": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L38", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "target": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L48", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord", + "target": "backend_app_imports_adapters_rocketbank_pdf_pendingrecord_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L269", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_draft_from_lines", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L110", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_record", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L232", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L82", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter_parse", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L93", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_blobstore", + "target": "backend_app_imports_blob_blobstore_put", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_blobstore", + "target": "backend_app_imports_blob_blobstore_get", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L13", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_blobstore", + "target": "backend_app_imports_blob_blobstore_delete", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L14", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore", + "target": "backend_app_imports_blob_localdirectoryblobstore_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore", + "target": "backend_app_imports_blob_localdirectoryblobstore_path", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L23", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore", + "target": "backend_app_imports_blob_localdirectoryblobstore_put", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L28", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore", + "target": "backend_app_imports_blob_localdirectoryblobstore_get", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L33", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_localdirectoryblobstore", + "target": "backend_app_imports_blob_localdirectoryblobstore_delete", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L36", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_s3blobstore", + "target": "backend_app_imports_blob_s3blobstore_init", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L43", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_s3blobstore", + "target": "backend_app_imports_blob_s3blobstore_put", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L58", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_s3blobstore", + "target": "backend_app_imports_blob_s3blobstore_get", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L61", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_s3blobstore", + "target": "backend_app_imports_blob_s3blobstore_delete", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_setup_method", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L326", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_detect", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L330", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_detect_rejects_workbook_without_contract_header", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L333", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_contract_fields", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L337", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_missing_period_field_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L355", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_inconsistent_expense_control_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L362", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_rows_with_hold", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L383", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_external_ids_from_code_column", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L402", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_mcc_from_description", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L412", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_footer_is_excluded", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L422", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_parse_is_deterministic", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L427", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_contract", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L430", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_service_reconciliation_flags_mismatch", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L437", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_malformed_layout_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L448", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unexpected_mid_table_row_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L455", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_unsupported_currency_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L462", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_tests_test_adapter_contracts_testalfadebitcontract_test_row_quota_is_enforced", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L468", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_credit_adapters_stay_present_but_unregistered", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L106", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_xlsx", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L114", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_pdf", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L122", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_magic_kind", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_source_row_defaults_to_posted", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L73", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_negative_amount_is_rejected", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L76", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_unknown_bank_status_is_rejected", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L80", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_draft_declared_totals_default_to_none", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L84", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_per_contract_parser_versions", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L90", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_tests_test_adapter_contracts_testbasecontract_test_registry_lists_only_verified_contracts", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L99", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testmoneyparsing", + "target": "backend_tests_test_adapter_contracts_testmoneyparsing_test_plain_and_separated_amounts", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testmoneyparsing", + "target": "backend_tests_test_adapter_contracts_testmoneyparsing_test_malformed_amount_fails_closed_without_leaking_digits", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L140", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_setup_method", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L532", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_core_contract_fields", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L536", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_multiline_cells_stay_one_transaction", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L550", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_header_marker_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L562", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_missing_totals_fail_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L568", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_no_rows_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L574", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_unexpected_row_shape_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L579", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L585", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_tests_test_adapter_contracts_testozondebitcontract_test_oversized_pdf_is_rejected_by_quota", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L592", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_setup_method", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L654", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_day_and_page_state_machine", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L657", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_row_refs_are_unique_within_a_page", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L664", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_statement_controls", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L674", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_record_folding_and_enrichment", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L690", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_repeated_headers_and_daily_totals_are_ignored", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L707", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_parse_is_deterministic", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L714", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_record_before_day_section_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L719", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_missing_header_block_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L728", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_unrecognized_content_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L738", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_fold_line_cap_fails_closed", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L744", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_detect_and_parse_fail_closed_on_blank_pdf", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L750", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract_test_oversized_pdf_is_rejected_by_quota", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L757", + "weight": 1.0 + }, + { + "source": "frontend_src_api_client_apierror", + "target": "frontend_src_api_client_apierror_constructor", + "relation": "method", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/src/api/client.ts", + "source_location": "L6", + "weight": 1.0 + }, + { + "source": "backend_app_audit_models_rationale_11", + "target": "backend_app_audit_models_auditevent", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/audit/models.py", + "source_location": "L11", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_rationale_104", + "target": "backend_app_budgeting_models_expectedincomematch", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_rationale_133", + "target": "backend_app_budgeting_models_fundingmovement", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L133", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_rationale_167", + "target": "backend_app_budgeting_models_periodclosure", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L167", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_models_rationale_26", + "target": "backend_app_budgeting_models_budgetperiod", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L26", + "weight": 1.0 + }, + { + "source": "backend_app_budgeting_service_rationale_115", + "target": "backend_app_budgeting_service_compute_period_state", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/budgeting/service.py", + "source_location": "L115", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_rationale_104", + "target": "backend_app_categorization_models_bankcategorymapping", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L104", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_rationale_65", + "target": "backend_app_categorization_models_categorizationrule", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L65", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_models_rationale_94", + "target": "backend_app_categorization_models_mcccode", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/models.py", + "source_location": "L94", + "weight": 1.0 + }, + { + "source": "backend_app_categorization_service_rationale_9", + "target": "backend_app_categorization_service_resolve_category_name", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/categorization/service.py", + "source_location": "L9", + "weight": 1.0 + }, + { + "source": "backend_app_db_base_rationale_22", + "target": "backend_app_db_base_utcdatetime", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/base.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_db_models_rationale_1", + "target": "backend_app_db_models", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/models.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_rationale_50", + "target": "backend_app_db_session_set_space_context", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L50", + "weight": 1.0 + }, + { + "source": "backend_app_db_session_rationale_60", + "target": "backend_app_db_session_session_scope", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/db/session.py", + "source_location": "L60", + "weight": 1.0 + }, + { + "source": "backend_app_errors_rationale_5", + "target": "backend_app_errors_apperror", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/errors.py", + "source_location": "L5", + "weight": 1.0 + }, + { + "source": "backend_app_exports_models_rationale_30", + "target": "backend_app_exports_models_deletionledger", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/exports/models.py", + "source_location": "L30", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_rationale_210", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L210", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_rationale_34", + "target": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L34", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_rationale_111", + "target": "backend_app_imports_adapters_base_money_to_kopecks", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L111", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_base_rationale_67", + "target": "backend_app_imports_adapters_base_unsupportedstatementlayout", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/base.py", + "source_location": "L67", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_rationale_128", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L128", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_ozon_pdf_rationale_31", + "target": "backend_app_imports_adapters_ozon_pdf_ozonpdfadapterbase", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/ozon_pdf.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_app_imports_adapters_rocketbank_pdf_rationale_53", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/adapters/rocketbank_pdf.py", + "source_location": "L53", + "weight": 1.0 + }, + { + "source": "backend_app_imports_blob_rationale_18", + "target": "backend_app_imports_blob_localdirectoryblobstore", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/blob.py", + "source_location": "L18", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_rationale_22", + "target": "backend_app_imports_crypto_encrypt_file", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L22", + "weight": 1.0 + }, + { + "source": "backend_app_imports_crypto_rationale_57", + "target": "backend_app_imports_crypto_shred_dek_material", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/crypto.py", + "source_location": "L57", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_rationale_101", + "target": "backend_app_imports_models_sourcerecord", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L101", + "weight": 1.0 + }, + { + "source": "backend_app_imports_models_rationale_220", + "target": "backend_app_imports_models_holdresolution", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/models.py", + "source_location": "L220", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_rationale_171", + "target": "backend_app_imports_service_reconciliation_summary", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L171", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_rationale_331", + "target": "backend_app_imports_service_match_hold_resolutions", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L331", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_rationale_719", + "target": "backend_app_imports_service_resolve_hold", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/imports/service.py", + "source_location": "L719", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_rationale_126", + "target": "backend_app_ledger_models_posting", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_rationale_160", + "target": "backend_app_ledger_models_category", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L160", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_rationale_27", + "target": "backend_app_ledger_models_account", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_models_rationale_55", + "target": "backend_app_ledger_models_operation", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/models.py", + "source_location": "L55", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_rationale_126", + "target": "backend_app_ledger_service_apply_suggestion", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L126", + "weight": 1.0 + }, + { + "source": "backend_app_ledger_service_rationale_20", + "target": "backend_app_ledger_service_to_kopecks", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ledger/service.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_ratelimit_rationale_16", + "target": "backend_app_ratelimit_allow", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/app/ratelimit.py", + "source_location": "L16", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_rationale_1", + "target": "backend_tests_test_adapter_contracts", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_rationale_771", + "target": "backend_tests_test_adapter_contracts_minimal_pdf", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L771", + "weight": 1.0 + }, + { + "source": "backend_tests_test_import_holds_rationale_112", + "target": "backend_tests_test_import_holds_hold_document", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L112", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_rationale_1", + "target": "backend_tests_test_private_fixtures", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L1", + "weight": 1.0 + }, + { + "source": "backend_tests_test_private_fixtures_rationale_35", + "target": "backend_tests_test_private_fixtures_load_entries", + "relation": "rationale_for", + "_origin": "ast", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "backend/tests/test_private_fixtures.py", + "source_location": "L35", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_build_export_task", + "target": "backend_tests_conftest_db", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L12", + "weight": 1.0 + }, + { + "source": "backend_app_exports_tasks_purge_due_spaces_task", + "target": "backend_tests_conftest_db", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "backend/app/exports/tasks.py", + "source_location": "L27", + "weight": 1.0 + }, + { + "source": "backend_app_imports_service_process_statement_document", + "target": "backend_tests_conftest_db", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "backend/app/imports/service.py", + "source_location": "L429", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_tests_conftest_db", + "relation": "indirect_call", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "argument", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L31", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_alfa_workbook_bytes", + "target": "workbook", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L149", + "weight": 1.0 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract_test_detect_adapter_fails_closed_on_unknown_xlsx", + "target": "workbook", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L116", + "weight": 1.0 + }, + { + "source": "backend_tests_test_postgres_and_s3_test_postgres_rls_requires_matching_transaction_context", + "target": "backend_app_identity_models_session", + "relation": "calls", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.85, + "context": "call", + "source_file": "backend/tests/test_postgres_and_s3.py", + "source_location": "L20", + "weight": 1.0 + }, + { + "source": "backend_app_main_app_error_handler", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "context": "parameter_type", + "source_file": "backend/app/main.py", + "source_location": "L27", + "weight": 0.8 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema_downgrade", + "target": "backend_app_db_base_base", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L82", + "weight": 0.8 + }, + { + "source": "backend_alembic_versions_20260911_0001_initial_schema_upgrade", + "target": "backend_app_db_base_base", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/alembic/versions/20260911_0001_initial_schema.py", + "source_location": "L38", + "weight": 0.8 + }, + { + "source": "backend_app_budgeting_models_periodclosure", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/budgeting/models.py", + "source_location": "L185", + "weight": 0.8 + }, + { + "source": "backend_app_exports_models_dataexport", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/exports/models.py", + "source_location": "L24", + "weight": 0.8 + }, + { + "source": "backend_app_exports_models_deletionledger", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/exports/models.py", + "source_location": "L35", + "weight": 0.8 + }, + { + "source": "backend_app_exports_router_request_export", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/exports/router.py", + "source_location": "L27", + "weight": 0.8 + }, + { + "source": "backend_app_exports_service_build_export", + "target": "backend_app_audit_models_auditevent", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/exports/service.py", + "source_location": "L96", + "weight": 0.8 + }, + { + "source": "backend_app_identity_models_invitation", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/identity/models.py", + "source_location": "L36", + "weight": 0.8 + }, + { + "source": "backend_app_identity_models_passwordreset", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/identity/models.py", + "source_location": "L50", + "weight": 0.8 + }, + { + "source": "backend_app_identity_models_session", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/identity/models.py", + "source_location": "L62", + "weight": 0.8 + }, + { + "source": "backend_app_identity_router_login", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/identity/router.py", + "source_location": "L103", + "weight": 0.8 + }, + { + "source": "backend_app_identity_router_request_password_reset", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/identity/router.py", + "source_location": "L122", + "weight": 0.8 + }, + { + "source": "backend_app_imports_adapters_alfa_xlsx_alfaxlsxadapterbase", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/imports/adapters/alfa_xlsx.py", + "source_location": "L43", + "weight": 0.8 + }, + { + "source": "backend_app_imports_models_holdresolution", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/imports/models.py", + "source_location": "L270", + "weight": 0.8 + }, + { + "source": "backend_app_imports_router_reparse", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/imports/router.py", + "source_location": "L304", + "weight": 0.8 + }, + { + "source": "backend_app_imports_router_upload", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/imports/router.py", + "source_location": "L97", + "weight": 0.8 + }, + { + "source": "backend_app_spaces_models_financialspace", + "target": "backend_app_db_base_utcdatetime", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/app/spaces/models.py", + "source_location": "L15", + "weight": 0.8 + }, + { + "source": "backend_tests_conftest_db_factory", + "target": "backend_app_db_base_base", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/conftest.py", + "source_location": "L32", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testalfadebitcontract", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L327", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_app_imports_adapters_alfa_xlsx_alfacreditxlsxadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L107", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_app_imports_adapters_ozon_pdf_ozoncreditpdfadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L108", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_app_imports_adapters_alfa_xlsx_alfadebitxlsxadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L95", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L96", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testbasecontract", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L97", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_app_imports_adapters_ozon_pdf_ozondebitpdfadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L533", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testozondebitcontract", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L596", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_app_imports_adapters_rocketbank_pdf_rocketbankdebitpdfadapter", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L655", + "weight": 0.8 + }, + { + "source": "backend_tests_test_adapter_contracts_testrocketbankdebitcontract", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_adapter_contracts.py", + "source_location": "L761", + "weight": 0.8 + }, + { + "source": "backend_tests_test_budget_test_periods_must_close_in_calendar_order", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_budget.py", + "source_location": "L96", + "weight": 0.8 + }, + { + "source": "backend_tests_test_budget_test_uncategorized_expense_blocks_close", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_budget.py", + "source_location": "L49", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_confirm_as_posted_requires_reason", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L244", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_discard_as_cancelled_requires_reason_and_unblocks_month", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L205", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_hold_cannot_be_resolved_before_document_confirmation", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L263", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_hold_matching_is_tenant_scoped", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L651", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_creates_one_operation_and_late_import_dedupes", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L344", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_honors_closed_period", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L411", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_manual_confirm_rejects_bad_action_and_non_hold_row", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L287", + "weight": 0.8 + }, + { + "source": "backend_tests_test_import_holds_test_unresolved_hold_blocks_only_its_occurred_month", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_import_holds.py", + "source_location": "L193", + "weight": 0.8 + }, + { + "source": "backend_tests_test_imports_test_confirm_rejects_arithmetic_mismatch", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_imports.py", + "source_location": "L99", + "weight": 0.8 + }, + { + "source": "backend_tests_test_imports_test_confirm_reports_pending_candidate_instead_of_generic_not_ready", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_imports.py", + "source_location": "L340", + "weight": 0.8 + }, + { + "source": "backend_tests_test_imports_test_confirmed_import_must_be_reverted_before_reparse", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_imports.py", + "source_location": "L107", + "weight": 0.8 + }, + { + "source": "backend_tests_test_ledger_properties_test_credit_expense_is_negative_balance_and_refund_is_capped", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L99", + "weight": 0.8 + }, + { + "source": "backend_tests_test_ledger_properties_test_cross_space_lookup_fails_closed", + "target": "backend_app_errors_apperror", + "relation": "uses", + "_origin": "ast", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "backend/tests/test_ledger_properties.py", + "source_location": "L121", + "weight": 0.8 + }, + { + "source": "docs_adr_0001_financial_space_ownership_and_rls_space_ownership", + "target": "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 11-20", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_operations_postings_journal", + "target": "docs_adr_0002_journal_and_budget_reserves_derived_balances", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 13-15", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "target": "docs_adr_0003_versioned_statement_imports_atomic_confirm_revert", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 15", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "target": "docs_adr_0003_versioned_statement_imports_conservative_deduplication", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "target": "docs_adr_0003_versioned_statement_imports_immutable_statement_document", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 11-14", + "weight": 1.0 + }, + { + "source": "docs_adr_0004_provider_neutral_encrypted_data_boundary_provider_neutral_boundary", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_envelope_encryption", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "line 14", + "weight": 1.0 + }, + { + "source": "docs_adr_0004_provider_neutral_encrypted_data_boundary_provider_neutral_boundary", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_rf_data_residency", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "lines 9-13", + "weight": 1.0 + }, + { + "source": "context_credit_reserve", + "target": "context_financial_account", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 21", + "weight": 1.0 + }, + { + "source": "context_expected_income", + "target": "context_income_source", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "lines 22-23", + "weight": 1.0 + }, + { + "source": "context_funding", + "target": "context_general_pool", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 18", + "weight": 1.0 + }, + { + "source": "context_internal_transfer", + "target": "context_operation", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 9", + "weight": 1.0 + }, + { + "source": "context_internal_transfer", + "target": "context_posting", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 9", + "weight": 1.0 + }, + { + "source": "context_membership", + "target": "context_financial_space", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 5", + "weight": 1.0 + }, + { + "source": "context_membership", + "target": "context_user", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 5", + "weight": 1.0 + }, + { + "source": "context_monthly_category", + "target": "context_general_pool", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 19", + "weight": 1.0 + }, + { + "source": "context_operation", + "target": "context_posting", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "lines 7-8", + "weight": 1.0 + }, + { + "source": "context_parse_run", + "target": "context_source_record", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "lines 12-13", + "weight": 1.0 + }, + { + "source": "context_plan_assignment", + "target": "context_general_pool", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 17", + "weight": 1.0 + }, + { + "source": "context_refund", + "target": "context_operation", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "line 10", + "weight": 1.0 + }, + { + "source": "context_statement_import", + "target": "context_parse_run", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "CONTEXT.md", + "source_location": "lines 11-12", + "weight": 1.0 + }, + { + "source": "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "target": "docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 15-18", + "weight": 1.0 + }, + { + "source": "docs_adr_0001_financial_space_ownership_and_rls_space_ownership", + "target": "docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "line 19", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_budget_reserves", + "target": "context_credit_reserve", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_budget_reserves", + "target": "context_savings_envelope", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_immutable_statement_document", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_envelope_encryption", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 13", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_parser_versioning", + "target": "docs_parsers_private_fixture_gate_private_fixture_gate", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "line 17", + "weight": 1.0 + }, + { + "source": "docs_adr_0004_provider_neutral_encrypted_data_boundary_crypto_shredding", + "target": "docs_operations_deletion_ledger_deletion_ledger", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "line 15", + "weight": 1.0 + }, + { + "source": "docs_operations_backup_and_restore_backup_and_restore", + "target": "docs_operations_backup_and_restore_kek_backup", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 16-18", + "weight": 1.0 + }, + { + "source": "docs_operations_backup_and_restore_backup_and_restore", + "target": "docs_operations_backup_and_restore_restore_procedure", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 20-29", + "weight": 1.0 + }, + { + "source": "docs_operations_backup_and_restore_backup_and_restore", + "target": "docs_operations_backup_and_restore_restore_drill", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 31-38", + "weight": 1.0 + }, + { + "source": "docs_operations_backup_and_restore_restore_procedure", + "target": "docs_operations_deletion_ledger_post_restore_replay", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "line 27", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_closed_beta_release", + "target": "docs_operations_beta_release_runbook_launch_sequence", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 19-24", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_closed_beta_release", + "target": "docs_operations_beta_release_runbook_forward_fix_rollback", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 26-30", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_closed_beta_release", + "target": "docs_operations_beta_release_runbook_incident_response", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 32-35", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_closed_beta_release", + "target": "docs_operations_beta_release_runbook_launch_gates", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "lines 6-17", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_launch_gates", + "target": "docs_operations_backup_and_restore_restore_drill", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "line 12", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_launch_gates", + "target": "docs_operations_deletion_ledger_deletion_ledger", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "line 15", + "weight": 1.0 + }, + { + "source": "docs_operations_beta_release_runbook_launch_gates", + "target": "docs_parsers_private_fixture_gate_adapter_beta_eligibility", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/beta-release-runbook.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_operations_deletion_ledger_delayed_space_deletion", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_crypto_shredding", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 17-20", + "weight": 1.0 + }, + { + "source": "docs_operations_deletion_ledger_deletion_ledger", + "target": "docs_operations_deletion_ledger_delayed_space_deletion", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 13-21", + "weight": 1.0 + }, + { + "source": "docs_operations_deletion_ledger_deletion_ledger", + "target": "docs_operations_deletion_ledger_post_restore_replay", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 23-30", + "weight": 1.0 + }, + { + "source": "docs_operations_deletion_ledger_deletion_ledger", + "target": "docs_operations_deletion_ledger_idempotent_purge", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/operations/deletion-ledger.md", + "source_location": "lines 32-36", + "weight": 1.0 + }, + { + "source": "docs_parsers_private_fixture_gate_private_fixture_gate", + "target": "docs_parsers_private_fixture_gate_adapter_beta_eligibility", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 19-32", + "weight": 1.0 + }, + { + "source": "docs_parsers_private_fixture_gate_private_fixture_gate", + "target": "docs_parsers_private_fixture_gate_layout_drift_regating", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 34-45", + "weight": 1.0 + }, + { + "source": "docs_parsers_private_fixture_gate_private_fixture_gate", + "target": "docs_parsers_private_fixture_gate_private_statement_contract", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 7-17", + "weight": 1.0 + }, + { + "source": "frontend_readme_finance_frontend", + "target": "frontend_readme_ru_en_localization", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/README.md", + "source_location": "lines 3-14", + "weight": 1.0 + }, + { + "source": "frontend_readme_finance_frontend", + "target": "frontend_readme_typed_api_client", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/README.md", + "source_location": "lines 35-50", + "weight": 1.0 + }, + { + "source": "frontend_readme_finance_frontend", + "target": "frontend_readme_space_scoped_query_keys", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/README.md", + "source_location": "lines 52-58", + "weight": 1.0 + }, + { + "source": "frontend_readme_finance_frontend", + "target": "frontend_readme_accessible_responsive_ui", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "frontend/README.md", + "source_location": "lines 60-67", + "weight": 1.0 + }, + { + "source": "infra_docker_compose_docker_compose_stack", + "target": "infra_docker_compose_worker_isolation", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/docker-compose.yml", + "source_location": "lines 165-182", + "weight": 1.0 + }, + { + "source": "infra_docker_compose_docker_compose_stack", + "target": "infra_docker_compose_same_origin_frontend", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/docker-compose.yml", + "source_location": "lines 198-211", + "weight": 1.0 + }, + { + "source": "infra_docker_compose_docker_compose_stack", + "target": "infra_docker_compose_commodity_services", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/docker-compose.yml", + "source_location": "lines 46-125", + "weight": 1.0 + }, + { + "source": "infra_docker_compose_worker_isolation", + "target": "infra_docker_compose_internal_backend_network", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/docker-compose.yml", + "source_location": "lines 165-182", + "weight": 1.0 + }, + { + "source": "infra_readme_infrastructure", + "target": "infra_readme_same_origin_proxy", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/README.md", + "source_location": "lines 25-30", + "weight": 1.0 + }, + { + "source": "infra_readme_infrastructure", + "target": "infra_readme_workstream_contracts", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/README.md", + "source_location": "lines 40-55", + "weight": 1.0 + }, + { + "source": "infra_readme_infrastructure", + "target": "infra_readme_provider_neutral_infrastructure", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/README.md", + "source_location": "lines 64-69", + "weight": 1.0 + }, + { + "source": "infra_readme_infrastructure", + "target": "infra_docker_compose_docker_compose_stack", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/README.md", + "source_location": "lines 7-15", + "weight": 1.0 + }, + { + "source": "infra_readme_provider_neutral_infrastructure", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_provider_neutral_boundary", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "infra/README.md", + "source_location": "lines 64-69", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_tenant_boundary", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 105-113", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_ledger_invariants", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 115-125", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_budget_invariants", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 127-142", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_import_pipeline", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 159-176", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_modular_monolith", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 68-92", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_financial_tracker_mvp", + "target": "kilo_plans_1789034192214_financial_tracker_mvp_critical_user_path", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 7-14", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_import_pipeline", + "target": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 94-101", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_ledger_invariants", + "target": "docs_adr_0002_journal_and_budget_reserves_operations_postings_journal", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 94-101", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_tenant_boundary", + "target": "docs_adr_0001_financial_space_ownership_and_rls_space_ownership", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 94-101", + "weight": 1.0 + }, + { + "source": "readme_finance_tracker", + "target": "readme_closed_beta_budgeting", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "lines 3-5", + "weight": 1.0 + }, + { + "source": "readme_finance_tracker", + "target": "readme_production_boundary", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "lines 47-53", + "weight": 1.0 + }, + { + "source": "readme_finance_tracker", + "target": "context_financial_space", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "lines 55-56", + "weight": 1.0 + }, + { + "source": "readme_production_boundary", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_provider_neutral_boundary", + "relation": "references", + "_origin": "semantic", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "README.md", + "source_location": "lines 47-56", + "weight": 1.0 + }, + { + "source": "context_budget_period", + "target": "context_general_pool", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "CONTEXT.md", + "source_location": "lines 15-16", + "weight": 1.0 + }, + { + "source": "context_savings_envelope", + "target": "context_funding", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "CONTEXT.md", + "source_location": "lines 18-20", + "weight": 1.0 + }, + { + "source": "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "target": "docs_adr_0001_financial_space_ownership_and_rls_break_glass_access", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 20-26", + "weight": 1.0 + }, + { + "source": "docs_adr_0004_provider_neutral_encrypted_data_boundary_secret_boundary", + "target": "frontend_readme_typed_api_client", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "docs/adr/0004-provider-neutral-encrypted-data-boundary.md", + "source_location": "lines 16-17", + "weight": 1.0 + }, + { + "source": "frontend_public_favicon_svg_ledger_lines_design", + "target": "frontend_public_favicon_svg", + "relation": "rationale_for", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.85, + "source_file": "frontend/public/favicon.svg", + "source_location": "lines 2-6", + "weight": 1.0 + }, + { + "source": "context_financial_account", + "target": "context_financial_space", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "CONTEXT.md", + "source_location": "lines 4-6", + "weight": 1.0 + }, + { + "source": "docs_adr_0001_financial_space_ownership_and_rls_space_ownership", + "target": "context_financial_space", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md", + "source_location": "lines 9-14", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_closure_snapshots", + "target": "context_budget_period", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 17-23", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_operations_postings_journal", + "target": "context_operation", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 13-15", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_operations_postings_journal", + "target": "context_posting", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "lines 13-15", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_plan_funding_separation", + "target": "context_funding", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_adr_0002_journal_and_budget_reserves_plan_funding_separation", + "target": "context_plan_assignment", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md", + "source_location": "line 16", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_parser_versioning", + "target": "context_parse_run", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 14-17", + "weight": 1.0 + }, + { + "source": "docs_adr_0003_versioned_statement_imports_versioned_statement_imports", + "target": "context_statement_import", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/adr/0003-versioned-statement-imports.md", + "source_location": "lines 9-18", + "weight": 1.0 + }, + { + "source": "docs_operations_backup_and_restore_kek_backup", + "target": "docs_adr_0004_provider_neutral_encrypted_data_boundary_envelope_encryption", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/operations/backup-and-restore.md", + "source_location": "lines 16-18", + "weight": 1.0 + }, + { + "source": "docs_parsers_private_fixture_gate_layout_drift_regating", + "target": "docs_adr_0003_versioned_statement_imports_parser_versioning", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "docs/parsers/private-fixture-gate.md", + "source_location": "lines 44-45", + "weight": 1.0 + }, + { + "source": "frontend_index_grossbukh_app_shell", + "target": "frontend_readme_finance_frontend", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/index.html", + "source_location": "lines 8-12", + "weight": 1.0 + }, + { + "source": "frontend_readme_typed_api_client", + "target": "infra_readme_same_origin_proxy", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "frontend/README.md", + "source_location": "lines 37-50", + "weight": 1.0 + }, + { + "source": "infra_docker_compose_same_origin_frontend", + "target": "infra_readme_same_origin_proxy", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": "infra/docker-compose.yml", + "source_location": "lines 198-211", + "weight": 1.0 + }, + { + "source": "kilo_plans_1789034192214_financial_tracker_mvp_release_gates", + "target": "docs_operations_beta_release_runbook_launch_gates", + "relation": "conceptually_related_to", + "_origin": "semantic", + "confidence": "INFERRED", + "confidence_score": 0.95, + "source_file": ".kilo/plans/1789034192214-financial-tracker-mvp.md", + "source_location": "lines 256-275", + "weight": 1.0 + } + ], + "hyperedges": [ + { + "id": "auditable_financial_model", + "label": "Auditable Financial Model", + "nodes": [ + "context_operation", + "context_posting", + "docs_adr_0002_journal_and_budget_reserves_derived_balances", + "docs_adr_0002_journal_and_budget_reserves_plan_funding_separation", + "docs_adr_0002_journal_and_budget_reserves_closure_snapshots" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0002-journal-and-budget-reserves.md" + }, + { + "id": "financial_space_tenancy_boundary", + "label": "Financial Space Tenancy Boundary", + "nodes": [ + "context_financial_space", + "context_membership", + "docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization", + "docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls", + "docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity" + ], + "relation": "form", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0001-financial-space-ownership-and-rls.md" + }, + { + "id": "safe_statement_import_flow", + "label": "Safe Statement Import Flow", + "nodes": [ + "context_statement_import", + "context_parse_run", + "context_source_record", + "docs_adr_0003_versioned_statement_imports_immutable_statement_document", + "docs_adr_0003_versioned_statement_imports_conservative_deduplication", + "docs_adr_0003_versioned_statement_imports_atomic_confirm_revert" + ], + "relation": "participate_in", + "confidence": "EXTRACTED", + "confidence_score": 1.0, + "source_file": "docs/adr/0003-versioned-statement-imports.md" + } + ], + "built_at_commit": "35b9ea83051ef5b536b479bb1556d13641e4a26e" +} \ No newline at end of file diff --git a/graphify-out/2026-09-21/manifest.json b/graphify-out/2026-09-21/manifest.json new file mode 100644 index 0000000..8d7da61 --- /dev/null +++ b/graphify-out/2026-09-21/manifest.json @@ -0,0 +1,938 @@ +{ + "backend/alembic/env.py": { + "mtime": 1789129232.0159023, + "seen": 1789377303.0691774, + "ast_hash": "d78f67ad0caed3f10805122e8d8e82d0", + "semantic_hash": "d78f67ad0caed3f10805122e8d8e82d0" + }, + "backend/alembic/versions/20260911_0001_initial_schema.py": { + "mtime": 1789130024.8355556, + "seen": 1789377303.0691814, + "ast_hash": "3a446ae61cbf2362d24dc9ab6e72dd2d", + "semantic_hash": "3a446ae61cbf2362d24dc9ab6e72dd2d" + }, + "backend/app/__init__.py": { + "mtime": 1789127291.0254955, + "seen": 1789377303.0691833, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/analytics/__init__.py": { + "mtime": 1789128680.8117132, + "seen": 1789377303.0691845, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/analytics/router.py": { + "mtime": 1789129123.9786532, + "seen": 1789377303.0691855, + "ast_hash": "dc4d5f43d1e17ae77b21f774d37c1106", + "semantic_hash": "dc4d5f43d1e17ae77b21f774d37c1106" + }, + "backend/app/analytics/service.py": { + "mtime": 1789129314.8210335, + "seen": 1789377303.0691862, + "ast_hash": "0385e76cccd5d140b8cc01af5b74821e", + "semantic_hash": "0385e76cccd5d140b8cc01af5b74821e" + }, + "backend/app/audit/__init__.py": { + "mtime": 1789127312.3538313, + "seen": 1789377303.0691874, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/audit/models.py": { + "mtime": 1789127312.353331, + "seen": 1789377303.069188, + "ast_hash": "84a2cb94c3a10150a76f59ff762efc49", + "semantic_hash": "84a2cb94c3a10150a76f59ff762efc49" + }, + "backend/app/audit/service.py": { + "mtime": 1789127312.3538313, + "seen": 1789377303.0691888, + "ast_hash": "791163353fbef85a77ace789c704188c", + "semantic_hash": "791163353fbef85a77ace789c704188c" + }, + "backend/app/budgeting/__init__.py": { + "mtime": 1789127598.9634895, + "seen": 1789377303.0691895, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/budgeting/models.py": { + "mtime": 1789356526.9709191, + "seen": 1789377303.0691907, + "ast_hash": "039081cab3d91704e8f8a7152a981304", + "semantic_hash": "039081cab3d91704e8f8a7152a981304" + }, + "backend/app/budgeting/router.py": { + "mtime": 1789129314.8240335, + "seen": 1789377303.0691917, + "ast_hash": "c352243e4fb85ab49f9cf4532c11bd3f", + "semantic_hash": "c352243e4fb85ab49f9cf4532c11bd3f" + }, + "backend/app/budgeting/service.py": { + "mtime": 1789730971.072982, + "seen": 1789735433.158112, + "ast_hash": "c30d4c58608f88b81ff05be63a314247", + "semantic_hash": "" + }, + "backend/app/categorization/__init__.py": { + "mtime": 1789127372.62572, + "seen": 1789377303.0691931, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/categorization/models.py": { + "mtime": 1789130236.8679283, + "seen": 1789377303.0691943, + "ast_hash": "922083067aa2a24d67954296844db8f0", + "semantic_hash": "922083067aa2a24d67954296844db8f0" + }, + "backend/app/categorization/service.py": { + "mtime": 1789128297.7359908, + "seen": 1789377303.0691953, + "ast_hash": "9590b3c99e7c2b20b40d895d7495b5cf", + "semantic_hash": "9590b3c99e7c2b20b40d895d7495b5cf" + }, + "backend/app/config.py": { + "mtime": 1789356583.024539, + "seen": 1789377303.069196, + "ast_hash": "af0c778e49e82763261430b477375048", + "semantic_hash": "af0c778e49e82763261430b477375048" + }, + "backend/app/db/__init__.py": { + "mtime": 1789127291.0254955, + "seen": 1789377303.069197, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/db/base.py": { + "mtime": 1789128247.897287, + "seen": 1789377303.069198, + "ast_hash": "ec981c0f87b0470519cca7727172a950", + "semantic_hash": "ec981c0f87b0470519cca7727172a950" + }, + "backend/app/db/models.py": { + "mtime": 1789128813.706167, + "seen": 1789377303.0691986, + "ast_hash": "338516ce68785afd5a7fe37f06e1c56f", + "semantic_hash": "338516ce68785afd5a7fe37f06e1c56f" + }, + "backend/app/db/session.py": { + "mtime": 1789128374.1340652, + "seen": 1789377303.0691996, + "ast_hash": "9e29a1eebfec6e48e97baf28e506b037", + "semantic_hash": "9e29a1eebfec6e48e97baf28e506b037" + }, + "backend/app/dependencies.py": { + "mtime": 1789128452.8041663, + "seen": 1789377303.0692003, + "ast_hash": "20666502da4de510d1cf6939e35e9c20", + "semantic_hash": "20666502da4de510d1cf6939e35e9c20" + }, + "backend/app/errors.py": { + "mtime": 1789127291.0254955, + "seen": 1789377303.0692015, + "ast_hash": "368489412799d564f127259ecc0c474c", + "semantic_hash": "368489412799d564f127259ecc0c474c" + }, + "backend/app/exports/__init__.py": { + "mtime": 1789128752.0481794, + "seen": 1789377303.0692022, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/exports/models.py": { + "mtime": 1789128752.0481794, + "seen": 1789377303.069203, + "ast_hash": "b76e7bca1889bdf298b5158da2f35642", + "semantic_hash": "b76e7bca1889bdf298b5158da2f35642" + }, + "backend/app/exports/router.py": { + "mtime": 1789358158.624152, + "seen": 1789377303.0692039, + "ast_hash": "28cc16dfa8d0b6b588e8f3a7d0a2f110", + "semantic_hash": "28cc16dfa8d0b6b588e8f3a7d0a2f110" + }, + "backend/app/exports/service.py": { + "mtime": 1789360140.0563023, + "seen": 1789377303.0692048, + "ast_hash": "a9f5a725bd06779f83eb20beda61881c", + "semantic_hash": "a9f5a725bd06779f83eb20beda61881c" + }, + "backend/app/exports/tasks.py": { + "mtime": 1789130443.0178635, + "seen": 1789377303.0692055, + "ast_hash": "de092ecca36d64718378a44d06adb5b6", + "semantic_hash": "de092ecca36d64718378a44d06adb5b6" + }, + "backend/app/identity/__init__.py": { + "mtime": 1789127312.3538313, + "seen": 1789377303.0692062, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/identity/mailer.py": { + "mtime": 1789357272.300995, + "seen": 1789377303.069207, + "ast_hash": "1e6fd1b285085e96819214bccde90a34", + "semantic_hash": "1e6fd1b285085e96819214bccde90a34" + }, + "backend/app/identity/models.py": { + "mtime": 1789130024.833855, + "seen": 1789377303.069208, + "ast_hash": "f7ad1f0468ad21ac2b86e49ef260f747", + "semantic_hash": "f7ad1f0468ad21ac2b86e49ef260f747" + }, + "backend/app/identity/router.py": { + "mtime": 1789356583.0255392, + "seen": 1789377303.0692086, + "ast_hash": "00089d34e9d5d5e965334b4520935bf8", + "semantic_hash": "00089d34e9d5d5e965334b4520935bf8" + }, + "backend/app/identity/service.py": { + "mtime": 1789130458.2090783, + "seen": 1789377303.0692096, + "ast_hash": "a2efb5e20098740645da8b58bd95073d", + "semantic_hash": "a2efb5e20098740645da8b58bd95073d" + }, + "backend/app/imports/__init__.py": { + "mtime": 1789127900.8512905, + "seen": 1789377303.0692103, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/imports/adapters/__init__.py": { + "mtime": 1789733796.3306727, + "seen": 1789735433.158127, + "ast_hash": "0d3191f98e2602dcb37b96eefcb9d2ea", + "semantic_hash": "" + }, + "backend/app/imports/adapters/alfa_xlsx.py": { + "mtime": 1789736201.215202, + "seen": 1789736272.9455209, + "ast_hash": "31eee0cded845f9ddaff98d2127f4354", + "semantic_hash": "" + }, + "backend/app/imports/adapters/base.py": { + "mtime": 1789733778.7145572, + "seen": 1789735433.1581285, + "ast_hash": "4f6364ab07cf38ba2eea1ba94678d784", + "semantic_hash": "" + }, + "backend/app/imports/adapters/ozon_pdf.py": { + "mtime": 1789733868.836172, + "seen": 1789735433.158129, + "ast_hash": "dfa6dc9ccf2c655e6c2eeaceea0cf06a", + "semantic_hash": "" + }, + "backend/app/imports/adapters/rocketbank_pdf.py": { + "mtime": 1789734555.2246265, + "seen": 1789735433.1581297, + "ast_hash": "b4f28ba73c56da5f5eb96eb4f129e098", + "semantic_hash": "" + }, + "backend/app/imports/blob.py": { + "mtime": 1789129216.5581613, + "seen": 1789377303.0692153, + "ast_hash": "60d315883175474711dff503c70400a5", + "semantic_hash": "60d315883175474711dff503c70400a5" + }, + "backend/app/imports/celery_app.py": { + "mtime": 1789130443.0194046, + "seen": 1789377303.069216, + "ast_hash": "03e8b50c4722e8252a34508df1164985", + "semantic_hash": "03e8b50c4722e8252a34508df1164985" + }, + "backend/app/imports/crypto.py": { + "mtime": 1789127900.8612905, + "seen": 1789377303.0692167, + "ast_hash": "c72d7849c6f46e6c9a9136f3ae9dc92f", + "semantic_hash": "c72d7849c6f46e6c9a9136f3ae9dc92f" + }, + "backend/app/imports/models.py": { + "mtime": 1789730695.7355492, + "seen": 1789735433.1581326, + "ast_hash": "b99c93656a17603691838c9e7963d9ed", + "semantic_hash": "" + }, + "backend/app/imports/readers.py": { + "mtime": 1789128289.6877162, + "seen": 1789377303.0692189, + "ast_hash": "0904afccafd9eb544b4d6846fc6384c8", + "semantic_hash": "0904afccafd9eb544b4d6846fc6384c8" + }, + "backend/app/imports/router.py": { + "mtime": 1789986959.5578556, + "seen": 1789987085.811699, + "ast_hash": "c092553fcb48fbd7a19aa4000f24a5b8", + "semantic_hash": "" + }, + "backend/app/imports/service.py": { + "mtime": 1789987052.7950857, + "seen": 1789987085.8116996, + "ast_hash": "361eeb454e2614b61194d3d067b117d5", + "semantic_hash": "" + }, + "backend/app/imports/tasks.py": { + "mtime": 1789356921.2930734, + "seen": 1789377303.0692213, + "ast_hash": "1b26900740c5c6905601ba65d645857b", + "semantic_hash": "1b26900740c5c6905601ba65d645857b" + }, + "backend/app/ledger/__init__.py": { + "mtime": 1789127415.7777057, + "seen": 1789377303.0692222, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/ledger/models.py": { + "mtime": 1789130236.8679283, + "seen": 1789377303.069223, + "ast_hash": "81335e0d9f1f5a71be1626ec218da410", + "semantic_hash": "81335e0d9f1f5a71be1626ec218da410" + }, + "backend/app/ledger/router.py": { + "mtime": 1789358018.8352346, + "seen": 1789377303.0692236, + "ast_hash": "809411054fbede0694ed6ee863723fe5", + "semantic_hash": "809411054fbede0694ed6ee863723fe5" + }, + "backend/app/ledger/service.py": { + "mtime": 1789358018.8349617, + "seen": 1789377303.0692244, + "ast_hash": "96a715590e5af44c494e5c7c817780a3", + "semantic_hash": "96a715590e5af44c494e5c7c817780a3" + }, + "backend/app/main.py": { + "mtime": 1789130118.4222198, + "seen": 1789377303.0692253, + "ast_hash": "b4f205a9d87d905121bda1e4a65c20ea", + "semantic_hash": "b4f205a9d87d905121bda1e4a65c20ea" + }, + "backend/app/ratelimit.py": { + "mtime": 1789357059.570077, + "seen": 1789377303.069226, + "ast_hash": "e1732ffc6140108ea33bc70591653dd8", + "semantic_hash": "e1732ffc6140108ea33bc70591653dd8" + }, + "backend/app/security.py": { + "mtime": 1789360140.0553021, + "seen": 1789377303.069227, + "ast_hash": "0d73845e1a3da2c128cbb1aacd39506d", + "semantic_hash": "0d73845e1a3da2c128cbb1aacd39506d" + }, + "backend/app/spaces/__init__.py": { + "mtime": 1789127346.4407892, + "seen": 1789377303.0692277, + "ast_hash": "d41d8cd98f00b204e9800998ecf8427e", + "semantic_hash": "d41d8cd98f00b204e9800998ecf8427e" + }, + "backend/app/spaces/models.py": { + "mtime": 1789128247.897287, + "seen": 1789377303.0692286, + "ast_hash": "7bbb57eb5e95d7b59087f478d7c20412", + "semantic_hash": "7bbb57eb5e95d7b59087f478d7c20412" + }, + "backend/app/spaces/router.py": { + "mtime": 1789357010.1013982, + "seen": 1789377303.0692296, + "ast_hash": "073fa39a355b257a832ead3830942d8f", + "semantic_hash": "073fa39a355b257a832ead3830942d8f" + }, + "backend/app/spaces/service.py": { + "mtime": 1789129887.1068308, + "seen": 1789377303.0692303, + "ast_hash": "99f21c94dad6403b77f4cafed97c1c2e", + "semantic_hash": "99f21c94dad6403b77f4cafed97c1c2e" + }, + "backend/app/worker.py": { + "mtime": 1789129206.4285526, + "seen": 1789377303.069231, + "ast_hash": "4788addc575411056226ee892d1e2806", + "semantic_hash": "4788addc575411056226ee892d1e2806" + }, + "backend/pyproject.toml": { + "mtime": 1789731892.783645, + "seen": 1789735433.1581438, + "ast_hash": "6ae54b23d066a4a48b7edbbe964af75f", + "semantic_hash": "" + }, + "backend/tests/conftest.py": { + "mtime": 1789129509.9246948, + "seen": 1789377303.069233, + "ast_hash": "f74b424930fc6a978616e2e1bd081a0b", + "semantic_hash": "f74b424930fc6a978616e2e1bd081a0b" + }, + "backend/tests/test_api.py": { + "mtime": 1789130118.4241138, + "seen": 1789377303.069234, + "ast_hash": "bfec0778131788a91a0bc5c9ec2ad8ba", + "semantic_hash": "bfec0778131788a91a0bc5c9ec2ad8ba" + }, + "backend/tests/test_budget.py": { + "mtime": 1789358107.2584474, + "seen": 1789377303.0692346, + "ast_hash": "f6e5c4d1e1d0f2b1941acf8ec9f6678b", + "semantic_hash": "f6e5c4d1e1d0f2b1941acf8ec9f6678b" + }, + "backend/tests/test_imports.py": { + "mtime": 1789986980.8700209, + "seen": 1789987085.8117144, + "ast_hash": "8c6aec11825fe46740ad64b658da2a15", + "semantic_hash": "" + }, + "backend/tests/test_ledger_properties.py": { + "mtime": 1789129573.0755556, + "seen": 1789377303.0692365, + "ast_hash": "fb7d5e4503c9482b5014e28528f75e2a", + "semantic_hash": "fb7d5e4503c9482b5014e28528f75e2a" + }, + "backend/tests/test_postgres_and_s3.py": { + "mtime": 1789734220.6980176, + "seen": 1789735433.1581545, + "ast_hash": "1def023e0a52eed53bcb97557919484b", + "semantic_hash": "" + }, + "frontend/eslint.config.js": { + "mtime": 1789128706.6116898, + "seen": 1789377303.069238, + "ast_hash": "ed54799a921d10394f826893acb46876", + "semantic_hash": "ed54799a921d10394f826893acb46876" + }, + "frontend/package.json": { + "mtime": 1789378006.2922633, + "seen": 1789735433.1581702, + "ast_hash": "10697e744e175f761f5ddb85c7925350", + "semantic_hash": "" + }, + "frontend/scripts/generate-api.mjs": { + "mtime": 1789126898.3307452, + "seen": 1789377303.0692399, + "ast_hash": "61461f226e7d2bba9730be8b7da165f9", + "semantic_hash": "61461f226e7d2bba9730be8b7da165f9" + }, + "frontend/src/App.tsx": { + "mtime": 1789127518.1600943, + "seen": 1789377303.0692406, + "ast_hash": "752eea473bb3bb6d8a2dd28f5ae87280", + "semantic_hash": "752eea473bb3bb6d8a2dd28f5ae87280" + }, + "frontend/src/api/client.ts": { + "mtime": 1789127044.43022, + "seen": 1789377303.0692413, + "ast_hash": "dbea075a006b7703340f7f93e69d53ac", + "semantic_hash": "dbea075a006b7703340f7f93e69d53ac" + }, + "frontend/src/api/endpoints.ts": { + "mtime": 1789357272.302138, + "seen": 1789377303.069242, + "ast_hash": "c4d7620bf50bef28b20286b6093e7e30", + "semantic_hash": "c4d7620bf50bef28b20286b6093e7e30" + }, + "frontend/src/api/generated/schema.d.ts": { + "mtime": 1789130160.8338337, + "seen": 1789377303.069243, + "ast_hash": "8857d50fb909f019e1d8c03009c0ada7", + "semantic_hash": "8857d50fb909f019e1d8c03009c0ada7" + }, + "frontend/src/api/queryKeys.ts": { + "mtime": 1789127044.43022, + "seen": 1789377303.0692437, + "ast_hash": "5ec23457cf6b0f223df671d3bc0f8455", + "semantic_hash": "5ec23457cf6b0f223df671d3bc0f8455" + }, + "frontend/src/api/types.ts": { + "mtime": 1789357272.302138, + "seen": 1789377303.069248, + "ast_hash": "0d3865b4525321cf5a6b360f72de5f5a", + "semantic_hash": "0d3865b4525321cf5a6b360f72de5f5a" + }, + "frontend/src/app/router.tsx": { + "mtime": 1789357305.2954476, + "seen": 1789377303.0692487, + "ast_hash": "0366437498b1933d212cd103252a0b11", + "semantic_hash": "0366437498b1933d212cd103252a0b11" + }, + "frontend/src/components/charts/ColumnChart.tsx": { + "mtime": 1789127463.8093653, + "seen": 1789377303.0692496, + "ast_hash": "3f2aeaca948431b2fd4cd86bedaa9ede", + "semantic_hash": "3f2aeaca948431b2fd4cd86bedaa9ede" + }, + "frontend/src/components/charts/HorizontalBars.tsx": { + "mtime": 1789127423.3778224, + "seen": 1789377303.06925, + "ast_hash": "e341240d131f12fe680424010279ddd3", + "semantic_hash": "e341240d131f12fe680424010279ddd3" + }, + "frontend/src/components/charts/PlanFactBars.tsx": { + "mtime": 1789127423.3794281, + "seen": 1789377303.069251, + "ast_hash": "f581486baa48447ec4c573acef3190ef", + "semantic_hash": "f581486baa48447ec4c573acef3190ef" + }, + "frontend/src/components/layout/AppLayout.tsx": { + "mtime": 1789127423.3794281, + "seen": 1789377303.0692518, + "ast_hash": "ae7a94355ca990e4efc91664db0d86c2", + "semantic_hash": "ae7a94355ca990e4efc91664db0d86c2" + }, + "frontend/src/components/layout/LangSwitcher.tsx": { + "mtime": 1789127423.3794281, + "seen": 1789377303.069253, + "ast_hash": "5be78b1684339d7ea82677fe1828162c", + "semantic_hash": "5be78b1684339d7ea82677fe1828162c" + }, + "frontend/src/components/ui/Badge.tsx": { + "mtime": 1789127112.4896402, + "seen": 1789377303.0692537, + "ast_hash": "f1a5dd94fafcaa4ab6edeb2221ffdd18", + "semantic_hash": "f1a5dd94fafcaa4ab6edeb2221ffdd18" + }, + "frontend/src/components/ui/Button.tsx": { + "mtime": 1789127112.4896402, + "seen": 1789377303.0692544, + "ast_hash": "ec61aded7bd1c0bc626b9f85243e6d24", + "semantic_hash": "ec61aded7bd1c0bc626b9f85243e6d24" + }, + "frontend/src/components/ui/ConfirmDialog.tsx": { + "mtime": 1789127142.0840394, + "seen": 1789377303.0692554, + "ast_hash": "45b3ad6925a6e69045a59593882c7ffc", + "semantic_hash": "45b3ad6925a6e69045a59593882c7ffc" + }, + "frontend/src/components/ui/EmptyState.tsx": { + "mtime": 1789127142.0700393, + "seen": 1789377303.0692563, + "ast_hash": "853f2c5b079b2cfa9e4f12363cefba3a", + "semantic_hash": "853f2c5b079b2cfa9e4f12363cefba3a" + }, + "frontend/src/components/ui/ErrorState.tsx": { + "mtime": 1789127142.067039, + "seen": 1789377303.069257, + "ast_hash": "6827eb04b914e8c675e842fea74b5ba5", + "semantic_hash": "6827eb04b914e8c675e842fea74b5ba5" + }, + "frontend/src/components/ui/Modal.tsx": { + "mtime": 1789127142.054039, + "seen": 1789377303.069259, + "ast_hash": "41b09f3998ca6f6d7ad415cceff4b9ea", + "semantic_hash": "41b09f3998ca6f6d7ad415cceff4b9ea" + }, + "frontend/src/components/ui/MonthSwitcher.tsx": { + "mtime": 1789127142.0860393, + "seen": 1789377303.06926, + "ast_hash": "ddb486640fa05b742fa71167949a2aca", + "semantic_hash": "ddb486640fa05b742fa71167949a2aca" + }, + "frontend/src/components/ui/PageHeader.tsx": { + "mtime": 1789127142.0810394, + "seen": 1789377303.0692606, + "ast_hash": "332c481c9030b26221b2b080482973a2", + "semantic_hash": "332c481c9030b26221b2b080482973a2" + }, + "frontend/src/components/ui/QueryGate.tsx": { + "mtime": 1789128567.5977647, + "seen": 1789377303.0692613, + "ast_hash": "ee535a82d89a1d2bc30c5ec4907817c1", + "semantic_hash": "ee535a82d89a1d2bc30c5ec4907817c1" + }, + "frontend/src/components/ui/Spinner.tsx": { + "mtime": 1789127142.061039, + "seen": 1789377303.0692623, + "ast_hash": "40c69d38fa5a96969026c1486ac981a5", + "semantic_hash": "40c69d38fa5a96969026c1486ac981a5" + }, + "frontend/src/components/ui/Toaster.tsx": { + "mtime": 1789127142.0780392, + "seen": 1789377303.0692632, + "ast_hash": "d76eafaf1a72d8435cbce2fd9d2f8764", + "semantic_hash": "d76eafaf1a72d8435cbce2fd9d2f8764" + }, + "frontend/src/components/ui/fields.tsx": { + "mtime": 1789128567.5907645, + "seen": 1789377303.069264, + "ast_hash": "5e1b157a5cd5b484582ba959049443aa", + "semantic_hash": "5e1b157a5cd5b484582ba959049443aa" + }, + "frontend/src/hooks/useAccounts.ts": { + "mtime": 1789127463.8123653, + "seen": 1789377303.0692647, + "ast_hash": "5cbd401bea752132870ca35a0b2cf29f", + "semantic_hash": "5cbd401bea752132870ca35a0b2cf29f" + }, + "frontend/src/hooks/useAnalytics.ts": { + "mtime": 1789127476.179531, + "seen": 1789377303.0692656, + "ast_hash": "2a0cad57cdfc7456c967b3fd122e6017", + "semantic_hash": "2a0cad57cdfc7456c967b3fd122e6017" + }, + "frontend/src/hooks/useAuth.ts": { + "mtime": 1789357272.302138, + "seen": 1789377303.0692663, + "ast_hash": "40f9f47b108ec0b484f9564bd1d319cb", + "semantic_hash": "40f9f47b108ec0b484f9564bd1d319cb" + }, + "frontend/src/hooks/useBudget.ts": { + "mtime": 1789127463.8123653, + "seen": 1789377303.0692673, + "ast_hash": "06c203b89322dca6cf80931f3558b0dc", + "semantic_hash": "06c203b89322dca6cf80931f3558b0dc" + }, + "frontend/src/hooks/useImports.ts": { + "mtime": 1789127476.176531, + "seen": 1789377303.0692682, + "ast_hash": "d23f116da79b15438601751b45519268", + "semantic_hash": "d23f116da79b15438601751b45519268" + }, + "frontend/src/hooks/useOperations.ts": { + "mtime": 1789127463.8123653, + "seen": 1789377303.069269, + "ast_hash": "3cac9924554a5465276a2c4431121866", + "semantic_hash": "3cac9924554a5465276a2c4431121866" + }, + "frontend/src/hooks/useSpaceLifecycle.ts": { + "mtime": 1789356647.3201435, + "seen": 1789377303.0692697, + "ast_hash": "87c19951711d1798821f227eac36d609", + "semantic_hash": "87c19951711d1798821f227eac36d609" + }, + "frontend/src/i18n/index.ts": { + "mtime": 1789128261.8073747, + "seen": 1789377303.0692706, + "ast_hash": "243512f6e095deeaa29393b7c831777f", + "semantic_hash": "243512f6e095deeaa29393b7c831777f" + }, + "frontend/src/i18n/locales/en.json": { + "mtime": 1789357272.302995, + "seen": 1789377303.0692713, + "ast_hash": "2ce7444db1936d9c5fcca10b901c4afc", + "semantic_hash": "2ce7444db1936d9c5fcca10b901c4afc" + }, + "frontend/src/i18n/locales/ru.json": { + "mtime": 1789357272.302995, + "seen": 1789377303.0692723, + "ast_hash": "ae00c080e0b9a10b6004c4094bcdb1ea", + "semantic_hash": "ae00c080e0b9a10b6004c4094bcdb1ea" + }, + "frontend/src/main.tsx": { + "mtime": 1789127518.1660943, + "seen": 1789377303.069273, + "ast_hash": "9219312484aae5efecb6534357f9aadf", + "semantic_hash": "9219312484aae5efecb6534357f9aadf" + }, + "frontend/src/pages/AcceptInvitePage.tsx": { + "mtime": 1789357272.302138, + "seen": 1789377303.069274, + "ast_hash": "11475c9e3ab1b5f50cbd8e5e63cca4cb", + "semantic_hash": "11475c9e3ab1b5f50cbd8e5e63cca4cb" + }, + "frontend/src/pages/AccountsPage.tsx": { + "mtime": 1789127567.9147615, + "seen": 1789377303.0692747, + "ast_hash": "5da5d66e5eb40222e4ceb1f75ca951bd", + "semantic_hash": "5da5d66e5eb40222e4ceb1f75ca951bd" + }, + "frontend/src/pages/AnalyticsPage.tsx": { + "mtime": 1789127904.7983484, + "seen": 1789377303.0692756, + "ast_hash": "4a83070566fde66ff6423b1064cde4e8", + "semantic_hash": "4a83070566fde66ff6423b1064cde4e8" + }, + "frontend/src/pages/BudgetPage.tsx": { + "mtime": 1789127621.1764753, + "seen": 1789377303.0692763, + "ast_hash": "c1421d4088b0f174dc7ecb082b2a257d", + "semantic_hash": "c1421d4088b0f174dc7ecb082b2a257d" + }, + "frontend/src/pages/ImportDetailPage.tsx": { + "mtime": 1789127866.2017796, + "seen": 1789377303.0692773, + "ast_hash": "52adf2e149d39f2b2d77f96640c72b5e", + "semantic_hash": "52adf2e149d39f2b2d77f96640c72b5e" + }, + "frontend/src/pages/ImportsPage.tsx": { + "mtime": 1789127830.2842758, + "seen": 1789377303.069278, + "ast_hash": "721376253dda864ff81a5025691947e0", + "semantic_hash": "721376253dda864ff81a5025691947e0" + }, + "frontend/src/pages/LoginPage.tsx": { + "mtime": 1789357272.302138, + "seen": 1789377303.069279, + "ast_hash": "6cb36d7a770d36c3dddf1dbb90ebc545", + "semantic_hash": "6cb36d7a770d36c3dddf1dbb90ebc545" + }, + "frontend/src/pages/NotFoundPage.tsx": { + "mtime": 1789127518.2310953, + "seen": 1789377303.0692797, + "ast_hash": "53e014a77ff3070820a83458af08a5fd", + "semantic_hash": "53e014a77ff3070820a83458af08a5fd" + }, + "frontend/src/pages/OperationsPage.tsx": { + "mtime": 1789128734.6790774, + "seen": 1789377303.0692806, + "ast_hash": "f4ae42adff88554aef7c522ce79daca3", + "semantic_hash": "f4ae42adff88554aef7c522ce79daca3" + }, + "frontend/src/pages/ResetPasswordPage.tsx": { + "mtime": 1789357305.2944477, + "seen": 1789377303.0692816, + "ast_hash": "4ecaf25ff754290936fd87db84f19414", + "semantic_hash": "4ecaf25ff754290936fd87db84f19414" + }, + "frontend/src/pages/ReviewQueuePage.tsx": { + "mtime": 1789127802.1288989, + "seen": 1789377303.0692823, + "ast_hash": "b3f57d73ef457c9b2427d74603972213", + "semantic_hash": "b3f57d73ef457c9b2427d74603972213" + }, + "frontend/src/pages/SettingsPage.tsx": { + "mtime": 1789128572.7868366, + "seen": 1789377303.069283, + "ast_hash": "6a35c2799ba84fdbc1367d768907e8fa", + "semantic_hash": "6a35c2799ba84fdbc1367d768907e8fa" + }, + "frontend/src/test/accounts-page.test.tsx": { + "mtime": 1789128626.8475864, + "seen": 1789377303.0692837, + "ast_hash": "d17270fb5ca22286d3d62d7e2679fbcb", + "semantic_hash": "d17270fb5ca22286d3d62d7e2679fbcb" + }, + "frontend/src/test/budget-plan.test.tsx": { + "mtime": 1789128448.8001103, + "seen": 1789377303.0692847, + "ast_hash": "b2abf4ff7b3ea5b6f730cddd021b4127", + "semantic_hash": "b2abf4ff7b3ea5b6f730cddd021b4127" + }, + "frontend/src/test/chart-accessible-table.test.tsx": { + "mtime": 1789128448.8031104, + "seen": 1789377303.0692854, + "ast_hash": "e8f2187db8969b2fb4975775e3dbdcb9", + "semantic_hash": "e8f2187db8969b2fb4975775e3dbdcb9" + }, + "frontend/src/test/helpers.tsx": { + "mtime": 1789128456.9108279, + "seen": 1789377303.0692863, + "ast_hash": "041d8de84ce39044e32d9a4e45f176a0", + "semantic_hash": "041d8de84ce39044e32d9a4e45f176a0" + }, + "frontend/src/test/i18n-parity.test.ts": { + "mtime": 1789128572.7505064, + "seen": 1789377303.069287, + "ast_hash": "cc870c8a667b6982c9fabd654468a46f", + "semantic_hash": "cc870c8a667b6982c9fabd654468a46f" + }, + "frontend/src/test/import-polling.test.tsx": { + "mtime": 1789128692.423248, + "seen": 1789377303.0692883, + "ast_hash": "2b83dee550ca31b0d5980c8ce3235fd0", + "semantic_hash": "2b83dee550ca31b0d5980c8ce3235fd0" + }, + "frontend/src/test/login-page.test.tsx": { + "mtime": 1789128286.0698264, + "seen": 1789377303.069289, + "ast_hash": "52ebeeb4fb554b4c830113cebcf9f530", + "semantic_hash": "52ebeeb4fb554b4c830113cebcf9f530" + }, + "frontend/src/test/money.test.ts": { + "mtime": 1789128261.8154838, + "seen": 1789377303.0692897, + "ast_hash": "8faf4d33972c1583baa98fcd8160dbd0", + "semantic_hash": "8faf4d33972c1583baa98fcd8160dbd0" + }, + "frontend/src/test/query-keys.test.ts": { + "mtime": 1789128626.8519824, + "seen": 1789377303.0692904, + "ast_hash": "554aa60181736710caf28df6f9b62a66", + "semantic_hash": "554aa60181736710caf28df6f9b62a66" + }, + "frontend/src/test/setup.ts": { + "mtime": 1789128261.8154838, + "seen": 1789377303.0692916, + "ast_hash": "5b0ef0fbf28fe880eac77ca470cdb72f", + "semantic_hash": "5b0ef0fbf28fe880eac77ca470cdb72f" + }, + "frontend/src/vite-env.d.ts": { + "mtime": 1789127028.213317, + "seen": 1789377303.0692923, + "ast_hash": "0352474ba2918efe13895edbc3780d94", + "semantic_hash": "0352474ba2918efe13895edbc3780d94" + }, + "frontend/tsconfig.json": { + "mtime": 1789126877.2434592, + "seen": 1789377303.069293, + "ast_hash": "c57160ea7b6323de41adceed69142721", + "semantic_hash": "c57160ea7b6323de41adceed69142721" + }, + "frontend/vite.config.ts": { + "mtime": 1789126877.239459, + "seen": 1789377303.0692937, + "ast_hash": "b99eeb04d213e3680abe9c3854521e80", + "semantic_hash": "b99eeb04d213e3680abe9c3854521e80" + }, + "infra/postgres/init-app-role.sh": { + "mtime": 1789129887.1068308, + "seen": 1789377303.069295, + "ast_hash": "4c2b103cde06bc6df773f005c00b73d6", + "semantic_hash": "4c2b103cde06bc6df773f005c00b73d6" + }, + ".kilo/plans/1789034192214-financial-tracker-mvp.md": { + "mtime": 1789099088.960013, + "seen": 1789377303.0692966, + "ast_hash": "a2f21668b5ef4c0005316ef3e54b6a28", + "semantic_hash": "a2f21668b5ef4c0005316ef3e54b6a28" + }, + "CONTEXT.md": { + "mtime": 1789126288.30262, + "seen": 1789377303.0692973, + "ast_hash": "c8211b75ee8dfba83e37f06ff219d2b1", + "semantic_hash": "c8211b75ee8dfba83e37f06ff219d2b1" + }, + "README.md": { + "mtime": 1789358273.3585796, + "seen": 1789377303.0692983, + "ast_hash": "79eb6002a05286e6655e6fe3904f5b29", + "semantic_hash": "79eb6002a05286e6655e6fe3904f5b29" + }, + "docs/adr/0001-financial-space-ownership-and-rls.md": { + "mtime": 1789126779.7591345, + "seen": 1789377303.0692992, + "ast_hash": "8fbddf58406caccd2d5a5b0e5f9ffab4", + "semantic_hash": "8fbddf58406caccd2d5a5b0e5f9ffab4" + }, + "docs/adr/0002-journal-and-budget-reserves.md": { + "mtime": 1789126779.7821348, + "seen": 1789377303.0693, + "ast_hash": "6ca9f9b8f91733ce37e15f339a656726", + "semantic_hash": "6ca9f9b8f91733ce37e15f339a656726" + }, + "docs/adr/0003-versioned-statement-imports.md": { + "mtime": 1789732137.8203447, + "seen": 1789735433.1582236, + "ast_hash": "e05b45d637e097a3898bc1b2f2160fe7", + "semantic_hash": "" + }, + "docs/adr/0004-provider-neutral-encrypted-data-boundary.md": { + "mtime": 1789126790.5422814, + "seen": 1789377303.0693016, + "ast_hash": "460e37c748836b116a4ea820768a8007", + "semantic_hash": "460e37c748836b116a4ea820768a8007" + }, + "docs/operations/backup-and-restore.md": { + "mtime": 1789126817.735651, + "seen": 1789377303.0693026, + "ast_hash": "188110b691922b9a23f4efa2ef4627e2", + "semantic_hash": "188110b691922b9a23f4efa2ef4627e2" + }, + "docs/operations/beta-release-runbook.md": { + "mtime": 1789126842.5229878, + "seen": 1789377303.0693033, + "ast_hash": "00dada41b2d3425da89bcd277acce41e", + "semantic_hash": "00dada41b2d3425da89bcd277acce41e" + }, + "docs/operations/deletion-ledger.md": { + "mtime": 1789126842.4969876, + "seen": 1789377303.0693042, + "ast_hash": "1aff4ccf6a2dbcf86ed72fd34bb69c6f", + "semantic_hash": "1aff4ccf6a2dbcf86ed72fd34bb69c6f" + }, + "docs/parsers/private-fixture-gate.md": { + "mtime": 1789734164.3005245, + "seen": 1789735433.1582274, + "ast_hash": "02086c7b911cf06d3d170ac04be7592e", + "semantic_hash": "" + }, + "frontend/README.md": { + "mtime": 1789128756.9573848, + "seen": 1789377303.069306, + "ast_hash": "3c43f67a81ce2c7b0cd18aeab85ed2c2", + "semantic_hash": "3c43f67a81ce2c7b0cd18aeab85ed2c2" + }, + "frontend/index.html": { + "mtime": 1789126886.1155794, + "seen": 1789377303.0693069, + "ast_hash": "42788af442bf05e487937f435141f84b", + "semantic_hash": "42788af442bf05e487937f435141f84b" + }, + "infra/README.md": { + "mtime": 1789357215.8087454, + "seen": 1789377303.0693076, + "ast_hash": "0a7bb82cce04631f36f2d561a1665478", + "semantic_hash": "0a7bb82cce04631f36f2d561a1665478" + }, + "infra/docker-compose.yml": { + "mtime": 1789400438.2433548, + "seen": 1789735433.1582313, + "ast_hash": "9f04dd1906326ddea306584fe68a2ae4", + "semantic_hash": "" + }, + "frontend/public/favicon.svg": { + "mtime": 1789126886.1235795, + "seen": 1789377303.0693095, + "ast_hash": "83637b50c3736f9f0675b7f23ff5a51e", + "semantic_hash": "83637b50c3736f9f0675b7f23ff5a51e" + }, + ".kilo/kilo.json": { + "mtime": 1789377478.0622306, + "seen": 1789735433.1580946, + "ast_hash": "1839ad09cc2e72bfeb650219265f2e20", + "semantic_hash": "" + }, + "backend/alembic/versions/20260918_0002_hold_lifecycle.py": { + "mtime": 1789735291.8675542, + "seen": 1789735433.1581025, + "ast_hash": "2a669c07ecd8d473e703bc823cb26183", + "semantic_hash": "" + }, + "backend/tests/test_adapter_contracts.py": { + "mtime": 1789735944.366427, + "seen": 1789736272.9455402, + "ast_hash": "c3f63850c85b7c5262e66370ab7ab8a9", + "semantic_hash": "" + }, + "backend/tests/test_import_holds.py": { + "mtime": 1789736201.2172022, + "seen": 1789736272.9455423, + "ast_hash": "6f14226a83e65efbaaee6446d4ec4cb6", + "semantic_hash": "" + }, + "backend/tests/test_private_fixtures.py": { + "mtime": 1789737822.4871244, + "seen": 1789737916.7915628, + "ast_hash": "f14cd118f1e8d6b5088536d50d2b965a", + "semantic_hash": "" + }, + ".gitea/workflows/ci.yml": { + "mtime": 1789736949.8123386, + "seen": 1789737916.791613, + "ast_hash": "f0891b841c5e24c761f5067a4ea23637", + "semantic_hash": "" + }, + ".kilo/plans/1789727434954-gitea-ci-real-statement-imports.md": { + "mtime": 1789729895.9594803, + "seen": 1789735433.1582198, + "ast_hash": "eb38e75994c5fc29d4137adb7e0e37f8", + "semantic_hash": "" + }, + "frontend/pnpm-workspace.yaml": { + "mtime": 1789377936.9976747, + "seen": 1789735433.1582298, + "ast_hash": "2ae2370fa527b015cd7bd98dc7ca2a6b", + "semantic_hash": "" + }, + ".kilo/plugins/graphify.js": { + "mtime": 1789967188.4955833, + "seen": 1789987085.8116593, + "ast_hash": "af79b534b1739d62b450e39c9b50e362", + "semantic_hash": "" + }, + "AGENTS.md": { + "mtime": 1789967188.495481, + "seen": 1789987085.8117683, + "ast_hash": "6a47d64fcc136324ca395065a707ef76", + "semantic_hash": "" + } +} \ No newline at end of file diff --git a/graphify-out/GRAPH_REPORT.md b/graphify-out/GRAPH_REPORT.md index 31a879e..cd2bd2e 100644 --- a/graphify-out/GRAPH_REPORT.md +++ b/graphify-out/GRAPH_REPORT.md @@ -1,51 +1,51 @@ -# Graph Report - finance (2026-09-18) +# Graph Report - finance (2026-09-21) ## Corpus Check -- 149 files · ~63,842 words +- 151 files · ~64,809 words - Verdict: corpus is large enough that graph structure adds value. ## Summary -- 1267 nodes · 3697 edges · 75 communities (54 shown, 15 thin omitted) -- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 70 edges (avg confidence: 0.93) +- 1277 nodes · 3734 edges · 79 communities (54 shown, 18 thin omitted) +- Extraction: 98% EXTRACTED · 2% INFERRED · 0% AMBIGUOUS · INFERRED: 71 edges (avg confidence: 0.93) - Token cost: 0 input · 0 output ## Graph Freshness -- Built from commit: `fb91da79` +- Built from commit: `35b9ea83` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). ## Community Hubs (Navigation) -- identity/router.py +- identity/service.py - budgeting/router.py - Base - set_space_context - imports/router.py - alfa_xlsx.py -- Session +- ledger/service.py - types.ts - router.tsx - ledger/router.py -- AccountsPage.tsx +- main.py - compilerOptions - AnalyticsPage.tsx -- analytics/router.py +- exports/router.py - devDependencies -- test_import_holds.py +- Session - dependencies - ImportDetailPage.tsx - OperationsPage.tsx -- SettingsPage.tsx +- useOperations.ts - Toaster.tsx -- ozon_pdf.py +- adapters/base.py - BudgetPage.tsx - client.ts -- fields.tsx +- AccountsPage.tsx - Docker Compose Development Stack - Financial Space - scripts -- dependencies.py +- exports/service.py - General Pool -- TestBaseContract +- test_adapter_contracts.py - Per-File Envelope Encryption - Operation - Versioned Statement Imports @@ -53,7 +53,7 @@ - Closed Beta Launch Gates - package.json - Financial Tracker MVP -- test_adapter_contracts.py +- TestRocketbankDebitContract - generate-api.mjs - schema.d.ts - test_api.py @@ -65,14 +65,14 @@ - graphify - @types/react-dom - typescript-eslint -- SourceRow +- OzonDebitPdfAdapter - vitest - Favicon SVG (ledger lines icon) - init-app-role.sh - Payee - finance-backend - LocalDirectoryBlobStore -- account_fingerprint +- TestOzonDebitContract - Gitea CI and real statement imports - 20260918_0002_hold_lifecycle.py - eslint-plugin-react-hooks @@ -80,22 +80,25 @@ - @testing-library/dom - @testing-library/react - vite -- spaces/router.py -- identity/service.py -- get_settings - ColumnChart.tsx +- conftest.py +- imports/service.py +- BlobStore +- AppError +- celery_app.py +- AGENTS.md ## God Nodes (most connected - your core abstractions) -1. `Session` - 140 edges -2. `AppError` - 53 edges +1. `Session` - 146 edges +2. `AppError` - 54 edges 3. `Base` - 47 edges 4. `PkMixin` - 39 edges 5. `get_settings()` - 38 edges 6. `TimestampMixin` - 38 edges 7. `conflict()` - 35 edges 8. `record()` - 34 edges -9. `UnsupportedStatementLayout` - 30 edges -10. `bad_request()` - 29 edges +9. `StatementDocument` - 32 edges +10. `UnsupportedStatementLayout` - 30 edges ## Surprising Connections (you probably didn't know these) - `Typed Same-Origin API Client` --conceptually_related_to--> `Same-Origin Reverse Proxy` [INFERRED] @@ -117,107 +120,107 @@ - **Financial Space Tenancy Boundary** — context_financial_space, context_membership, docs_adr_0001_financial_space_ownership_and_rls_defense_in_depth_authorization, docs_adr_0001_financial_space_ownership_and_rls_transaction_local_rls, docs_adr_0001_financial_space_ownership_and_rls_cross_space_integrity [EXTRACTED 1.00] - **Safe Statement Import Flow** — context_statement_import, context_parse_run, context_source_record, docs_adr_0003_versioned_statement_imports_immutable_statement_document, docs_adr_0003_versioned_statement_imports_conservative_deduplication, docs_adr_0003_versioned_statement_imports_atomic_confirm_revert [EXTRACTED 1.00] -## Communities (75 total, 15 thin omitted) +## Communities (79 total, 18 thin omitted) -### Community 0 - "identity/router.py" -Cohesion: 0.20 -Nodes (22): accept_invite(), AcceptInviteBody, confirm_password_reset(), create_invite(), InviteBody, login(), LoginBody, logout() (+14 more) +### Community 0 - "identity/service.py" +Cohesion: 0.06 +Nodes (83): current_context(), current_session(), alias, Context, CurrentSession, Db, Header, User (+75 more) ### Community 1 - "budgeting/router.py" -Cohesion: 0.20 -Nodes (34): AssignmentItem, assignments(), AssignmentsBody, categories(), CategoryBody, CategoryFundingBody, close(), close_frontend() (+26 more) +Cohesion: 0.14 +Nodes (43): balances(), cash_flow(), category_spend(), plan_fact(), Context, date, Db, get (+35 more) ### Community 2 - "Base" -Cohesion: 0.06 -Nodes (87): downgrade(), upgrade(), AuditEvent, Append-only domain/security event. Never stores raw financial payloads., ExpectedIncome, ExpectedIncomeMatch, FundingMovement, PeriodClosure (+79 more) +Cohesion: 0.07 +Nodes (76): downgrade(), upgrade(), AuditEvent, Append-only domain/security event. Never stores raw financial payloads., ExpectedIncome, ExpectedIncomeMatch, FundingMovement, PeriodClosure (+68 more) ### Community 3 - "set_space_context" -Cohesion: 0.07 -Nodes (43): get_db(), get_engine(), get_session_factory(), Any, sessionmaker, Transaction-local RLS context. No-op on SQLite (tests); fail-closed on…, Transactional scope for workers/endpoints that own the transaction lifecycle., session_scope() (+35 more) +Cohesion: 0.22 +Nodes (14): get_db(), get_session_factory(), Any, sessionmaker, Transaction-local RLS context. No-op on SQLite (tests); fail-closed on…, Transactional scope for workers/endpoints that own the transaction lifecycle., session_scope(), set_space_context() (+6 more) ### Community 4 - "imports/router.py" -Cohesion: 0.15 +Cohesion: 0.16 Nodes (33): confirm(), ConfirmBody, decide_row(), DecisionBody, delete_source(), detail(), HoldResolveBody, imports() (+25 more) ### Community 5 - "alfa_xlsx.py" -Cohesion: 0.14 -Nodes (29): AlfaCreditXlsxAdapter, AlfaDebitXlsxAdapter, _AlfaHeaderMeta, AlfaXlsxAdapterBase, _cell_str(), _debit_find_header(), _debit_header_metadata(), _debit_header_value() (+21 more) +Cohesion: 0.17 +Nodes (24): AlfaDebitXlsxAdapter, _AlfaHeaderMeta, AlfaXlsxAdapterBase, _cell_str(), _debit_find_header(), _debit_header_metadata(), _debit_header_value(), _debit_norm() (+16 more) -### Community 6 - "Session" -Cohesion: 0.07 -Nodes (112): balances(), plan_fact(), Any, record(), BudgetPeriod, Calendar month budget period in the space timezone (month granularity)., add_expected_income(), archive_category() (+104 more) +### Community 6 - "ledger/service.py" +Cohesion: 0.11 +Nodes (62): Any, record(), get_income_source(), bad_request(), conflict(), not_found(), Any, _apply_hold_matches() (+54 more) ### Community 7 - "types.ts" Cohesion: 0.05 -Nodes (53): api, AcceptInvitePayload, Account, AccountStatus, BalanceItem, BalancesReport, BudgetBlocker, BudgetCategory (+45 more) +Nodes (52): api, AcceptInvitePayload, Account, AccountStatus, BalanceItem, BalancesReport, BudgetBlocker, BudgetCategory (+44 more) ### Community 8 - "router.tsx" -Cohesion: 0.09 -Nodes (35): AcceptInvitePage, AccountsPage, BudgetPage, ImportDetailPage, ImportsPage, LoginPage, OperationsPage, RequireAuth() (+27 more) +Cohesion: 0.11 +Nodes (35): AcceptInvitePage, LoginPage, RequireAuth(), ResetPasswordPage, SettingsPage, AppLayout(), NAV_ITEMS, LangSwitcher() (+27 more) ### Community 9 - "ledger/router.py" Cohesion: 0.15 Nodes (31): account_json(), AccountBody, accounts(), archive_account(), create_account(), create_operation(), delete_account(), operation_json() (+23 more) -### Community 10 - "AccountsPage.tsx" +### Community 10 - "main.py" Cohesion: 0.21 -Nodes (13): AccountType, CreateAccountPayload, ConfirmDialog(), ConfirmDialogProps, Modal(), ModalProps, useAccounts(), useArchiveAccount() (+5 more) +Nodes (14): get_engine(), app_error_handler(), health(), healthz(), get, Request, readiness(), security_headers() (+6 more) ### Community 11 - "compilerOptions" Cohesion: 0.07 Nodes (28): compilerOptions, baseUrl, esModuleInterop, forceConsistentCasingInFileNames, isolatedModules, jsx, lib, module (+20 more) ### Community 12 - "AnalyticsPage.tsx" -Cohesion: 0.14 -Nodes (15): AnalyticsPage, NotFoundPage, PlanFactBars(), PlanFactBarsProps, PlanFactRow, MonthSwitcher(), MonthSwitcherProps, PageHeader() (+7 more) +Cohesion: 0.21 +Nodes (12): AnalyticsPage, PlanFactBars(), PlanFactBarsProps, PlanFactRow, MonthSwitcher(), MonthSwitcherProps, useAnalyticsBalances(), useAnalyticsCashFlow() (+4 more) -### Community 13 - "analytics/router.py" +### Community 13 - "exports/router.py" Cohesion: 0.27 -Nodes (12): balances(), cash_flow(), category_spend(), plan_fact(), Context, date, Db, get (+4 more) +Nodes (10): download(), export_status(), Context, Csrf, Db, get, post, Response (+2 more) ### Community 14 - "devDependencies" Cohesion: 0.11 Nodes (19): eslint, @eslint/js, eslint-plugin-jsx-a11y, devDependencies, eslint, @eslint/js, eslint-plugin-jsx-a11y, globals (+11 more) -### Community 15 - "test_import_holds.py" -Cohesion: 0.13 -Nodes (43): AppError, Domain error rendered as a machine-readable JSON error payload., normalize_description(), date, record_fingerprint(), add_record(), _draft(), hold_document() (+35 more) +### Community 15 - "Session" +Cohesion: 0.09 +Nodes (87): balances(), cash_flow(), category_spend(), plan_fact(), date, UUID, BudgetPeriod, Calendar month budget period in the space timezone (month granularity). (+79 more) ### Community 16 - "dependencies" Cohesion: 0.11 Nodes (19): dependencies, @hookform/resolvers, i18next, react, react-dom, react-hook-form, react-i18next, react-router-dom (+11 more) ### Community 17 - "ImportDetailPage.tsx" -Cohesion: 0.33 -Nodes (13): useToast(), useConfirmImport(), useImport(), useImportErrorToaster(), useReparseImport(), useRevertImport(), useSaveRowDecision(), useUploadImport() (+5 more) +Cohesion: 0.27 +Nodes (15): RowDecision, ImportDetailPage, useToast(), useConfirmImport(), useImport(), useImportErrorToaster(), useReparseImport(), useRevertImport() (+7 more) ### Community 18 - "OperationsPage.tsx" -Cohesion: 0.14 -Nodes (27): CreateOperationPayload, Badge(), BadgeTone, EmptyState(), EmptyStateProps, QueryGate(), QueryGateProps, useActiveAccounts() (+19 more) +Cohesion: 0.11 +Nodes (29): Operation, ImportsPage, NotFoundPage, OperationsPage, ReviewQueuePage, Badge(), BadgeTone, EmptyState() (+21 more) -### Community 19 - "SettingsPage.tsx" +### Community 19 - "useOperations.ts" Cohesion: 0.16 -Nodes (16): invalidationRoots, queryKeys, SESSION_ROOT, sessionInvalidationRoot, SPACE_ROOT, spaceInvalidationRoot, OperationFilters, useCancelDeletion() (+8 more) +Nodes (14): invalidationRoots, queryKeys, SESSION_ROOT, sessionInvalidationRoot, SPACE_ROOT, spaceInvalidationRoot, OperationFilters, useCategorizeOperation() (+6 more) ### Community 20 - "Toaster.tsx" Cohesion: 0.12 Nodes (15): Locale, App(), queryClient, AppRoutes(), ToastApi, ToastContext, ToastItem, ToastKind (+7 more) -### Community 21 - "ozon_pdf.py" +### Community 21 - "adapters/base.py" Cohesion: 0.14 -Nodes (13): Protocol, StatementAdapter, StatementDraft, _first_page_text(), _ozon_cell(), _ozon_normalize(), OzonCreditPdfAdapter, OzonDebitPdfAdapter (+5 more) +Nodes (18): account_fingerprint(), amount_to_kopecks(), _mask_digits(), money_to_kopecks(), Parse statement money strings like '-1 234,56 RUR', '+ 500.00 ₽', '12 345'.…, SourceRow, StatementDraft, _first_page_text() (+10 more) ### Community 22 - "BudgetPage.tsx" -Cohesion: 0.36 -Nodes (12): useBudgetCategories(), useBudgetErrorToaster(), useBudgetSummary(), useCloseMonth(), useCopyPreviousMonth(), useFundCategory(), usePeriodMutation(), useReopenMonth() (+4 more) +Cohesion: 0.21 +Nodes (17): BudgetPage, ConfirmDialog(), ConfirmDialogProps, Modal(), ModalProps, useBudgetCategories(), useBudgetErrorToaster(), useBudgetSummary() (+9 more) ### Community 23 - "client.ts" Cohesion: 0.23 Nodes (10): apiClient, ApiError, buildUrl(), ErrorEnvelope, parseErrorEnvelope(), QueryValue, readCsrfToken(), request() (+2 more) -### Community 24 - "fields.tsx" -Cohesion: 0.21 -Nodes (11): FieldChrome, InputProps, MoneyField(), MoneyFieldProps, SelectField(), SelectFieldProps, SelectProps, TextareaField() (+3 more) +### Community 24 - "AccountsPage.tsx" +Cohesion: 0.13 +Nodes (21): AccountType, CreateAccountPayload, AccountsPage, FieldChrome, InputProps, MoneyField(), MoneyFieldProps, SelectField() (+13 more) ### Community 25 - "Docker Compose Development Stack" Cohesion: 0.29 @@ -231,17 +234,17 @@ Nodes (12): Credit Reserve, Financial Account, Financial Space, Membership, User Cohesion: 0.22 Nodes (9): scripts, api:generate, build, dev, lint, preview, test, test:watch (+1 more) -### Community 28 - "dependencies.py" -Cohesion: 0.15 -Nodes (21): current_context(), current_session(), alias, Context, CurrentSession, Db, Header, User (+13 more) +### Community 28 - "exports/service.py" +Cohesion: 0.40 +Nodes (9): build_export(), consume_export(), _csv_bytes(), get_export(), _json_rows(), datetime, UUID, request_export() (+1 more) ### Community 29 - "General Pool" Cohesion: 0.29 Nodes (8): Budget Period, Funding, General Pool, Monthly Category, Plan Assignment, Savings Envelope, Immutable Closure Snapshots, Plan and Funding Separation -### Community 30 - "TestBaseContract" -Cohesion: 0.17 -Nodes (5): detect_adapter(), make_draft(), make_source_row(), TestBaseContract, Workbook +### Community 30 - "test_adapter_contracts.py" +Cohesion: 0.13 +Nodes (10): AlfaCreditXlsxAdapter, Protocol, StatementAdapter, detect_adapter(), OzonCreditPdfAdapter, make_draft(), make_source_row(), Sanitized synthetic contract tests for the evidenced statement adapters. These… (+2 more) ### Community 31 - "Per-File Envelope Encryption" Cohesion: 0.29 @@ -271,9 +274,9 @@ Nodes (4): name, private, type, version Cohesion: 0.18 Nodes (11): Audited Break-Glass Access, Cross-Space Referential Integrity, Defense-in-Depth Authorization, Financial Space Ownership, Transaction-Local RLS Context, Budget Invariants, Critical User Path, Financial Tracker MVP (+3 more) -### Community 38 - "test_adapter_contracts.py" -Cohesion: 0.11 -Nodes (9): minimal_pdf(), _QuotaSettings, Sanitized synthetic contract tests for the evidenced statement adapters. These…, Build a small valid single-font PDF with empty or ASCII-only pages., same_page_rocket_lines(), synthetic_rocket_lines(), TestMoneyParsing, TestRocketbankDebitContract (+1 more) +### Community 38 - "TestRocketbankDebitContract" +Cohesion: 0.24 +Nodes (3): same_page_rocket_lines(), synthetic_rocket_lines(), TestRocketbankDebitContract ### Community 39 - "generate-api.mjs" Cohesion: 0.40 @@ -288,28 +291,28 @@ Cohesion: 0.67 Nodes (3): TestClient, test_invite_login_and_authenticated_space(), test_openapi_contains_critical_paths() ### Community 44 - "test_private_fixtures.py" -Cohesion: 0.12 -Nodes (22): magic_kind(), _draft_json(), Any, Reconcile parsed rows against declared bank controls with stable diagnostics.…, _reconciliation_summary(), _check(), _fail(), _load_entries() (+14 more) +Cohesion: 0.13 +Nodes (20): Any, Reconcile parsed rows against declared bank controls with stable diagnostics.…, _reconciliation_summary(), _check(), _fail(), _load_entries(), parsed(), fixture (+12 more) ### Community 45 - "TestAlfaDebitContract" -Cohesion: 0.21 +Cohesion: 0.19 Nodes (3): alfa_workbook_bytes(), synthetic_alfa_rows(), TestAlfaDebitContract ### Community 47 - "graphify" Cohesion: 0.17 Nodes (11): command, enabled, timeout, type, mcp, graphify, plugin, $schema (+3 more) -### Community 50 - "SourceRow" -Cohesion: 0.19 -Nodes (9): SourceRow, _date_from(), _PendingRecord, date, Rocketbank debit statement contract, evidenced against the real document.…, RocketbankDebitPdfAdapter, open_pdf(), _quota_error() (+1 more) +### Community 50 - "OzonDebitPdfAdapter" +Cohesion: 0.29 +Nodes (5): _ozon_cell(), _ozon_normalize(), OzonDebitPdfAdapter, Ozon debit statement contract, evidenced against the real document. A 'Справка…, Pattern ### Community 62 - "LocalDirectoryBlobStore" Cohesion: 0.39 Nodes (3): LocalDirectoryBlobStore, Path, S3-neutral local store; production swaps in an S3-compatible client. -### Community 63 - "account_fingerprint" -Cohesion: 0.25 -Nodes (3): account_fingerprint(), ozon_extracted(), TestOzonDebitContract +### Community 63 - "TestOzonDebitContract" +Cohesion: 0.15 +Nodes (6): minimal_pdf(), ozon_extracted(), _QuotaSettings, Build a small valid single-font PDF with empty or ASCII-only pages., TestOzonDebitContract, MonkeyPatch ### Community 64 - "Gitea CI and real statement imports" Cohesion: 0.29 @@ -319,41 +322,41 @@ Nodes (6): Confirmed decisions, Gitea CI and real statement imports, Goal and co Cohesion: 0.80 Nodes (4): downgrade(), _has_check_constraint(), _has_column(), upgrade() -### Community 71 - "spaces/router.py" -Cohesion: 0.16 -Nodes (19): send_token_email(), cancel_deletion(), current(), deletion_status(), DeletionBody, invite_member(), MemberInviteBody, alias (+11 more) - -### Community 72 - "identity/service.py" -Cohesion: 0.28 -Nodes (18): unauthorized(), accept_invitation(), authenticate(), create_invitation(), create_password_reset(), create_session(), get_active_session(), normalize_email() (+10 more) - -### Community 73 - "get_settings" -Cohesion: 0.16 -Nodes (12): get_settings(), Settings, create_celery_app(), encrypt_file(), EncryptedFile, Per-file random DEK; DEK wrapped with the KEK from the secret manager., Crypto-shred hook: deleting wrapped DEK rows in DB plus blobs removes access., shred_dek_material() (+4 more) - -### Community 74 - "ColumnChart.tsx" +### Community 71 - "ColumnChart.tsx" Cohesion: 0.24 Nodes (7): CashFlowColumn, ColumnChart(), ColumnChartProps, BarRow, HorizontalBars(), HorizontalBarsProps, rows +### Community 72 - "conftest.py" +Cohesion: 0.52 +Nodes (6): client(), db(), db_factory(), fixture, sessionmaker, TestClient + +### Community 73 - "imports/service.py" +Cohesion: 0.13 +Nodes (20): get_settings(), Settings, normalize_description(), date, record_fingerprint(), magic_kind(), get_blob_store(), new_object_key() (+12 more) + +### Community 75 - "AppError" +Cohesion: 0.43 +Nodes (5): AppError, Domain error rendered as a machine-readable JSON error payload., unprocessable(), _quota_error(), Exception + ## Knowledge Gaps -- **185 isolated node(s):** `$schema`, `file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js`, `type`, `/home/k1nq/.local/bin/graphify-mcp`, `/home/k1nq/repos/finance/graphify-out/graph.json` (+180 more) - These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 335 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) -- **15 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. +- **186 isolated node(s):** `$schema`, `file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js`, `type`, `/home/k1nq/.local/bin/graphify-mcp`, `/home/k1nq/repos/finance/graphify-out/graph.json` (+181 more) + These have ≤1 connection - possible missing edges or undocumented components. (Counts symbols only; 339 node(s) total have ≤1 connection when file, concept and rationale nodes are included.) +- **18 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ -- **Why does `AppError` connect `test_import_holds.py` to `identity/router.py`, `Base`, `set_space_context`, `imports/router.py`, `alfa_xlsx.py`, `Session`, `test_adapter_contracts.py`, `identity/service.py`, `get_settings`, `SourceRow`, `dependencies.py`, `account_fingerprint`?** - _High betweenness centrality (0.078) - this node is a cross-community bridge._ -- **Why does `Session` connect `Session` to `Base`, `set_space_context`, `identity/service.py`, `analytics/router.py`, `test_import_holds.py`, `dependencies.py`?** - _High betweenness centrality (0.074) - this node is a cross-community bridge._ -- **Why does `bad_request()` connect `Session` to `budgeting/router.py`, `spaces/router.py`, `identity/service.py`, `ledger/router.py`, `test_import_holds.py`?** - _High betweenness centrality (0.025) - this node is a cross-community bridge._ +- **Why does `Session` connect `Session` to `identity/service.py`, `Base`, `set_space_context`, `ledger/service.py`, `conftest.py`, `imports/service.py`, `exports/service.py`?** + _High betweenness centrality (0.085) - this node is a cross-community bridge._ +- **Why does `AppError` connect `AppError` to `identity/service.py`, `Base`, `imports/router.py`, `alfa_xlsx.py`, `ledger/service.py`, `TestRocketbankDebitContract`, `imports/service.py`, `main.py`, `exports/router.py`, `Session`, `adapters/base.py`, `test_adapter_contracts.py`, `TestOzonDebitContract`?** + _High betweenness centrality (0.069) - this node is a cross-community bridge._ +- **Why does `bad_request()` connect `ledger/service.py` to `identity/service.py`, `budgeting/router.py`, `imports/service.py`, `ledger/router.py`, `AppError`, `Session`?** + _High betweenness centrality (0.017) - this node is a cross-community bridge._ - **Are the 2 inferred relationships involving `Session` (e.g. with `UTCDateTime` and `test_postgres_rls_requires_matching_transaction_context()`) actually correct?** _`Session` has 2 INFERRED edges - model-reasoned connections that need verification._ -- **Are the 23 inferred relationships involving `AppError` (e.g. with `request_export()` and `login()`) actually correct?** - _`AppError` has 23 INFERRED edges - model-reasoned connections that need verification._ +- **Are the 24 inferred relationships involving `AppError` (e.g. with `request_export()` and `login()`) actually correct?** + _`AppError` has 24 INFERRED edges - model-reasoned connections that need verification._ - **Are the 3 inferred relationships involving `Base` (e.g. with `downgrade()` and `upgrade()`) actually correct?** _`Base` has 3 INFERRED edges - model-reasoned connections that need verification._ - **What connects `$schema`, `file:///home/k1nq/repos/finance/.kilo/plugins/graphify.js`, `type` to the rest of the system?** - _185 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file + _186 weakly-connected nodes found - possible documentation gaps or missing edges._ \ No newline at end of file diff --git a/graphify-out/graph.html b/graphify-out/graph.html index 5a48e76..65f2f46 100644 --- a/graphify-out/graph.html +++ b/graphify-out/graph.html @@ -63,12 +63,12 @@
-
1267 nodes · 3697 edges · 75 communities
+
1277 nodes · 3734 edges · 79 communities