7.5 KiB
7.5 KiB
Complete Function Call Diagram
graph TB
subgraph AI_Service["AI Service Modules"]
MA[mainServiceAi<br/>AiService]
SC[subCoreAi<br/>SubCoreAi]
SDG[subDocumentGeneration<br/>SubDocumentGeneration]
SDP[subDocumentProcessing<br/>SubDocumentProcessing]
SU[subSharedAiUtils<br/>Utilities]
end
subgraph EXT_Service["Extraction Service Modules"]
MSE[mainServiceExtraction<br/>ExtractionService]
SPE[subPromptBuilderExtraction<br/>buildExtractionPrompt]
SP[subPipeline<br/>runExtraction]
end
subgraph GEN_Service["Generation Service Modules"]
MSG[mainServiceGeneration<br/>GenerationService]
SPG[subPromptBuilderGeneration<br/>buildGenerationPrompt]
SJ[subJsonSchema<br/>Schemas]
end
%% subCoreAi calls
SC -->|_buildGenerationPrompt| SPG
SC -->|callAiDocuments| SDP
SC -->|sanitizePromptContent| SU
%% subDocumentGeneration calls
SDG -->|processDocumentsWithContinuation| SDP
SDG -->|buildGenerationPrompt| SPG
SDG -->|renderReport| MSG
SDG -->|sanitizePromptContent| SU
%% subDocumentProcessing calls
SDP -->|extractContent 3x| MSE
SDP -->|_applyMerging 3x| SP
SDP -->|readImage| SC
%% mainServiceExtraction calls
MSE -->|runExtraction| SP
%% subPromptBuilderExtraction calls
SPE -->|get_document_subJsonSchema| SJ
SPE -->|sanitizePromptContent| SU
%% mainServiceGeneration calls utilities
MSG -->|utility functions| SU
%% subCoreAi detailed calls
SC -.->|aiObjects.call| AI_Interface["AiObjects Interface"]
SDP -.->|aiObjects.call| AI_Interface
%% Style
classDef aiClass fill:#e1f5ff,stroke:#0066cc,stroke-width:2px
classDef extClass fill:#fff5e1,stroke:#cc6600,stroke-width:2px
classDef genClass fill:#e1ffe1,stroke:#006600,stroke-width:2px
classDef utilClass fill:#f0f0f0,stroke:#666,stroke-width:2px
classDef interfaceClass fill:#ffe1f5,stroke:#cc0066,stroke-width:2px
class MA,SC,SDG,SDP,SU aiClass
class MSE,SPE,SP extClass
class MSG,SPG,SJ genClass
class AI_Interface interfaceClass
Detailed Call Map with Function Names
graph LR
%% Nodes
SC[subCoreAi]
SDG[subDocumentGeneration]
SDP[subDocumentProcessing]
SU[subSharedAiUtils]
SPE[subPromptBuilderExtraction]
SPG[subPromptBuilderGeneration]
MSE[mainServiceExtraction]
MSG[mainServiceGeneration]
SP[subPipeline]
SJ[subJsonSchema]
%% subCoreAi function calls
SC -->|"_buildGenerationPrompt()<br/>calls"| SPG
SC -->|"callAiDocuments()<br/>calls callAiText()"| SDP
SC -->|"sanitizePromptContent()"| SU
%% subDocumentGeneration function calls
SDG -->|"_processDocumentsUnified()<br/>calls"| SDP
SDG -->|"_processDocument()<br/>calls"| SPG
SDG -->|"_processDocument()<br/>calls"| MSG
SDG -->|"sanitizePromptContent()"| SU
%% subDocumentProcessing function calls
SDP -->|"extractContent()"| MSE
SDP -->|"_mergePartResults()<br/>_convertPartResultsToJson()<br/>_mergeChunkResultsJson()<br/>all call"| SP
SDP -->|"_processChunksWithMapping()<br/>calls readImage()"| SC
%% Extraction service calls
MSE -->|"extractContent()<br/>calls"| SP
%% Prompt builder calls
SPE -->|"get_document_subJsonSchema()"| SJ
SPE -->|"sanitizePromptContent()"| SU
%% Generation service calls
MSG -->|"uses utility functions"| SU
classDef aiModule fill:#e1f5ff,stroke:#0066cc
classDef extModule fill:#fff5e1,stroke:#cc6600
classDef genModule fill:#e1ffe1,stroke:#006600
class SC,SDG,SDP,SU aiModule
class MSE,SPE,SP extModule
class MSG,SPG,SJ genModule
Call Flow by Module
1. subCoreAi (SubCoreAi Class)
Calls Out:
buildGenerationPrompt()→ subPromptBuilderGeneration (line 363-366)callAiText()→ subDocumentProcessing (line 453)renderReport()→ mainServiceGeneration (line 478-482)sanitizePromptContent()→ subSharedAiUtils (line 61, via services.ai)
Called By:
- mainServiceAi (creates instance)
- subDocumentProcessing._processChunksWithMapping (calls readImage at line 672-675)
2. subDocumentGeneration (SubDocumentGeneration Class)
Calls Out:
processDocumentsWithContinuation()→ subDocumentProcessing (line 110)buildGenerationPrompt()→ subPromptBuilderGeneration (line 330)renderReport()→ mainServiceGeneration (line 392)sanitizePromptContent()→ subSharedAiUtils (line 466)
Called By:
- mainServiceAi (creates instance)
3. subDocumentProcessing (SubDocumentProcessing Class)
Calls Out:
extractContent()→ mainServiceExtraction (lines 78, 131, 220)_applyMerging()→ subPipeline (lines 1044, 1095, 1232, 1293, 1345)readImage()→ subCoreAi (line 672-675)sanitizePromptContent()→ subSharedAiUtils (via self.services.ai)
Called By:
- mainServiceAi (creates instance)
- subCoreAi.callAiDocuments (calls callAiText at line 453)
- subDocumentGeneration._processDocumentsUnified (calls processDocumentsWithContinuation)
4. mainServiceExtraction (ExtractionService Class)
Calls Out:
runExtraction()→ subPipeline (line 61)- Uses ExtractorRegistry from subRegistry
Called By:
- subDocumentProcessing.extractContent (3 times)
5. subPromptBuilderExtraction
Calls Out:
get_document_subJsonSchema()→ subJsonSchema (line 172)sanitizePromptContent()→ subSharedAiUtils (via services.ai)
Called By:
- mainServiceGeneration (indirectly via getAdaptiveExtractionPrompt)
6. mainServiceGeneration (GenerationService Class)
Calls Out:
get_renderer()→ renderers.registry (line 501)- Utility functions from subDocumentUtility
- Uses modelRegistry (external)
Called By:
- subCoreAi.callAiDocuments (calls renderReport)
- subDocumentGeneration._processDocument (calls renderReport)
7. subPromptBuilderGeneration
Calls Out:
- Returns prompt template string
Called By:
- subCoreAi._buildGenerationPrompt (line 363-366)
- subDocumentGeneration._processDocument (line 330)
8. subPipeline
Calls Out:
- Creates IntelligentTokenAwareMerger from subMerger (line 96)
- Uses mergers from merging submodules
Called By:
- mainServiceExtraction.extractContent (calls runExtraction)
- subDocumentProcessing (calls _applyMerging 5 times)
9. subSharedAiUtils
Functions Provided:
buildPromptWithPlaceholders()sanitizePromptContent()extractTextFromContentParts()reduceText()determineCallType()
Called By:
- subCoreAi (imports and calls functions)
- subDocumentGeneration (via services.ai.sanitizePromptContent)
- subPromptBuilderExtraction (via services.ai.sanitizePromptContent)
10. subJsonSchema
Functions Provided:
get_document_subJsonSchema()get_multi_document_subJsonSchema()
Called By:
- subPromptBuilderExtraction.buildExtractionPrompt (line 172)
Circular Dependencies
AI Service Loop:
- subDocumentProcessing → subCoreAi.readImage() (for image processing)
- subDocumentProcessing → mainServiceExtraction (for extraction)
- mainServiceExtraction → subPipeline (for processing)
- subPipeline creates IntelligentTokenAwareMerger
Flow:
subDocumentProcessing.extractContent()
→ mainServiceExtraction.extractContent()
→ subPipeline.runExtraction()
→ returns ContentExtracted
→ processed by subDocumentProcessing
→ calls subPipeline._applyMerging()