О проекте
Команда: Digital_yakuza
Кейс HackAlem.ai: Телеком — Beeline
Стадия: Доведённый продукт
Задача кейса: Агент, который решает, каким абонентам какой тариф предложить (чистый прирост ARPU)
Суть
Агент для кейса Beeline: по истории переходов строит гипотезы, проверяет их пилотами с байесовским обновлением, составляет план 1–10 кампаний (аудитория, тариф, канал) в пределах бюджета, а LLM объясняет план аналитику.
Как устроено
История переходов и профиль аудитории → априорная таблица эффектов по связкам «тариф × ARPU-сегмент → цель» с погрешностью (q, q_se, n_obs, иерархия, осторожная оценка для тарифов без истории) → последовательные пилоты с байесовским обновлением → ранжирование кампаний по консервативной оценке с учётом пересечений и ресурсов, экономический выбор канала (push → SMS/реклама/звонок, если доплата окупается) → Agent.act(env), submission.csv и trace. Настройка на генераторе миров (180 тренировочных, 135 контрольных). gpt-5.6-luna объясняет сохранённый план по фактам со ссылками, числа подставляет код.
Ключевые решения
- байесовское обновление
- консервативная оценка по нижней границе
- иерархическая оценка prior
- симулятор миров
- A/B на мирах
- экономический выбор канала
- structured output с проверкой ссылок
Метрики
Mock-среда, seed 42: net ARPU +5 165 453 у.е., 5 кампаний / 20 пилотов, затраты 95 094 из 100 000; на 135 контрольных мирах медиана 2,77 млн у.е., 1,5% миров в минусе, 0 нарушений ТЗ (у шаблона организаторов медиана −0,13 млн)
Особенности
Дисциплина эксперимента: отдельные тренировочные (180) и контрольные (135) миры, изменения принимаются по тренировочным и один раз проверяются на контрольных, отклонённые варианты задокументированы. LLM не меняет план, а числа в объяснении подставляются по ссылкам.
Стек
Python · NumPy · pandas · FastAPI · SQLAlchemy · PostgreSQL · Alembic · React 19 · TypeScript · Vite · Heroku · Vercel
Модели
gpt-5.6-luna (OpenAI API)
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-902325c9-digital-yakuza.
README
README.mdDigital Yakuza — агент тарифных кампаний Beeline
Открыть демо →
API / Swagger · Результаты · Запуск · Проверка ТЗ
Помогаем маркетинговому аналитику выбрать, кому, какой тариф и через какой канал предложить. Агент проверяет гипотезы пилотами, оценивает эффект и неопределённость, формирует план кампаний и объясняет основания решений.
Проект команды Digital Yakuza для кейса Beeline на HackAlem AI. На выходе — план в CSV, результаты пилотов и отчёт для аналитика.
Файлы сдачи кейса: beeline_agent/agent.py (класс Agent, метод act(env)) и beeline_agent/submission.csv (из make_submission.py, seed 42).
Бизнес-задача и ценность решения
Выгодный по истории переход на другой тариф может оказаться убыточным на текущей аудитории: часть клиентов начнёт платить меньше, а коммуникация дополнительно потратит бюджет. История описывает другую выборку абонентов, поэтому её выводы нужно проверять. Пилот помогает получить новые данные, но сам расходует ресурсы и даёт шумный результат.
| Задача аналитика | Что делает система | Практическая ценность |
|---|---|---|
| Выбрать гипотезы для проверки | Строит кандидатов по истории и профилю аудитории | Переводит данные в конкретные варианты кампаний |
| Решить, каким результатам доверять | Обновляет оценку после пилота с учётом его размера и шума | Показывает неопределённость и основания выбора |
| Уложиться в ограничения | Учитывает бюджет, контакты, число и размер кампаний | Возвращает план в формате и лимитах кейса |
| Обосновать решение | Сохраняет журнал, связывает кампании с пилотами, формирует объяснение | Позволяет проверить рекомендацию перед запуском |
Цель кейса — чистый прирост ARPU после затрат на коммуникацию:
net_arpu_gain = прирост ARPU по уникальным абонентам − стоимость контактов
Пилоты входят и в эффект, и в затраты. Повторные контакты расходуют бюджет, но эффект абонента засчитывается по лучшей для него кампании. Полное расходование бюджета само по себе не является целью.
Все данные синтетические. Результаты — условные единицы симулятора, не измеренная выручка Beeline. Экономия времени аналитика отдельно не измерялась.
Пользовательский сценарий
- Запустить расчёт. Аналитик открывает дашборд и запускает агента на предоставленной аудитории.
- Проверить разведку. Агент проводит пилоты; аналитик видит их результаты и затраты.
- Изучить план. Для финальных кампаний доступны аудитории, целевые тарифы, каналы и показатели результата.
- Проверить основания. Отчёт связывает кампании с пилотами и содержит объяснение и предупреждения.
- Скачать CSV. Аналитик получает воспроизводимый план для дальнейшего решения о запуске.
AI рекомендует — решает человек. Интеграции с реальной рассылкой абонентам нет. ИИ-объяснение показывается в дашборде в блоке «Почему такой план» с пометкой источника: «ИИ (luna)» или шаблон.
Что реализовано и как работает агент
История переходов + профиль аудитории
↓
Гипотезы и начальные оценки
↓
Выбор пилота → наблюдение результата
↑ ↓
└── обновление оценки и погрешности
↓
План с учётом риска и лимитов
↓
CSV + факты + журнал решений
↓
ИИ-объяснение → аналитик
- Исторические оценки. Начальный эффект и ошибка по связкам «текущий тариф × ARPU-сегмент → цель», с поправкой на неопределённость переноса.
- Последовательная разведка. Пилоты выбираются по предыдущим результатам. Байесовское обновление учитывает их размер и шум. Размер пока зависит от численности аудитории — 100 или 200; выбор размера по ожидаемой пользе не реализован.
- Планирование. Кампании ранжируются по консервативной оценке с учётом пересечений и ресурсов. Канал выбирается экономически: кампания начинает с бесплатного push и переходит на SMS, интернет-рекламу или звонок, только если доплата окупается по нижней границе оценки и помещается в остаток бюджета. Если ни одна кампания не прошла порог, используется небольшая запасная push-кампания с причиной в журнале. Прибыль не гарантируется.
- Проверяемый результат.
Agent.act(env)возвращает 1–10 кампаний; пилоты, обновления оценок и решения записываются вtrace. - Приложение. Фоновый запуск, сохранение в PostgreSQL, показ кампаний и пилотов, скачивание CSV.
Пример из seed 42: кампания C1 для MID → tariff_8 связана с пилотами P5 и P6. Наблюдаемые эффекты SMS-пилотов — около 11,07% и 13,61%; финальная кампания содержит 4 108 контактов. Связь и значения можно проверить в report.json, а не принимать объяснение на веру.
Результаты и качество
Официальная mock-среда, seed 42:
| Показатель | Результат |
|---|---|
| Чистый прирост ARPU после коммуникаций | +5 165 453 у.е. |
| Финальные кампании / пилоты | 5 / 20 |
| Затраты, включая пилоты | 95 094 из 100 000 у.е. |
| Каналы финальных кампаний | SMS × 3, интернет-реклама × 2 |
| Контакты, включая пилоты | 13 320 из 15 000 |
Проверка переноса на другие эффекты: 135 контрольных миров, 9 сценариев × 15 seed (10 000–10 014). Все стратегии запускались на одинаковых мирах и seed. Контрольный набор использовался только для итоговых проверок, без настройки на нём: сначала для версии a631a16, затем для сдаваемой версии, чей выбор каналов уже был принят по 180 тренировочным мирам.
| Стратегия | Медиана net, млн у.е. | 10-й перцентиль | Худший | Миров в минусе | Миров с нарушениями ТЗ |
|---|---|---|---|---|---|
| Шаблон организаторов | −0,13 | −0,96 | −1,38 | 76,3% | 6 / 135 |
| Только история, без пилотов | 2,98 | 0,57 | −1,67 | 3,7% | 135 / 135 |
Наш агент без выбора каналов (a631a16) | 2,60 | 0,33 | −0,92 | 2,2% | 0 / 135 |
| Наш агент, сдаваемая версия | 2,77 | 0,35 | −0,90 | 1,5% | 0 / 135 |
Как интерпретировать: агент улучшил результат относительно шаблона и выполнил проверяемые условия ТЗ во всех 135 мирах. У стратегии «только история» медиана выше, но нет обязательных пилотов и хуже минимальный результат. Сдаваемая версия превосходит её в 30% миров; в сценарии плохого переноса истории random медиана агента — 1,58 млн против 0,44 млн. Это показывает пользу проверки истории и одновременно цену осторожности.
Сдаваемая версия отличается от a631a16 только экономическим выбором каналов (dfcccc4). Он принят по 180 тренировочным мирам (медиана парной разницы +68 тыс. у.е., лучше в 71% миров) и затем один раз проверен на тех же 135 контрольных мирах: медиана парной разницы +127 тыс. у.е., лучше в 81% миров, хуже в 12%, медиана выше во всех 9 сценариях. Повторный пилот «только при неясном решении» (−16 тыс., лучше в 39%) и разведка тарифов без истории (−595 тыс., лучше в 18%) реализованы за переключателями и отклонены. Скрытая среда судейства неизвестна; отдельные контрольные миры остаются убыточными.
Методика и отклонённые варианты, включая совместную модель ячеек: EXPERIMENTS.md.
Роль ИИ, надёжность и стоимость
Модель gpt-5.6-luna через OpenAI API объясняет уже готовый план: связывает кампании с доказательствами, формулирует предупреждения и следующие действия аналитика. Статистический код выбирает пилоты и кампании; модель не меняет их и не редактирует CSV.
| Механизм | Зачем он нужен |
|---|---|
| Компактные факты вместо всего клиентского датасета | Ограничивает объём запроса и делает основания ответа проверяемыми |
| Структурированный ответ со ссылками | Каждая кампания объясняется один раз; проверяются существование фактов и связь с её пилотами и тарифами |
Числа подставляет код: {C1.contacts} | Ответ с числовыми значениями вне разрешённых ссылок отклоняется |
| План сохраняется до вызова модели | Таймаут или ошибка объяснения не теряют результат расчёта |
| Шаблон с указанной причиной | Workflow работает без ключа, при сбое API или отклонённом ответе |
Тестовый вызов команды: 2 909 входных / 1 188 выходных токенов, 12,2 с, около $0,00201 по использованным ценам. Токены, задержка и оплаченные попытки записываются в отчёт. Бюджет проверяется до запроса, но предварительная оценка токенов приблизительная: строгий финансовый потолок не гарантируется. USD API и у.е. кампаний — разные бюджеты.
Проверка ссылок и чисел не доказывает правильность каждой смысловой формулировки. Содержательную полезность объяснений для аналитика ещё предстоит измерить. Подробности workflow.
Архитектура и технологии
React / TypeScript → FastAPI → отдельный worker → Agent.act(env)
↑ ↓
└────── PostgreSQL: план, пилоты, журнал
↓
explain_result: факты → LLM / шаблон
↓
объяснение того же сохранённого run_id
explain_result объясняет сохранённый запуск без повторных пилотов. Агент использует публичный интерфейс среды; истинные эффекты доступны оценщику. Mock-метрики отчёта рассчитываются после запуска.
| Компонент | Технологии | Код |
|---|---|---|
| Агент и расчёты | Python, NumPy 2.2.4, pandas 2.2.3 | agent.py |
| ИИ и отчёты | OpenAI API, SDK openai==2.54.0 | workflow.py |
| Оценки и симулятор | Python, статистическая обработка данных | prior/, sim/, eval/ |
| API и хранение | FastAPI, SQLAlchemy, PostgreSQL, Alembic | backend/ |
| Дашборд | React 19, TypeScript, Vite | frontend/ |
| Запуск и тесты | Docker Compose, pytest | Инструкция, тесты |
Данные и интеграции
Данные организаторов включены в beeline_agent; для базового запуска внешняя выгрузка не нужна.
| Источник | Использование |
|---|---|
customer_profile.csv | 23 441 абонент: текущие тарифы, сегменты и прогнозный ARPU |
data/change_tariff.csv | Начальные оценки эффектов переходов |
data/traffic.csv, data/arpu_monthly.csv | Исследование потребления, качества данных и переносимости истории |
data/dict_tariff.csv, словари тарифов и признаков | Параметры 21 тарифа и описание полей |
| OpenAI API | Объяснение готового результата при включённой модели |
| PostgreSQL | Хранение запусков приложения |
Очистка оставляет 12 699 из 14 823 строк: удалены дубли и слишком малая база ARPU, рост ограничен по правилу среды. Подготовлены 451 связка с историей и 809 без неё в формате (q, q_se, n_obs): эффект, его ошибка и число наблюдений. Разведка связок без истории испытана и отклонена: при 20 пилотах она ухудшила результат (см. «Результаты и качество»). Методика.
Установка и запуск
Агент и отчёт без внешних сервисов
Нужен Python 3.12. Начните из корня репозитория:
python -m venv .venv
Активируйте созданное окружение: PowerShell — .\.venv\Scripts\Activate.ps1, Linux/macOS — source .venv/bin/activate.
cd beeline_agent
python -m pip install -r requirements-workflow.txt
python workflow.py --no-llm
Для сдаваемой версии ожидается 5 кампаний, net 5 165 453, объяснение template. В outputs/ появятся:
| Файл | Содержимое |
|---|---|
submission.csv | Финальный план кампаний |
report.json | План, метрики mock, пилоты, журнал, факты, связи, объяснение и расход модели |
explanation.md | Читаемое объяснение с указанием источника |
Включить модель и настроить расходы
Создайте beeline_agent/.env по .env.example, если файла ещё нет. Заполните личный ключ локально:
OPENAI_API_KEY=YOUR_API_KEY
AGENT_LLM=1
OPENAI_MODEL_FAST=gpt-5.6-luna
AGENT_LLM_RUN_BUDGET_USD=0.05
YOUR_API_KEY — обозначение места для ключа. .env и выходные отчёты исключены из Git; переменные окружения имеют приоритет над файлом.
python workflow.py
При успехе выводится объяснение: llm, иначе — template с причиной. CSV не зависит от ответа модели.
По умолчанию: таймаут попытки 30 с, ответ до 2 000 токенов, до 2 попыток на ключ. AGENT_LLM=0 или --no-llm отключает модель. Полные настройки и переопределение цен — в WORKFLOW.md.
Поднять API, PostgreSQL и дашборд локально
Нужны Docker с Linux containers и Node.js 22.12+. Команды PowerShell, каждый блок — из корня репозитория в отдельном терминале:
cd backend
if (-not (Test-Path .env)) { Copy-Item .env.example .env }
docker compose up --build -d
docker compose exec backend alembic upgrade head
API: http://localhost:8000; /health должен вернуть {"status":"ok","database":"ok"}. Для объяснений нужна миграция 0003_agent_run_explanation.
cd frontend
if (-not (Test-Path .env)) { Copy-Item .env.example .env }
npm install
npm run dev
Дашборд: http://localhost:5173; VITE_API_URL=http://localhost:8000. Настройте CORS по инструкции. Ключ и AGENT_LLM=1 задаются только на бэкенде.
Как проверить решение
Для демонстрации: откройте сайт по ссылке в начале, запустите агента с seed 42, изучите кампании и пилоты, скачайте CSV. Ожидается «seed 42 · агент 59547e1d», 5 кампаний, чистый эффект 5 165 452,81 у.е. и блок «Почему такой план» с пометкой «ИИ (luna)»; CSV совпадает с beeline_agent/submission.csv. Версию агента на хостинге можно сверить: GET /api/case/summary возвращает agent_sha256, у сдаваемой версии — 59547e1d…. Воспроизводимая локальная проверка выполняется из beeline_agent:
python local_eval.py
python make_submission.py
python -m eval.checks
Ожидаются PASS, 5 финальных кампаний и проверки без FAIL для зафиксированной версии. Официальный оценщик выводит 25 кампаний суммарно: 20 пилотов + 5 финальных. T4 в тренажёре — диагностика генератора, не прибыль агента.
python -m pip install pytest
python -m pytest -q tests
python local_eval.py --runs 10
Проходят 47 тестов (агент, workflow, выбор каналов) и 11 из 11 проверок тренажёра. local_eval.py --runs 10: 10 из 10 положительных, медиана +4,82 млн, минимум +3,01 млн у.е. Тесты API используют подмену и не требуют платных запросов.
Соответствие обязательным условиям ТЗ
| Условие | Где проверить |
|---|---|
Agent.act(env) запускается | agent.py, local_eval.py |
| 1–10 корректных финальных кампаний | Валидация плана и запасной путь; seed 42: 5 кампаний |
| Пилоты влияют на решения | run_pilot, обновление оценок и журнал trace |
| Соблюдены лимиты ресурсов | eval/checks.py: 100 000 у.е., 15 000 контактов, до 5 000 на кампанию, до 20 пилотов по 10–200 |
Воспроизводимый submission.csv | make_submission.py и сравнение ниже |
Таймаут воркера — 600 секунд. Полное ТЗ. Результаты проверок относятся к испытанным сценариям.
Соответствие критериям HackAlem
| Критерий | Баллы | Где в проекте |
|---|---|---|
| Соответствие кейсу | 20 | Agent.act(env), пилоты через env.run_pilot, submission.csv в формате make_submission.py, таблица условий ТЗ выше |
| Реализация без имитации | 25 | Решения принимает статистический код по реальным пилотам; ИИ вызывается через OpenAI API с учётом токенов, шаблон помечается source: template |
| README | 20 | Этот документ: задача, сценарий, архитектура, запуск, проверка, данные, ограничения, материалы |
| Воспроизводимость | 20 | Фиксированный seed, закреплённые версии зависимостей, данные в репозитории; CSV одинаков с ИИ и без него |
| Надёжность | 15 | 47 тестов, 11 проверок тренажёра, запасной план при сбоях, план сохраняется до объяснения, таймауты агента и модели |
Проверить совпадение CSV и воспроизвести контрольный набор
После make_submission.py:
python workflow.py --no-llm
python -c "from pathlib import Path; assert Path('submission.csv').read_bytes() == Path('outputs/submission.csv').read_bytes(); print('CSV совпадает')"
Ожидается CSV совпадает. С включённой моделью сравнение должно дать тот же результат. В отчёте доступны trace, campaign_pilot_links, explanation.source и llm_usage.
Таблица 135 миров, команда из beeline_agent (agent — сдаваемая версия, agent_pre2 — a631a16):
python -c "from pathlib import Path; from eval.run import run, summarize; s='mock,random,noise,flip,shift,stingy,unknown_rich,high_rich,resample'.split(','); df=run(15,s,'control',['template','history_only','agent','agent_pre2']); Path('eval/results').mkdir(exist_ok=True); df.to_csv('eval/results/readme_control135.csv',index=False); print(summarize(df).to_string()); print(df.groupby('strategy')['net'].agg(['count','median','min']))"
Ожидаются 540 строк: 135 миров × 4 стратегии, файл eval/results/readme_control135.csv. Прогон длительный. Сырые результаты не входят в Git. Сейчас генератор содержит 12 сценариев: --scenario all --worlds 15 создаст другой набор из 180 миров на стратегию. Повторение старого набора не является новой независимой проверкой.
Ограничения и следующий этап
| Ограничение текущей версии | Следующий шаг |
|---|---|
| Пилот проверяет смесь тарифов, оценка переносится на остаток после удаления пересечений; среднее по людям отличается от ценности по ARPU | Согласовать модель наблюдения и фактическую аудиторию кампании |
| Тарифы без истории не разведываются: 20 пилотов не хватает, в сравнении это ухудшило результат | Больше пилотов или отбор новых тарифов по сходству с известными |
| Пилоты и финальный план могут принести убыток при других эффектах | Проверить новую финальную стратегию на заранее зафиксированном свежем контрольном наборе |
| ИИ объясняет готовый план, его вклад в качество решений аналитика не измерен | Оценить полезность объяснений и ложные предупреждения на примерах |
| В тексте ИИ-объяснения встречаются англоязычные термины (lift, observed, LCB) и неудачные формулировки ограничений охвата | Упростить язык инструкции модели и проверить формулировки на примерах аналитиков |
Для реального внедрения потребуются контролируемые эксперименты на реальных данных: исторические зависимости и синтетические миры не доказывают причинный бизнес-эффект кампаний.
Команда и использованные материалы
| Участник | Вклад |
|---|---|
| Димаш | Агент, workflow, тренажёр, проверки и документация |
| Тимур | Исследование и очистка данных, оценки, генератор миров |
| Айдос | Бэкенд, БД, фронтенд и интеграция приложения |
Использованы синтетический пакет, среда (environment.py, mock_environment.py, scoring_core.py), локальный оценщик и шаблон агента организаторов; остальной код — командный, написан на хакатоне. Claude (Anthropic) и OpenAI Codex применялись при разработке и ревью вместе с локальными инструкциями и навыками; модель gpt-5.6-luna через OpenAI API используется только во время выполнения workflow для объяснения. Библиотеки перечислены в файлах зависимостей.
Авторы коммитов
История коммитов
- 2026-09-23 17:42README: объяснение показано в дашборде, проверка сайта на seed 42 с ожидаемыми значениямиBekeshev Dimash
- 2026-09-23 17:35README: explanation is shown on the dashboard; site check on seed 42 with expected values; LLM wording as a known limitationBekeshev Dimash
- 2026-09-23 17:33Revise EXPERIMENTS.md with latest evaluation dataAidos Amangeldi
- 2026-09-23 17:25Update README.mdAidos Amangeldi
- 2026-09-23 17:24Update frontend for productionАйдос Амангельды
- 2026-09-23 17:23Update frontend for productionАйдос Амангельды
- 2026-09-23 17:12Finalize backend for productionАйдос Амангельды
- 2026-09-23 16:57README: submitted version (channel choice) — seed 42 net 5,165,453; 135 control worlds median 2.77M, 1.5% negative, 0 TZ violations; submission files, HackAlem criteria tableBekeshev Dimash
Все коммиты (72)
- 2026-09-23 16:55analytics: удалена ранняя версия пайплайна данныхMindcore
- 2026-09-23 16:55prior: чистка — без устаревшего формата, каналы из правил среды, ab_worlds в формате агентаMindcore
- 2026-09-23 16:55sim: чистка — цены каналов и лимиты из правил среды, прогоны по умолчанию не в gitMindcore
- 2026-09-23 16:45sim: оптимизатор — кандидаты «каждый тариф к своей лучшей цели»; план отыгрывает 92% потолкаMindcore
- 2026-09-23 16:39contract: backend imports beeline_agent directly (a731154), no repackagingBekeshev Dimash
- 2026-09-23 16:38Merge remote-tracking branch 'origin/Agent'Айдос Амангельды
- 2026-09-23 16:36contract: note on CRLF and agent sha for packagingBekeshev Dimash
- 2026-09-23 16:35agent: economic channel choice by lower bound (+68k paired, 71% of worlds); repeat-pilot and unseen-tariff switches offBekeshev Dimash
- 2026-09-23 16:25switch backend to direct agent importАйдос Амангельды
- 2026-09-23 16:24sim: каналы по точке окупаемости поверх плана агента — замер на тренировочных и свежих seedMindcore
- 2026-09-23 16:15prior: проверка режима по пилотам (regime.py) + графики для READMEMindcore
- 2026-09-23 16:15sim: оптимальный план при известных эффектах (optimizer.py), headroom --milp, README и графикиMindcore
- 2026-09-23 16:10Merge remote-tracking branch 'origin/analysis_dataset'Айдос Амангельды
- 2026-09-23 16:10Merge remote-tracking branch 'origin/Agent'Айдос Амангельды
- 2026-09-23 16:08Update backend integration and frontendАйдос Амангельды
- 2026-09-23 16:06docs: контракт backend ↔ актуальный агент (журнал, поля, объяснение, API, приёмка seed 42)Bekeshev Dimash
- 2026-09-23 16:02eval: итог на контрольных мирах в журнале экспериментовBekeshev Dimash
- 2026-09-23 16:01backend: объяснение сохранённого запуска отдельно от плана; актуальный пакет агентаBekeshev Dimash
- 2026-09-23 15:56Merge remote-tracking branch 'origin/main' into AgentBekeshev Dimash
- 2026-09-23 15:51workflow: 5 исправлений ИИ-обвязки по ревью + 17 тестов с подменой APIBekeshev Dimash
- 2026-09-23 15:50sim: headroom.py — где лежат недополученные деньги; REQUIRE_PILOT в hypotheses.pyMindcore
- 2026-09-23 15:42workflow: агент → план и CSV → факты → ИИ-объяснение → отчёт; агент зафиксирован (a631a16)Bekeshev Dimash
- 2026-09-23 15:42sim: hypotheses.py — учёт нарушений ТЗ, параллельный прогон (--jobs), --outMindcore
- 2026-09-23 15:36prior: q режима raw — ровно формула среды; независимая перепроверка; понятные именаMindcore
- 2026-09-23 15:36sim: понятные имена в worlds.py — миры не изменилисьMindcore
- 2026-09-23 15:27Remove obsolete root deployment and documentation directoriesАйдос Амангельды
- 2026-09-23 15:27Merge remote-tracking branch 'origin/Agent'Айдос Амангельды
- 2026-09-23 15:27Merge remote-tracking branch 'origin/analysis_dataset'Айдос Амангельды
- 2026-09-23 15:26Ignore local Vercel configurationАйдос Амангельды
- 2026-09-23 15:23Merge remote-tracking branch 'origin/Agent' into analysis_datasetMindcore
- 2026-09-23 15:23agent: резерв ресурсов, корректный запасной план, q_se Тимура; T4 на 40 мирахBekeshev Dimash
- 2026-09-23 15:18Обновление скрипта для проверки гипотез: изменение параметров запуска, улучшение обработки результатов и добавление новых функций для анализа.Mindcore
- 2026-09-23 15:17Merge remote-tracking branch 'origin/analysis_dataset' into AgentBekeshev Dimash
- 2026-09-23 15:16agent: план никогда не пустой + проверка обязательных условий ТЗ во всех мирахBekeshev Dimash
- 2026-09-23 15:14Merge remote-tracking branch 'origin/Agent' into analysis_datasetMindcore
- 2026-09-23 15:09sim: сценарии random_soft, random_hard, causal — существующие миры не менялисьMindcore
- 2026-09-23 15:05prior: q_se — малые выборки и тройки без историиMindcore
- 2026-09-23 14:54Merge remote-tracking branch 'origin/main' into AgentBekeshev Dimash
- 2026-09-23 14:53agent: шаг 3 — погрешность оценки в единицах q, таблица (q, q_se, n_obs)Bekeshev Dimash
- 2026-09-23 14:52Merge remote-tracking branch 'origin/analysis_dataset'Айдос Амангельды
- 2026-09-23 14:52Merge remote-tracking branch 'origin/Agent'Айдос Амангельды
- 2026-09-23 14:52Update frontendАйдос Амангельды
- 2026-09-23 14:44Merge remote-tracking branch 'origin/analysis_dataset' into AgentBekeshev Dimash
- 2026-09-23 14:39prior, sim: формат (q, q_se, n_obs), проверка исследования, иерархия и A/B на мирахMindcore
- 2026-09-23 14:32merge: генератор миров Тимура (sim/) и аналитика в ветку Agent; тренажёр переключён на sim.worldsBekeshev Dimash
- 2026-09-23 14:28Integrate agent API and background runsАйдос Амангельды
- 2026-09-23 14:20agent: обновлён submission.csv под новый априор + проверка R5Bekeshev Dimash
- 2026-09-23 14:18eval: тренажёр агента — прогоны по мирам, потолок и проверки правилBekeshev Dimash
- 2026-09-23 14:11agent: решение кейса перенесено в папку beeline_agent/Bekeshev Dimash
- 2026-09-23 14:11prior: правила чистки истории и устойчивая оценка эффектаMindcore
- 2026-09-23 14:11prior: осторожная оценка для 12 тарифов без истории (PRIOR_UNSEEN)Mindcore
- 2026-09-23 14:11sim: генератор миров для настройки агента (sim/worlds.py)Mindcore
- 2026-09-23 14:11agent: каркас агента Beeline + пакет кейса для проверкиBekeshev Dimash
- 2026-09-23 14:02Merge remote-tracking branch 'origin/analysis_dataset'Айдос Амангельды
- 2026-09-23 14:02Merge remote-tracking branch 'origin/Agent'Айдос Амангельды
- 2026-09-23 14:01Prepare backend deploymentАйдос Амангельды
- 2026-09-23 14:01prior: осторожная оценка для 12 тарифов без истории (PRIOR_UNSEEN)Mindcore
- 2026-09-23 13:58prior: правила чистки истории и устойчивая оценка эффектаMindcore
- 2026-09-23 13:45agent: решение кейса перенесено в папку beeline_agent/Bekeshev Dimash
- 2026-09-23 13:41agent: каркас агента Beeline + пакет кейса для проверкиBekeshev Dimash
- 2026-09-23 13:13Initial project scaffoldАйдос Амангельды
- 2026-09-23 13:48analytics: audience map, history-vs-audience shift, prior validationMindcore
- 2026-09-23 13:46analytics: prior table of tariff-change effects for the agentMindcore
- 2026-09-23 13:41analytics: data cleaning pipeline and data quality reportMindcore
Структура репозитория (169 файлов)
.github/workflows/frontend-deploy.yml .gitignore .python-version Procfile README.md analytics/.gitignore analytics/README.md analytics/audience_map.py analytics/build_prior.py analytics/clean_data.py analytics/common.py analytics/output/audience/cells.csv analytics/output/audience/history_vs_audience.json analytics/output/audience/subsegments.csv analytics/output/data_quality.json analytics/output/prior/audience_cells.csv analytics/output/prior/pilot_candidates.csv analytics/output/prior/prior_effects.csv analytics/output/prior/prior_meta.json analytics/output/prior/prior_table.py analytics/output/prior/validation.json analytics/requirements.txt analytics/validate_prior.py backend/.env.example backend/.gitignore backend/.python-version backend/Dockerfile backend/Dockerfile.dockerignore backend/Procfile backend/alembic.ini backend/alembic/env.py backend/alembic/script.py.mako backend/alembic/versions/0001_initial.py backend/alembic/versions/0002_agent_runs.py backend/alembic/versions/0003_agent_run_explanation.py backend/app/__init__.py backend/app/agents/.gitkeep backend/app/agents/__init__.py backend/app/agents/base.py backend/app/api/.gitkeep backend/app/api/__init__.py backend/app/api/router.py backend/app/api/routes/__init__.py backend/app/api/routes/beeline.py backend/app/api/routes/health.py backend/app/core/__init__.py backend/app/core/beeline.py backend/app/core/config.py backend/app/core/database.py backend/app/main.py backend/app/models/__init__.py backend/app/models/agent_run.py backend/app/models/base.py backend/app/models/example_item.py backend/app/repositories/__init__.py backend/app/repositories/agent_runs.py backend/app/schemas/__init__.py backend/app/schemas/agent.py backend/app/schemas/health.py backend/app/services/__init__.py backend/app/services/agent_runs.py backend/app/services/agent_worker.py backend/app/services/case_summary.py backend/app/tools/.gitkeep backend/app/tools/__init__.py backend/app/tools/base.py backend/docker-compose.yml backend/docs/beeline-api.md backend/docs/deploy.md backend/docs/local-start.md backend/docs/migrations.md backend/requirements.txt backend/scripts/check_beeline.py beeline_agent/.env.example beeline_agent/.gitignore beeline_agent/BACKEND_CONTRACT.md beeline_agent/PARTICIPANT_GUIDE.md beeline_agent/WORKFLOW.md beeline_agent/agent.py beeline_agent/agent_template.py beeline_agent/customer_profile.csv beeline_agent/data/arpu_monthly.csv beeline_agent/data/change_tariff.csv beeline_agent/data/dict_tariff.csv beeline_agent/data/traffic.csv beeline_agent/environment.py beeline_agent/eval/EXPERIMENTS.md beeline_agent/eval/__init__.py beeline_agent/eval/baselines/agent_pre_step2.py beeline_agent/eval/baselines/agent_step2_joint.py beeline_agent/eval/baselines/agent_step2_naive.py beeline_agent/eval/baselines/agent_step2_naive_ambig.py beeline_agent/eval/baselines/agent_v0.py beeline_agent/eval/baselines/prior_table_v0.csv beeline_agent/eval/baselines/tests_step2_joint/test_group_update.py beeline_agent/eval/checks.py beeline_agent/eval/compare.py beeline_agent/eval/core.py beeline_agent/eval/prior_tables.py beeline_agent/eval/run.py beeline_agent/eval/simple_worlds.py beeline_agent/eval/strategies.py beeline_agent/eval/variants.py beeline_agent/feature_dictionary.csv beeline_agent/local_eval.py beeline_agent/make_submission.py beeline_agent/mock_environment.py beeline_agent/prior/README.md beeline_agent/prior/ab_worlds.py beeline_agent/prior/breakeven.csv beeline_agent/prior/build_prior.py beeline_agent/prior/evaluate_estimators.py beeline_agent/prior/hier.py beeline_agent/prior/history.py beeline_agent/prior/prior_table.csv beeline_agent/prior/prior_unseen.csv beeline_agent/prior/reports/estimator_comparison.csv beeline_agent/prior/reports/prior_meta.json beeline_agent/prior/reports/research_check.json beeline_agent/prior/reports/similarity.json beeline_agent/prior/research_check.py beeline_agent/prior/similarity.py beeline_agent/prior/unseen.py beeline_agent/prior/verify_prior.py beeline_agent/requirements-workflow.txt beeline_agent/requirements.txt beeline_agent/scoring_core.py beeline_agent/sim/__init__.py beeline_agent/sim/headroom.py beeline_agent/sim/hypotheses.py beeline_agent/sim/reports/headroom.csv beeline_agent/sim/reports/hypotheses_runs.csv beeline_agent/sim/worlds.py beeline_agent/submission.csv beeline_agent/tariff_dictionary.csv beeline_agent/tests/test_estimates.py beeline_agent/tests/test_fallback_reserve.py beeline_agent/tests/test_improvements.py beeline_agent/tests/test_workflow.py beeline_agent/workflow.py frontend/.env.example frontend/.gitignore frontend/Dockerfile frontend/docs/local-start.md frontend/index.html frontend/package-lock.json frontend/package.json frontend/public/favicon.svg frontend/src/.gitkeep frontend/src/App.tsx frontend/src/api/client.ts frontend/src/components/Campaigns.tsx frontend/src/components/CaseOverview.tsx frontend/src/components/Explanation.tsx frontend/src/components/Help.tsx frontend/src/components/Pilots.tsx frontend/src/components/Ui.tsx frontend/src/hooks/useAgentRun.ts frontend/src/hooks/useCaseSummary.ts frontend/src/main.tsx frontend/src/pages/Dashboard.tsx frontend/src/styles.css frontend/src/types/api.ts frontend/src/utils/explanation.ts frontend/src/utils/labels.ts frontend/src/vite-env.d.ts frontend/tsconfig.json frontend/vite.config.ts requirements.txt
Ветки (3)
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.