Add sentiment_engine with CryptoSentimentCalibrator fixes - improved keyword lists, lowered FinBERT threshold, added neutral handling
This commit is contained in:
56
sentiment_engine/docker/.dockerignore
Normal file
56
sentiment_engine/docker/.dockerignore
Normal file
@@ -0,0 +1,56 @@
|
||||
# Git
|
||||
.git/
|
||||
.gitignore
|
||||
|
||||
# Python
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*.so
|
||||
.Python
|
||||
build/
|
||||
dist/
|
||||
*.egg-info/
|
||||
|
||||
# Virtual environments
|
||||
venv/
|
||||
env/
|
||||
|
||||
# IDE
|
||||
.vscode/
|
||||
.idea/
|
||||
|
||||
# OS
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Logs
|
||||
*.log
|
||||
logs/
|
||||
|
||||
# Data
|
||||
data/
|
||||
*.parquet
|
||||
*.npz
|
||||
|
||||
# Model cache
|
||||
~/.cache/
|
||||
|
||||
# Test output
|
||||
.pytest_cache/
|
||||
.coverage
|
||||
htmlcov/
|
||||
|
||||
# Config secrets
|
||||
.env
|
||||
config/*.local.yaml
|
||||
|
||||
# Documentation
|
||||
README.md
|
||||
docs/
|
||||
|
||||
# Tests
|
||||
tests/
|
||||
scripts/
|
||||
|
||||
# Prefect flows (copied separately)
|
||||
prefect_flows/
|
||||
61
sentiment_engine/docker/Dockerfile
Normal file
61
sentiment_engine/docker/Dockerfile
Normal file
@@ -0,0 +1,61 @@
|
||||
# Sentiment Engine Dockerfile
|
||||
# Multi-stage build for production
|
||||
|
||||
# =============================================================================
|
||||
# Build stage
|
||||
# =============================================================================
|
||||
FROM python:3.12-slim as builder
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Install build dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
gcc g++ cmake \
|
||||
libpq-dev \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Install Python dependencies
|
||||
COPY pyproject.toml .
|
||||
RUN pip install --no-cache-dir --upgrade pip setuptools wheel && \
|
||||
pip install --no-cache-dir .
|
||||
|
||||
# =============================================================================
|
||||
# Runtime stage
|
||||
# =============================================================================
|
||||
FROM python:3.12-slim
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
# Install runtime dependencies
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
curl \
|
||||
libpq5 \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
|
||||
# Copy Python packages from builder
|
||||
COPY --from=builder /usr/local/lib/python3.12/site-packages /usr/local/lib/python3.12/site-packages
|
||||
COPY --from=builder /usr/local/bin /usr/local/bin
|
||||
|
||||
# Copy application code
|
||||
COPY src/ ./src/
|
||||
COPY config/ ./config/
|
||||
COPY prefect_flows/ ./prefect_flows/
|
||||
COPY scripts/ ./scripts/
|
||||
|
||||
# Create non-root user
|
||||
RUN useradd -m -u 1000 sentiment && chown -R sentiment:sentiment /app
|
||||
USER sentiment
|
||||
|
||||
# Environment
|
||||
ENV PYTHONPATH=/app/src
|
||||
ENV SENTIMENT_CONFIG=/app/config/settings.yaml
|
||||
|
||||
# Health check
|
||||
HEALTHCHECK --interval=30s --timeout=10s --start-period=40s --retries=3 \
|
||||
CMD curl -f http://localhost:8080/health || exit 1
|
||||
|
||||
# Expose ports
|
||||
EXPOSE 8080 9090
|
||||
|
||||
# Entry point
|
||||
ENTRYPOINT ["python", "-m", "sentiment_engine.main"]
|
||||
84
sentiment_engine/docker/docker-compose.yml
Normal file
84
sentiment_engine/docker/docker-compose.yml
Normal file
@@ -0,0 +1,84 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
# NATS JetStream for message bus
|
||||
nats:
|
||||
image: nats:2.10-alpine
|
||||
container_name: sentiment-nats
|
||||
command: [-js, -m, "8222"]
|
||||
ports:
|
||||
- "4222:4222" # Client
|
||||
- "8222:8222" # Monitoring
|
||||
volumes:
|
||||
- nats-data:/data
|
||||
restart: unless-stopped
|
||||
|
||||
# ClickHouse for analytical storage
|
||||
clickhouse:
|
||||
image: clickhouse/clickhouse-server:24.3-alpine
|
||||
container_name: sentiment-clickhouse
|
||||
environment:
|
||||
- CLICKHOUSE_DB=dolphin
|
||||
- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1
|
||||
- CLICKHOUSE_USER=default
|
||||
- CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD}
|
||||
ports:
|
||||
- "8123:8123" # HTTP
|
||||
- "9000:9000" # Native
|
||||
volumes:
|
||||
- clickhouse-data:/var/lib/clickhouse
|
||||
- ./clickhouse-config:/etc/clickhouse-server/config.d
|
||||
ulimits:
|
||||
nofile:
|
||||
soft: 262144
|
||||
hard: 262144
|
||||
restart: unless-stopped
|
||||
|
||||
# Hazelcast for hot cache
|
||||
hazelcast:
|
||||
image: hazelcast/hazelcast:5.3-slim
|
||||
container_name: sentiment-hazelcast
|
||||
environment:
|
||||
- HZ_CLUSTERNAME=dolphin
|
||||
- HZ_NETWORK_PUBLICADDRESS=localhost:5701
|
||||
ports:
|
||||
- "5701:5701"
|
||||
volumes:
|
||||
- hazelcast-data:/data
|
||||
restart: unless-stopped
|
||||
|
||||
# Prefect for workflow orchestration
|
||||
prefect:
|
||||
image: prefecthq/prefect:3-python3.12
|
||||
container_name: sentiment-prefect
|
||||
command: prefect server start --host 0.0.0.0
|
||||
ports:
|
||||
- "4200:4200"
|
||||
environment:
|
||||
- PREFECT_API_URL=http://localhost:4200/api
|
||||
- PREFECT_UI_URL=http://localhost:4200
|
||||
volumes:
|
||||
- prefect-data:/root/.prefect
|
||||
restart: unless-stopped
|
||||
|
||||
# Prefect worker for flow execution
|
||||
prefect-worker:
|
||||
image: prefecthq/prefect:3-python3.12
|
||||
container_name: sentiment-prefect-worker
|
||||
command: prefect worker start --pool sentiment-engine
|
||||
environment:
|
||||
- PREFECT_API_URL=http://prefect:4200/api
|
||||
depends_on:
|
||||
- prefect
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
nats-data:
|
||||
clickhouse-data:
|
||||
hazelcast-data:
|
||||
prefect-data:
|
||||
latticedb-data:
|
||||
|
||||
networks:
|
||||
default:
|
||||
name: sentiment-network
|
||||
Reference in New Issue
Block a user