254 lines
7.5 KiB
Markdown
254 lines
7.5 KiB
Markdown
# Complete Function Call Diagram
|
|
|
|
```mermaid
|
|
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
|
|
|
|
```mermaid
|
|
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:**
|
|
1. subDocumentProcessing → subCoreAi.readImage() (for image processing)
|
|
2. subDocumentProcessing → mainServiceExtraction (for extraction)
|
|
3. mainServiceExtraction → subPipeline (for processing)
|
|
4. subPipeline creates IntelligentTokenAwareMerger
|
|
|
|
**Flow:**
|
|
```
|
|
subDocumentProcessing.extractContent()
|
|
→ mainServiceExtraction.extractContent()
|
|
→ subPipeline.runExtraction()
|
|
→ returns ContentExtracted
|
|
→ processed by subDocumentProcessing
|
|
→ calls subPipeline._applyMerging()
|
|
```
|