Files
query-orchestration/docs/ai.generated/02-service-architecture.md
T
Jay Brown 6dccf494f8 Merged in feature/permit-policy-cleanup (pull request #210)
cleanup permit policies and correct documentation

* docs

* policy cleanup

* refactor

* Merge remote-tracking branch 'origin/feature/permit-policy-cleanup' into feature/permit-policy-cleanup

* docs and edits
2026-02-19 20:22:59 +00:00

112 lines
3.3 KiB
Markdown

# Service Architecture
## Service Catalog
### Active Services
#### queryAPI - Main HTTP API Service
- **Port**: 8080
- **Type**: HTTP REST API
- **Responsibilities**:
- Client, document, folder, label, collector, export, field extraction, admin, and EULA endpoints
- Authentication/authorization middleware integration (Cognito + Permit.io)
- Batch upload background processing coordination
#### storeEventRunner - S3 Event Processor
- **Port**: 8081
- **Type**: Queue consumer
- **Input**: S3 event notification messages
- **Output**: DOCINIT queue messages
#### docInitRunner - Document Initialization
- **Port**: 8082
- **Type**: Queue consumer
- **Input**: DOCINIT queue messages
- **Output**: DOCSYNC queue messages
- **Responsibilities**: document registration and deduplication by client/hash
#### docSyncRunner - Document Sync Gate
- **Port**: 8083
- **Type**: Queue consumer
- **Input**: DOCSYNC queue messages
- **Output**: DOCCLEAN queue messages
- **Responsibilities**: enforce client sync eligibility before processing
#### docCleanRunner - Document Validation/Cleaning
- **Port**: 8084
- **Type**: Queue consumer
- **Input**: DOCCLEAN queue messages
- **Output**: none (pipeline currently ends here)
- **Responsibilities**: content validation, clean record creation, idempotent processing
#### clientSyncRunner - Client Reprocessing Trigger
- **Port**: 8089
- **Type**: Queue consumer
- **Input**: CLIENTSYNC queue messages
- **Output**: DOCSYNC queue messages (one per client document)
### Deprecated Compatibility Services
The following services are retained as deployment compatibility placeholders and currently run health-only behavior:
- `docTextRunner` (8085)
- `querySyncRunner` (8087)
- `queryRunner` (8088)
- `queryVersionSyncRunner` (8090)
## Data Flow Architecture
### Active Document Processing Pipeline
```mermaid
sequenceDiagram
participant Client
participant S3
participant Store as storeEventRunner
participant Init as docInitRunner
participant Sync as docSyncRunner
participant Clean as docCleanRunner
Client->>S3: Upload Document
S3->>Store: S3 Event Notification
Store->>Init: DOCINIT Queue
Init->>Sync: DOCSYNC Queue
Sync->>Clean: DOCCLEAN Queue
```
### Client Synchronization Flow
```mermaid
sequenceDiagram
participant Admin
participant API as queryAPI
participant CS as clientSyncRunner
participant Sync as docSyncRunner
Admin->>API: Trigger client sync
API->>CS: CLIENTSYNC Queue
CS->>Sync: DOCSYNC Queue (per client document)
```
## Communication Patterns
### Inter-Service Messaging
- Services use **AWS SQS** for asynchronous decoupling
- Queue consumers are idempotent and retry-friendly
### Queue Architecture (Active)
| Queue Name | Producer | Consumer | Message Format |
|------------|----------|----------|----------------|
| DOCINIT | storeEventRunner | docInitRunner | `{bucket, key, hash}` |
| DOCSYNC | docInitRunner, clientSyncRunner | docSyncRunner | `{document_id}` |
| DOCCLEAN | docSyncRunner | docCleanRunner | `{document_id}` |
| CLIENTSYNC | queryAPI | clientSyncRunner | `{client_id}` |
### Queue Architecture (Deprecated Compatibility)
| Queue Name | Notes |
|------------|-------|
| DOCTEXT | Kept in some deployments for compatibility; not part of active pipeline |
| QUERYSYNC / QUERY / QUERYVERSIONSYNC | Legacy query pipeline queues; query subsystem removed |