Initial Services
This commit is contained in:
+33
-9
@@ -19,18 +19,42 @@
|
|||||||
- [x] Both sync directions tested and working
|
- [x] Both sync directions tested and working
|
||||||
- [x] Old JingTian-Rclone repo archived on Gitea
|
- [x] Old JingTian-Rclone repo archived on Gitea
|
||||||
|
|
||||||
## Phase 1: Foundation
|
## Phase 1: Services (Services-First Approach)
|
||||||
|
|
||||||
- [ ] Init Go module
|
Rationale: De-risk unknowns (Docling OCR quality, Ollama CPU inference speed) before building orchestrator.
|
||||||
- [ ] SQLite schema + migrations (documents, extractions, processing_log)
|
|
||||||
|
### 1a. Docker Compose + Docling
|
||||||
|
|
||||||
|
- [ ] Docker Compose base (Docling service)
|
||||||
|
- [ ] Test Docling API with sample PDFs (curl)
|
||||||
|
- [ ] Validate OCR quality on real PDFs + generated samples
|
||||||
|
|
||||||
|
### 1b. Ollama
|
||||||
|
|
||||||
|
- [ ] Add Ollama to Docker Compose (Qwen3-1.7B, CPU mode)
|
||||||
|
- [ ] Test structured extraction prompt (curl)
|
||||||
|
- [ ] Measure inference time per document
|
||||||
|
- [ ] Validate extraction accuracy (deadline, doc type, etc.)
|
||||||
|
|
||||||
|
### 1c. Python Tools Service
|
||||||
|
|
||||||
|
- [ ] FastAPI + openpyxl service
|
||||||
|
- [ ] Endpoints: read tracker, write/update rows, get column schema
|
||||||
|
- [ ] Test with sample Tracker.xlsx
|
||||||
|
|
||||||
|
### 1d. Manual Integration Test
|
||||||
|
|
||||||
|
- [ ] Chain test: PDF → Docling → Ollama → Tools → Excel updated
|
||||||
|
- [ ] Document any issues / adjustments needed
|
||||||
|
|
||||||
|
## Phase 2: Go Orchestrator
|
||||||
|
|
||||||
|
- [ ] Init Go module in Tracker/
|
||||||
- [ ] Config loading (YAML)
|
- [ ] Config loading (YAML)
|
||||||
- [ ] Docker Compose (Docling, Ollama, Python Tools, Go server)
|
- [ ] SQLite schema + migrations (documents, extractions, processing_log)
|
||||||
|
|
||||||
## Phase 2: Pipeline Core
|
|
||||||
|
|
||||||
- [ ] Docling HTTP client
|
- [ ] Docling HTTP client
|
||||||
- [ ] Ollama HTTP client + structured extraction prompt
|
- [ ] Ollama HTTP client
|
||||||
- [ ] Tools service (FastAPI + openpyxl Excel endpoints)
|
- [ ] Tools service HTTP client
|
||||||
- [ ] File watcher (inotify on Ubuntu, 2-min stability check via SHA256 hash)
|
- [ ] File watcher (inotify on Ubuntu, 2-min stability check via SHA256 hash)
|
||||||
- [ ] State tracker integration (new/changed/skip logic)
|
- [ ] State tracker integration (new/changed/skip logic)
|
||||||
- [ ] Pipeline orchestrator (read latest Tracker before writing, merge not overwrite)
|
- [ ] Pipeline orchestrator (read latest Tracker before writing, merge not overwrite)
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
services:
|
||||||
|
# Docling
|
||||||
|
docling:
|
||||||
|
# https://github.com/docling-project/docling-serve
|
||||||
|
# 5001: Web UI + API
|
||||||
|
|
||||||
|
image: ghcr.io/docling-project/docling-serve-cpu:v1.13.0
|
||||||
|
container_name: jt-docling
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
DOCLING_SERVE_ENABLE_UI: "true"
|
||||||
|
ports:
|
||||||
|
- "5001:5001"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-sf", "http://localhost:5001/health"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 3
|
||||||
|
start_period: 60s
|
||||||
|
|
||||||
|
# Ollama
|
||||||
|
ollama:
|
||||||
|
# https://hub.docker.com/r/ollama/ollama
|
||||||
|
# 11434: API port
|
||||||
|
# Model: qwen3:1.7b
|
||||||
|
|
||||||
|
image: ollama/ollama:0.9.3
|
||||||
|
container_name: jt-ollama
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ollama_data:/root/.ollama
|
||||||
|
ports:
|
||||||
|
- "11434:11434"
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-sf", "http://localhost:11434/api/tags"]
|
||||||
|
interval: 30s
|
||||||
|
timeout: 10s
|
||||||
|
retries: 5
|
||||||
|
start_period: 30s
|
||||||
|
|
||||||
|
# Tools (Python FastAPI - Excel operations)
|
||||||
|
# tools:
|
||||||
|
# build: ./Tools/Service
|
||||||
|
# container_name: jt-tools
|
||||||
|
# restart: unless-stopped
|
||||||
|
# volumes:
|
||||||
|
# - /data/jingtian/BenjaminTeam:/data:rw
|
||||||
|
# ports:
|
||||||
|
# - "8080:8080"
|
||||||
|
# healthcheck:
|
||||||
|
# test: ["CMD", "curl", "-sf", "http://localhost:8080/health"]
|
||||||
|
# interval: 30s
|
||||||
|
# timeout: 10s
|
||||||
|
# retries: 3
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
ollama_data:
|
||||||
|
name: jt-ollama-data
|
||||||
|
|||||||
Reference in New Issue
Block a user