# Graph Report - bx (2026-04-29) ## Corpus Check - 140 files · ~170,308 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 481 nodes · 766 edges · 15 communities detected - Extraction: 60% EXTRACTED · 40% INFERRED · 0% AMBIGUOUS · INFERRED: 310 edges (avg confidence: 0.68) - Token cost: 0 input · 0 output ## Community Hubs (Navigation) - [[_COMMUNITY_Community 0|Community 0]] - [[_COMMUNITY_Community 1|Community 1]] - [[_COMMUNITY_Community 2|Community 2]] - [[_COMMUNITY_Community 3|Community 3]] - [[_COMMUNITY_Community 4|Community 4]] - [[_COMMUNITY_Community 5|Community 5]] - [[_COMMUNITY_Community 6|Community 6]] - [[_COMMUNITY_Community 7|Community 7]] - [[_COMMUNITY_Community 8|Community 8]] - [[_COMMUNITY_Community 9|Community 9]] - [[_COMMUNITY_Community 10|Community 10]] - [[_COMMUNITY_Community 12|Community 12]] - [[_COMMUNITY_Community 13|Community 13]] - [[_COMMUNITY_Community 16|Community 16]] - [[_COMMUNITY_Community 18|Community 18]] ## God Nodes (most connected - your core abstractions) 1. `ApiResponse` - 83 edges 2. `BaseModel` - 19 edges 3. `Base` - 18 edges 4. `SoftDeleteMixin` - 18 edges 5. `PagedData` - 18 edges 6. `User` - 16 edges 7. `get_by_id()` - 15 edges 8. `Role` - 13 edges 9. `CrudService` - 13 edges 10. `get_paged()` - 13 edges ## Surprising Connections (you probably didn't know these) - `handleLogin()` --calls--> `login()` [INFERRED] bx-mobile/src/views/login/LoginPage.vue → bx-backend/app/routers/auth.py - `get_current_user_info()` --calls--> `ApiResponse` [INFERRED] bx-backend/app/routers/auth.py → bx-backend/app/schemas/common.py - `approve()` --calls--> `ReimburseApproval` [INFERRED] bx-backend/app/services/reimburse.py → bx-backend/app/models/reimburse.py - `reject()` --calls--> `ReimburseApproval` [INFERRED] bx-backend/app/services/reimburse.py → bx-backend/app/models/reimburse.py - `batch_offset()` --calls--> `ReimburseOffset` [INFERRED] bx-backend/app/services/reimburse.py → bx-backend/app/models/reimburse.py ## Communities ### Community 0 - "Community 0" Cohesion: 0.05 Nodes (82): approve_advance(), approved_by_me(), create_advance(), delete_advance(), get_advance(), get_approvals(), list_advances(), my_advances() (+74 more) ### Community 1 - "Community 1" Cohesion: 0.06 Nodes (48): BaseModel, list_advance_offset_records(), AdvanceApplyCreate, AdvanceApplyOut, AdvanceApplyUpdate, AdvanceApprovalCreate, AdvanceApprovalOut, AdvanceIssueOut (+40 more) ### Community 2 - "Community 2" Cohesion: 0.13 Nodes (32): Base, Base, DeclarativeBase, AdvanceApply, AdvanceApproval, Attachment, BaseModel, Base model with common columns shared by all bx_ tables. (+24 more) ### Community 3 - "Community 3" Cohesion: 0.08 Nodes (30): get_current_user(), FastAPI dependencies: DB session, current user, role guards., Dependency factory: currently bypasses role check., require_roles(), create_access_token(), decode_access_token(), hash_password(), JWT creation / verification and password hashing. (+22 more) ### Community 4 - "Community 4" Cohesion: 0.1 Nodes (11): confirmAction(), fetchList(), onLoad(), onRefresh(), onTabChange(), loadAdvanceData(), loadAdvanceMore(), loadReimburseData() (+3 more) ### Community 5 - "Community 5" Cohesion: 0.09 Nodes (13): issue_advance(), update_reimburse(), approved_by_me(), issue(), pending_approval(), approve(), approved_by_me(), batch_offset() (+5 more) ### Community 6 - "Community 6" Cohesion: 0.15 Nodes (9): create_workflow(), delete_workflow(), get_workflow(), get_workflow_by_biz_type(), list_workflows(), save_workflow_nodes(), update_workflow(), get_by_biz_type() (+1 more) ### Community 7 - "Community 7" Cohesion: 0.23 Nodes (8): get_settings(), Settings, BaseSettings, download_file(), _get_client(), get_presigned_url(), MinioService, upload_file() ### Community 8 - "Community 8" Cohesion: 0.25 Nodes (5): menuTypeLabel(), statusColor(), statusLabel(), statusTagClass(), statusTone() ### Community 9 - "Community 9" Cohesion: 0.22 Nodes (4): get_expense_item_tree(), _build_tree(), ExpenseItemService, get_item_tree() ### Community 10 - "Community 10" Cohesion: 0.22 Nodes (1): get_users_by_role() ### Community 12 - "Community 12" Cohesion: 0.29 Nodes (3): AttachmentService, bind_biz(), update() ### Community 13 - "Community 13" Cohesion: 0.6 Nodes (3): flattenTree(), formatExpenseName(), useExpenseItemTree() ### Community 16 - "Community 16" Cohesion: 0.67 Nodes (1): BizError ### Community 18 - "Community 18" Cohesion: 0.67 Nodes (1): FastAPI application factory. ## Knowledge Gaps - **5 isolated node(s):** `FastAPI application factory.`, `JWT creation / verification and password hashing.`, `Generate business codes like BYJ20260424001 / BX20260424001.`, `Generate a sequential code: {prefix}{YYYYMMDD}{3-digit-sequence}. prefix exa`, `MinioService` These have ≤1 connection - possible missing edges or undocumented components. - **Thin community `Community 10`** (9 nodes): `role.py`, `assign_menus()`, `assign_users()`, `create()`, `get_by_id()`, `get_paged()`, `get_users_by_role()`, `soft_delete()`, `update()` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 16`** (3 nodes): `BizError`, `.constructor()`, `client.ts` Too small to be a meaningful cluster - may be noise or needs more connections extracted. - **Thin community `Community 18`** (3 nodes): `create_app()`, `FastAPI application factory.`, `main.py` Too small to be a meaningful cluster - may be noise or needs more connections extracted. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `ApiResponse` connect `Community 0` to `Community 1`, `Community 3`, `Community 5`, `Community 6`, `Community 9`?** _High betweenness centrality (0.230) - this node is a cross-community bridge._ - **Why does `CrudService` connect `Community 2` to `Community 0`, `Community 9`, `Community 3`, `Community 12`?** _High betweenness centrality (0.036) - this node is a cross-community bridge._ - **Why does `User` connect `Community 3` to `Community 1`, `Community 2`?** _High betweenness centrality (0.036) - this node is a cross-community bridge._ - **Are the 81 inferred relationships involving `ApiResponse` (e.g. with `LoginRequest` and `RegisterRequest`) actually correct?** _`ApiResponse` has 81 INFERRED edges - model-reasoned connections that need verification._ - **Are the 16 inferred relationships involving `BaseModel` (e.g. with `RoleUser` and `User`) actually correct?** _`BaseModel` has 16 INFERRED edges - model-reasoned connections that need verification._ - **Are the 16 inferred relationships involving `Base` (e.g. with `RoleUser` and `User`) actually correct?** _`Base` has 16 INFERRED edges - model-reasoned connections that need verification._ - **Are the 16 inferred relationships involving `SoftDeleteMixin` (e.g. with `RoleUser` and `User`) actually correct?** _`SoftDeleteMixin` has 16 INFERRED edges - model-reasoned connections that need verification._