feat: initial Skeen-CRM AI Agent architecture

- FastAPI + Python 3.12 backend
- Meta WhatsApp Business API client (official)
- OpenAI GPT-4o with function calling
- RAG vector store with pgvector
- ERPNext Frappe REST client
- Celery + Redis async task queue
- PostgreSQL with migrations (Alembic)
- Docker Compose full stack
- Enterprise logging, metrics, health checks
This commit is contained in:
root
2026-04-29 05:30:59 +00:00
commit d30b22b50c
44 changed files with 3603 additions and 0 deletions

57
Dockerfile Normal file
View File

@@ -0,0 +1,57 @@
# =============================================================================
# SKEEN CRM Agent - Production Dockerfile
# =============================================================================
FROM python:3.12-slim AS builder
# Install build dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
build-essential \
libpq-dev \
&& rm -rf /var/lib/apt/lists/*
# Install uv (modern Python package manager)
RUN pip install --no-cache-dir uv
# Set workdir
WORKDIR /app
# Copy dependency definitions
COPY pyproject.toml ./
# Create virtual environment and install dependencies
RUN uv venv .venv && \
uv pip install --no-cache -r pyproject.toml
# =============================================================================
# Production stage
# =============================================================================
FROM python:3.12-slim AS production
# Install runtime dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
libpq5 \
curl \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN groupadd -r skeen && useradd -r -g skeen skeen
WORKDIR /app
# Copy virtual environment from builder
COPY --from=builder /app/.venv /app/.venv
ENV PATH="/app/.venv/bin:$PATH"
# Copy application code
COPY --chown=skeen:skeen src/ ./src/
COPY --chown=skeen:skeen alembic/ ./alembic/
COPY --chown=skeen:skeen alembic.ini ./
# Switch to non-root user
USER skeen
# Healthcheck
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
EXPOSE 8000