docs(c4): fix 3d OCR — route transcription/annotation through domain services
OcrAsyncRunner injects TranscriptionService and AnnotationService; it only accesses the DB directly for OcrJob state (OcrJobRepository). The previous Rel arrow incorrectly showed direct JDBC access for transcription blocks and annotations, contradicting the component description. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -277,6 +277,9 @@ C4Component
|
|||||||
Component(ocrTraining, "OcrTrainingService", "Spring Service", "Orchestrates model training: exports training data as ZIP, calls Python /train or /segtrain, persists training metrics in OcrTrainingRunRepository.")
|
Component(ocrTraining, "OcrTrainingService", "Spring Service", "Orchestrates model training: exports training data as ZIP, calls Python /train or /segtrain, persists training metrics in OcrTrainingRunRepository.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Component(transcriptionSvc, "TranscriptionService", "Spring Service", "See diagram 3b.2. Called by OcrAsyncRunner to persist transcription blocks per page.")
|
||||||
|
Component(annotationSvc, "AnnotationService", "Spring Service", "See diagram 3b.2. Called by OcrAsyncRunner to persist OCR-generated annotation regions per page.")
|
||||||
|
|
||||||
Rel(frontend, ocrCtrl, "OCR trigger, status, and progress requests", "HTTP / JSON / SSE")
|
Rel(frontend, ocrCtrl, "OCR trigger, status, and progress requests", "HTTP / JSON / SSE")
|
||||||
Rel(ocrCtrl, ocrSvc, "Single-document jobs", "")
|
Rel(ocrCtrl, ocrSvc, "Single-document jobs", "")
|
||||||
Rel(ocrCtrl, ocrBatch, "Batch jobs", "")
|
Rel(ocrCtrl, ocrBatch, "Batch jobs", "")
|
||||||
@@ -286,7 +289,9 @@ C4Component
|
|||||||
Rel(ocrAsync, ocrClient, "Streams OCR results page by page", "HTTP / NDJSON")
|
Rel(ocrAsync, ocrClient, "Streams OCR results page by page", "HTTP / NDJSON")
|
||||||
Rel(ocrTraining, ocrClient, "Sends training data ZIP", "HTTP / multipart")
|
Rel(ocrTraining, ocrClient, "Sends training data ZIP", "HTTP / multipart")
|
||||||
Rel(ocrClient, ocrPy, "POST /ocr/stream, /train, /segtrain, /train-sender", "HTTP / REST")
|
Rel(ocrClient, ocrPy, "POST /ocr/stream, /train, /segtrain, /train-sender", "HTTP / REST")
|
||||||
Rel(ocrAsync, db, "Reads / writes job state, transcription blocks, annotations", "JDBC")
|
Rel(ocrAsync, transcriptionSvc, "Saves transcription blocks per page", "")
|
||||||
|
Rel(ocrAsync, annotationSvc, "Saves annotation regions per page", "")
|
||||||
|
Rel(ocrAsync, db, "Reads / writes OCR job state", "JDBC")
|
||||||
Rel(ocrAsync, minio, "Generates presigned URLs for PDF fetch", "S3 API")
|
Rel(ocrAsync, minio, "Generates presigned URLs for PDF fetch", "S3 API")
|
||||||
Rel(ocrPy, minio, "Fetches PDF via presigned URL", "HTTP / S3 presigned")
|
Rel(ocrPy, minio, "Fetches PDF via presigned URL", "HTTP / S3 presigned")
|
||||||
Rel(ocrTraining, db, "Persists training run metrics", "JDBC")
|
Rel(ocrTraining, db, "Persists training run metrics", "JDBC")
|
||||||
|
|||||||
Reference in New Issue
Block a user