GRAPH_REPORT.md 6.9 KB

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.