12 KiB
Graph Report - bx-mobile (2026-08-17)
Corpus Check
- 59 files · ~50,517 words
- Verdict: corpus is large enough that graph structure adds value.
Summary
- 950 nodes · 1438 edges · 44 communities (36 shown, 8 thin omitted)
- Extraction: 99% EXTRACTED · 1% INFERRED · 0% AMBIGUOUS · INFERRED: 11 edges (avg confidence: 0.53)
- Token cost: 0 input · 0 output
Graph Freshness
- Built from commit:
43d53cb9 - Run
git rev-parse HEADand compare to check if the graph is stale. - Run
graphify update .after code changes (no API cost).
Community Hubs (Navigation)
- _COMMUNITY_HomePage.vue
- _COMMUNITY_ApprovalPage.vue
- _COMMUNITY_PaymentPage.vue
- _COMMUNITY_RoleManagePage.vue
- _COMMUNITY_InvoiceWalletAdminPage.vue
- _COMMUNITY_InvoiceWalletMinePage.vue
- _COMMUNITY_format.ts
- _COMMUNITY_MinePage.vue
- _COMMUNITY_ReimburseApplyPage.vue
- _COMMUNITY_AdvanceApprovePage.vue
- _COMMUNITY_AdvanceIssuePage.vue
- _COMMUNITY_ReimburseApprovePage.vue
- _COMMUNITY_MenuManagePage.vue
- _COMMUNITY_UserManagePage.vue
- _COMMUNITY_AllPage.vue
- _COMMUNITY_ReimburseDetailPage.vue
- _COMMUNITY_ExpenseProjectPage.vue
- _COMMUNITY_dependencies
- _COMMUNITY_WfReimbursePage.vue
- _COMMUNITY_ReimburseListPage.vue
- _COMMUNITY_WfAdvancePage.vue
- _COMMUNITY_ApprovalDetailPage.vue
- _COMMUNITY_AdvanceDetailPage.vue
- _COMMUNITY_compilerOptions
- _COMMUNITY_LoginPage.vue
- _COMMUNITY_AdvanceApplyPage.vue
- _COMMUNITY_useExpenseItemTree.ts
- _COMMUNITY_index.ts
- _COMMUNITY_compilerOptions
- _COMMUNITY_BizError
- _COMMUNITY_formatApplyDateTime
- _COMMUNITY_fetchPage
- _COMMUNITY_loadEditData
- _COMMUNITY_AdminIndexPage.vue
- _COMMUNITY_onSubmit
- _COMMUNITY_components.d.ts
- _COMMUNITY_MenuEntryCard.vue
- _COMMUNITY_fetchOffsetAdvances
- _COMMUNITY_isImageFile
- _COMMUNITY_loadBizAttachmentsTo
- _COMMUNITY_findRootForItem
God Nodes (most connected - your core abstractions)
formatAmount()- 28 edgesstatusLabel()- 19 edgescompilerOptions- 18 edgesresolveExpenseDisplay()- 17 edgesformatApplyDateTime()- 14 edgesadvanceApi- 11 edgesreimburseApi- 11 edgesattachmentApi- 11 edgesuseKeywordSearch()- 11 edgesuseExpenseItemTree()- 10 edges
Surprising Connections (you probably didn't know these)
actualIssuedDisplay()--calls-->formatAmount()[EXTRACTED] src/views/advance/AdvanceListPage.vue → src/utils/format.tsmoneyOrDash()--calls-->formatAmount()[EXTRACTED] src/views/reimburse/ReimburseListPage.vue → src/utils/format.tsallReimburseLineSubtitle()--calls-->resolveExpenseDisplay()[EXTRACTED] src/views/all/AllPage.vue → src/hooks/useExpenseItemTree.tsreimburseLineSubtitle()--calls-->resolveExpenseDisplay()[EXTRACTED] src/views/approval/ApprovalPage.vue → src/hooks/useExpenseItemTree.tsmineReimburseLineSubtitle()--calls-->resolveExpenseDisplay()[EXTRACTED] src/views/mine/MinePage.vue → src/hooks/useExpenseItemTree.ts
Import Cycles
- None detected.
Communities (44 total, 8 thin omitted)
Community 0 - "HomePage.vue"
Cohesion: 0.05 Nodes (33): reimburseApi, BX_MENU_CATALOG, BxMenuEntry, BxMenuPhase, app, router, routes, MenuItem (+25 more)
Community 1 - "ApprovalPage.vue"
Cohesion: 0.05 Nodes (38): formatAmount(), actualIssuedDisplay(), popupOffsetTotalDisplay(), actualIssuedDisplay(), detailOffsetTotalDisplay(), actualIssuedDisplay(), moneyOrDash(), actionLoading (+30 more)
Community 2 - "PaymentPage.vue"
Cohesion: 0.05 Nodes (33): activeTab, actualAmount, detailApplyAttachments, detailData, detailLoading, detailOffsetAttachments, detailOffsetRecords, detailPayAttachments (+25 more)
Community 3 - "RoleManagePage.vue"
Cohesion: 0.06 Nodes (36): allUsers, collectAllParentIds(), currentPage, editingId, finished, form, handleAssignUserSubmit(), handleDelete() (+28 more)
Community 4 - "InvoiceWalletAdminPage.vue"
Cohesion: 0.06 Nodes (40): useKeywordSearch(), UseKeywordSearchOptions, detailInvoices, detailSummary, detailUser, fetchInvoices(), fetchWallets(), invFinished (+32 more)
Community 5 - "InvoiceWalletMinePage.vue"
Cohesion: 0.08 Nodes (20): activeTab, allLedgers, invFinished, invLoading, InvoiceAtt, invoices, invPage, invRefreshing (+12 more)
Community 6 - "format.ts"
Cohesion: 0.13 Nodes (18): advanceApi, activeTab, actualIssuedDisplay(), currentPage, fetchPage(), finished, handleDelete(), handleSubmit() (+10 more)
Community 7 - "MinePage.vue"
Cohesion: 0.07 Nodes (34): activeTab, addActions, advanceFinished, advanceList, advanceLoadingMore, advancePage, advanceRefreshing, advanceStatus (+26 more)
Community 8 - "ReimburseApplyPage.vue"
Cohesion: 0.04 Nodes (33): applicantKeyword, applicantLabel, { applicantOptions, loadApplicantOptions }, applicantPickerColumns, attachItems, auth, balanceInsufficient, DetailLine (+25 more)
Community 9 - "AdvanceApprovePage.vue"
Cohesion: 0.06 Nodes (32): actionLoading, actionType, activeTab, confirmAction(), currentItem, detailData, downloadPopupFile(), fetchPage() (+24 more)
Community 10 - "AdvanceIssuePage.vue"
Cohesion: 0.06 Nodes (27): activeTab, actualAmount, confirmIssue(), detailApplyAttachments, detailData, detailIssueAttachments, detailOffsetRecords, fetchList() (+19 more)
Community 11 - "ReimburseApprovePage.vue"
Cohesion: 0.07 Nodes (31): actionLoading, actionType, activeTab, cardTitle(), confirmAction(), currentItem, detailData, fetchPage() (+23 more)
Community 12 - "MenuManagePage.vue"
Cohesion: 0.07 Nodes (26): Props, Props, variantClass, menuTypeLabel(), editingId, form, handleDelete(), handleSubmit() (+18 more)
Community 13 - "UserManagePage.vue"
Cohesion: 0.07 Nodes (29): currentPage, editingId, finished, form, handleDelete(), handleSearch(), handleSubmit(), handleToggleStatus() (+21 more)
Community 14 - "AllPage.vue"
Cohesion: 0.09 Nodes (27): activeTab, allReimburseCardTitle(), allReimburseLineSubtitle(), allRows, displayList, displayPage, extractRows(), filteredList (+19 more)
Community 15 - "ReimburseDetailPage.vue"
Cohesion: 0.07 Nodes (30): actionButtons, applyAttachments, approvals, canWithdraw, checkResubmitPrompt(), deleteLoading, detail, detailTab (+22 more)
Community 16 - "ExpenseProjectPage.vue"
Cohesion: 0.09 Nodes (24): dialogMode, dialogTitle, expandedIds, expenseTree, form, handleDelete(), handleSubmit(), isEdit (+16 more)
Community 17 - "dependencies"
Cohesion: 0.08 Nodes (25): dependencies, axios, dayjs, jsencrypt, pinia, vant, @vant/use, vue (+17 more)
Community 18 - "WfReimbursePage.vue"
Cohesion: 0.06 Nodes (36): workflowApi, portalAdminApi, portalAuthApi, portalClient, PortalError, useApplicantOptions(), buildWebEncryptedLoginBody(), approverDisplay (+28 more)
Community 19 - "ReimburseListPage.vue"
Cohesion: 0.08 Nodes (30): expenseItemApi, ExpenseItem, formatExpenseName(), pickExpenseItemId(), resolveExpenseDisplay(), useExpenseItemTree(), payCardTitle(), lineExpenseDisplay() (+22 more)
Community 20 - "WfAdvancePage.vue"
Cohesion: 0.12 Nodes (22): approverDisplay, approverKeyword, buildNodePayload(), formData, handleDelete(), handleSubmit(), isEdit, loading (+14 more)
Community 21 - "ApprovalDetailPage.vue"
Cohesion: 0.07 Nodes (23): actionType, advanceOffsetRecords, advanceOffsetTotalDisplay, approvals, bizType, detail, detailTab, dialogSubmitting (+15 more)
Community 22 - "AdvanceDetailPage.vue"
Cohesion: 0.10 Nodes (20): paymentApi, actionLoading, approvals, AttachmentInfo, attachments, checkResubmitPrompt(), detail, detailTab (+12 more)
Community 23 - "compilerOptions"
Cohesion: 0.09 Nodes (21): compilerOptions, allowImportingTsExtensions, baseUrl, isolatedModules, jsx, lib, module, moduleResolution (+13 more)
Community 24 - "LoginPage.vue"
Cohesion: 0.16 Nodes (15): advanceIssueRecordStatusLabel(), advanceIssueRecordStatusTagClass(), formatApplyDate(), formatDate(), paymentDetailTicketToneClass(), paymentRecordRawStatus(), paymentRecordStatusLabel(), paymentRecordStatusTagClass() (+7 more)
Community 25 - "AdvanceApplyPage.vue"
Cohesion: 0.13 Nodes (14): SUBMIT_APPROVE_BUTTON_COLOR, attachment, attachmentAccept, fieldErr, form, isEdit, loadEditData(), onSubmit() (+6 more)
Community 26 - "useExpenseItemTree.ts"
Cohesion: 0.17 Nodes (8): BizError, bxClient, attachmentApi, BxId, invoiceApi, invoiceWalletApi, AttachmentFile, useAttachment()
Community 27 - "index.ts"
Cohesion: 0.22 Nodes (9): ensureLedgersLoaded(), fetchLedgersPage(), ledgers, loadSummary(), onInvoiceRefresh(), onLedgerLoad(), onLedgerRefresh(), onUploadBeforeClose() (+1 more)
Community 28 - "compilerOptions"
Cohesion: 0.25 Nodes (7): compilerOptions, allowSyntheticDefaultImports, composite, module, moduleResolution, skipLibCheck, include
Community 29 - "BizError"
Cohesion: 0.29 Nodes (7): fetchInvoices(), invoiceFiles(), isImage(), kickInvoicePreviewLoads(), normalizeInvoiceFiles(), onInvoiceLoad(), openAttachment()
Community 31 - "fetchPage"
Cohesion: 0.33 Nodes (6): confirmIssue(), confirmOffset(), fetchPage(), onLoad(), onRefresh(), remainingOffset()
Community 32 - "loadEditData"
Cohesion: 0.24 Nodes (10): buildAttachItems(), confirmInvoicePicker(), invoiceFileList(), isImageFileType(), kickAttachPreviews(), loadEditData(), onApplicantConfirm(), refreshTitle() (+2 more)
Community 34 - "onSubmit"
Cohesion: 0.67 Nodes (3): buildInvoicePayload(), onSubmit(), validateReimburseApplyForm()
Knowledge Gaps
- 485 isolated node(s):
GlobalComponents,name,private,version,type(+480 more) These have ≤1 connection - possible missing edges or undocumented components. - 8 thin communities (<3 nodes) omitted from report — run
graphify queryto explore isolated nodes.
Suggested Questions
Questions this graph is uniquely positioned to answer:
- Why does
statusLabel()connectLoginPage.vuetoApprovalPage.vue,RoleManagePage.vue,format.ts,MinePage.vue,AdvanceApprovePage.vue,ReimburseApprovePage.vue,MenuManagePage.vue,UserManagePage.vue,AllPage.vue,ReimburseDetailPage.vue,ExpenseProjectPage.vue,WfReimbursePage.vue,ReimburseListPage.vue,WfAdvancePage.vue,ApprovalDetailPage.vue,AdvanceDetailPage.vue? High betweenness centrality (0.052) - this node is a cross-community bridge. - Why does
attachmentApiconnectuseExpenseItemTree.tstoPaymentPage.vue,InvoiceWalletAdminPage.vue,InvoiceWalletMinePage.vue,ReimburseApplyPage.vue,AdvanceApprovePage.vue,AdvanceIssuePage.vue,ReimburseApprovePage.vue,ReimburseDetailPage.vue,AdvanceDetailPage.vue? High betweenness centrality (0.037) - this node is a cross-community bridge. - Why does
formatAmount()connectApprovalPage.vuetoPaymentPage.vue,format.ts,MinePage.vue,AdvanceApprovePage.vue,AdvanceIssuePage.vue,ReimburseApprovePage.vue,AllPage.vue,ReimburseDetailPage.vue,ReimburseListPage.vue,ApprovalDetailPage.vue,AdvanceDetailPage.vue,LoginPage.vue? High betweenness centrality (0.033) - this node is a cross-community bridge. - What connects
GlobalComponents,name,privateto the rest of the system? 485 weakly-connected nodes found - possible documentation gaps or missing edges. - Should
HomePage.vuebe split into smaller, more focused modules? Cohesion score 0.05052790346907994 - nodes in this community are weakly interconnected. - Should
ApprovalPage.vuebe split into smaller, more focused modules? Cohesion score 0.05496828752642706 - nodes in this community are weakly interconnected. - Should
PaymentPage.vuebe split into smaller, more focused modules? Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected.