Go to file
2026-09-24 07:10:23 +00:00
config v2: Python MVP — price pipeline + analytics + FastAPI dashboard + digest + tests 2026-09-24 07:07:32 +00:00
design-system v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
src docs: README для Python MVP; robust seeding in run.py (only if DB empty) 2026-09-24 07:10:23 +00:00
.env.example v2: Python MVP — price pipeline + analytics + FastAPI dashboard + digest + tests 2026-09-24 07:07:32 +00:00
.gitignore v2: Python MVP — price pipeline + analytics + FastAPI dashboard + digest + tests 2026-09-24 07:07:32 +00:00
.vibe42-design.json v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
agent.js v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
AGENTS.md v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
data.json v2: Python MVP — price pipeline + analytics + FastAPI dashboard + digest + tests 2026-09-24 07:07:32 +00:00
design.md v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
index.html fix: fallback-данные для Предпросмотра (белый экран) 2026-09-24 06:39:10 +00:00
package-lock.json v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
package.json v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00
README.md docs: README для Python MVP; robust seeding in run.py (only if DB empty) 2026-09-24 07:10:23 +00:00
requirements.txt v2: Python MVP — price pipeline + analytics + FastAPI dashboard + digest + tests 2026-09-24 07:07:32 +00:00
screenshot-20260924-113732.png fix: fallback-данные для Предпросмотра (белый экран) 2026-09-24 06:39:10 +00:00
server.js v1 - Price Agent: дашборд агро-данных (валюты+погода), ИИ-аналитик, чат 2026-09-24 05:25:39 +00:00

chto-ty-takoe-na-baze-kakih — AgroMarket Price Agent

MVP ИИ-агента, который ежедневно собирает открытые агро-цены (KZ/TJ/UZ/RU), нормализует и категоризирует их, строит аналитику и отдаёт дашборд + дайджест.

Стек

  • Python 3.12, SQLite (переносимо на PostgreSQL), APScheduler, FastAPI + Plotly
  • ИИ (LLM) — только выписывает число из фрагмента источника, сверка посимвольно
  • Каждая цена — со ссылкой на источник и датой сбора

Запуск

python3 -m pip install -r requirements.txt
export $(grep -v '^#' .env | xargs)   # секреты в .env
python3 -m src.dashboard.run           # дашборд на $PORT (дефолт 8000)
python3 -m src.scheduler --once        # один прогон пайплайна + дайджест
python3 -m src.scheduler --daemon      # демон (ежедневно 07:30)
python3 -m src.demo_data               # синтетические данные (60 дней)
python3 -m pytest src/tests -q         # тесты

Структура

  • src/pipeline/ — fetch, extract, normalize, categorize, validate, llm_extract, raw, orchestrator
  • src/analytics/ — dynamics, spreads/arbitrage, seasonality, anomalies, alerts, forecast
  • src/dashboard/ — FastAPI: overview, products, product, countries, alerts, quality, sources
  • src/ — db.py (SQL), config.py, taxonomy.py, models.py, cache.py, scheduler.py, digest.py, demo_data.py
  • config/ — taxonomy.yaml, synonyms.yaml, sources.yaml

Принципы (железо)

  1. Искренность: LLM не выдумывает цены — только цитирует число из фрагмента, затем строковая сверка. Не прошло — запись отбрасывается (не в карантин).
  2. Корректность: «нет данных» ≠ «цена 0». Подозрительные значения — в карантин, не в аналитику. Ниже порога (floor по категории) → quarantine.
  3. Легальность: tier-3 / новые источники — legal_status: pending_review (выключены по умолчанию). Никакого обходa captcha/роботов; честный User-Agent, robots.txt, rate-limit, кеш.
  4. Идентичность: повторный запуск не дублирует записи (ключ по source+region+product+price_type+as_of+фрагмент+snapshot).

Ограничения MVP

  • КЗ-официальные источники (stat.gov.kz/uz/tj) недоступны из run-контейнера (DNS) — только заглушки-адаптеры; нужен прогон из сети с доступом.
  • Arbuz.kz / Sharyn — нет публичного API → pending_review + ручной CSV-дамп.
  • Прогнозы — базовые (seasonal naive, SARIMA) с честным доверительным интервалом и меткой «низкая уверенность».
  • Модель арбитража (груз/тариф/комиссия) — предположения, помечены в UI как «assumptions».