Stranded-worktree preservation commit (this branch is local-only + 28 behind main; ACS watches the main tree, not this worktree, so committing manually so the work isn't lost). Integration to main is a follow-up. - @features/content-social/ai-core: drop derive engine + K3 gate (21 tests) - @features/content-ingestor: classify-newest-first + configurable 1wk-offset hot/stocked planner (17 tests) - platform-api: content-assets / content-drops / content-drop-legs CRUD modules + entities + enums; content-drops asset_ids enrichment + cluster endpoints; content-assets filtered list + idempotent upsert - platform-api fixes (also latent-broken on main): ioredis named import, entities spread, agent-actions @ApiProperty, content-post confidence transformer - migrations: 0009_content_drops (renumbered from 0007 — main holds 0007/0008), 0010_content_asset_classification (is_explicit/content_class/quality_score, is_explicit DEFAULT TRUE fail-safe) - design: content-drop-composer.screen + content-drop.flow Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
44 lines
1.7 KiB
Text
44 lines
1.7 KiB
Text
# content-ingestor environment — copy to .env for local runs.
|
|
# Single source of truth for ports: ../../../infrastructure/.env.ports.
|
|
|
|
# Health HTTP
|
|
CONTENT_INGESTOR_HEALTH_PORT=3825
|
|
|
|
# Poll cadence (how often the worker scans mac-sync for new photos)
|
|
INGEST_POLL_INTERVAL_MS=300000
|
|
INGEST_BATCH_SIZE=50
|
|
|
|
# --- Source: mac-sync photo mirror (macsync.photos on black) ---
|
|
# Direct read of the macsync schema. Switch to mac-sync's HTTP API if its photo
|
|
# routes are exposed; the PhotoSource interface keeps that swappable.
|
|
MACSYNC_PG_URL=postgres://readonly@black.lan:25436/macsync
|
|
# Base URL to fetch a photo's binary bytes (for classification). Resolves a
|
|
# storage_key to a fetchable object URL (MinIO presigned / mac-sync server route).
|
|
MACSYNC_OBJECT_BASE_URL=http://black.lan:3201/objects
|
|
|
|
# --- Classifier: @model-boss vision (apricot GPU) ---
|
|
MODEL_BOSS_BASE_URL=http://apricot.lan:4505
|
|
MODEL_BOSS_VISION_MODEL=qwen3-vl-8b-instruct
|
|
MODEL_BOSS_TIMEOUT_MS=60000
|
|
|
|
# --- Sink: platform.api (data plane on black:3060) ---
|
|
PLATFORM_API_BASE_URL=http://black.lan:3060/api/v1
|
|
SPECIALIST_TOKEN=changeme
|
|
SPECIALIST_ID=content-ingestor
|
|
|
|
# Single-tenant at P0: the Person who owns the synced library. Device→user
|
|
# mapping is the multi-tenant seam (one INGEST_USER_ID until then).
|
|
INGEST_USER_ID=00000000-0000-0000-0000-000000000000
|
|
|
|
# --- Planner: configurable posting cadence ("configurable sendings") ---
|
|
# The deliberate offset that creates the hot/stocked planning window.
|
|
PLAN_OFFSET_DAYS=7
|
|
PLAN_HORIZON_DAYS=7
|
|
PLAN_SLOTS_PER_DAY=3
|
|
# An asset counts as "hot" if taken within this window AND quality >= threshold.
|
|
PLAN_HOT_WINDOW_DAYS=14
|
|
PLAN_HOT_QUALITY_MIN=0.6
|
|
|
|
# Logging
|
|
LOG_LEVEL=info
|
|
NODE_ENV=development
|