feat: initialize bangwen recruitment aggregation and search engine

- Rust core engine with HTTP ingestion gateway, hybrid search, and white-box resume matching
- Python edge collectors supporting declarative TOML and specialized adapters
- PostgreSQL schema migrations with pgvector embedding support
- Hardened security controls: strict CSP, terminal sanitization, and input boundary validation
- Multi-service container orchestration with dedicated non-root execution
This commit is contained in:
bitfennec
2026-10-23 23:44:10 +08:00
commit 1059be1b62
61 changed files with 10489 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
services:
postgres:
image: pgvector/pgvector:pg16
container_name: bangwen-postgres
restart: unless-stopped
environment:
POSTGRES_USER: bangwen
POSTGRES_PASSWORD: bangwen_dev
POSTGRES_DB: bangwen
ports:
- "127.0.0.1:5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U bangwen -d bangwen"]
interval: 5s
timeout: 5s
retries: 5
core:
build:
context: .
dockerfile: Dockerfile
container_name: bangwen-core
restart: unless-stopped
depends_on:
postgres:
condition: service_healthy
environment:
DATABASE_URL: postgres://bangwen:bangwen_dev@postgres:5432/bangwen
SERVER_HOST: "0.0.0.0"
SERVER_PORT: "8080"
LOG_LEVEL: info
INGEST_TOKEN: ${INGEST_TOKEN:?INGEST_TOKEN must be set in .env or environment}
OLLAMA_BASE_URL: ${OLLAMA_BASE_URL:-http://host.docker.internal:11434}
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "127.0.0.1:8080:8080"
collector:
build:
context: ./collectors
dockerfile: Dockerfile
container_name: bangwen-collector
restart: unless-stopped
depends_on:
- core
environment:
CORE_INGEST_URL: http://core:8080/api/v1/ingest
INGEST_TOKEN: ${INGEST_TOKEN:?INGEST_TOKEN must be set in .env or environment}
SCHEDULE_INTERVAL_HOURS: 6
volumes:
- ./collectors/config.toml:/app/config.toml:ro
volumes:
pgdata: