Files
shanxia2.0/bx-mobile/graphify-out/GRAPH_REPORT.md
T

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 HEAD and compare to check if the graph is stale.
  • Run graphify update . after code changes (no API cost).

Community Hubs (Navigation)

God Nodes (most connected - your core abstractions)

  1. formatAmount() - 28 edges
  2. statusLabel() - 19 edges
  3. compilerOptions - 18 edges
  4. resolveExpenseDisplay() - 17 edges
  5. formatApplyDateTime() - 14 edges
  6. advanceApi - 11 edges
  7. reimburseApi - 11 edges
  8. attachmentApi - 11 edges
  9. useKeywordSearch() - 11 edges
  10. useExpenseItemTree() - 10 edges

Surprising Connections (you probably didn't know these)

  • actualIssuedDisplay() --calls--> formatAmount() [EXTRACTED] src/views/advance/AdvanceListPage.vue → src/utils/format.ts
  • moneyOrDash() --calls--> formatAmount() [EXTRACTED] src/views/reimburse/ReimburseListPage.vue → src/utils/format.ts
  • allReimburseLineSubtitle() --calls--> resolveExpenseDisplay() [EXTRACTED] src/views/all/AllPage.vue → src/hooks/useExpenseItemTree.ts
  • reimburseLineSubtitle() --calls--> resolveExpenseDisplay() [EXTRACTED] src/views/approval/ApprovalPage.vue → src/hooks/useExpenseItemTree.ts
  • mineReimburseLineSubtitle() --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 query to explore isolated nodes.

Suggested Questions

Questions this graph is uniquely positioned to answer:

  • Why does statusLabel() connect LoginPage.vue to ApprovalPage.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 attachmentApi connect useExpenseItemTree.ts to PaymentPage.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() connect ApprovalPage.vue to PaymentPage.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, private to the rest of the system? 485 weakly-connected nodes found - possible documentation gaps or missing edges.
  • Should HomePage.vue be split into smaller, more focused modules? Cohesion score 0.05052790346907994 - nodes in this community are weakly interconnected.
  • Should ApprovalPage.vue be split into smaller, more focused modules? Cohesion score 0.05496828752642706 - nodes in this community are weakly interconnected.
  • Should PaymentPage.vue be split into smaller, more focused modules? Cohesion score 0.046511627906976744 - nodes in this community are weakly interconnected.