AAYMA
RU
Войти

Janymda

Агент планирует тарифные кампании: на ограниченном бюджете проверяет гипотезы пилотами через публичную среду, затем собирает портфель до 10 кампаний…

Доведённый продукт
Команда «RedOrda» 45💬 0 комментариевс 23 сентября 2026 г.

О проекте

Команда: RedOrda
Кейс HackAlem.ai: Телеком — Beeline
Стадия: Доведённый продукт

Задача кейса: Агент, который решает, каким абонентам какой тариф предложить (чистый прирост ARPU)

Суть

Агент планирует тарифные кампании: на ограниченном бюджете проверяет гипотезы пилотами через публичную среду, затем собирает портфель до 10 кампаний (сегмент, тариф, канал) в пределах бюджета и лимита контактов и выгружает CSV.

Как устроено

Общий campaign_engine работает и в веб-приложении (Django, Celery, PostgreSQL, Redis, React), и в судейском Agent.act(env). Агент формирует гипотезы по истории и профилю аудитории, тратит часть бюджета на адаптивные пилоты (до 20), обновляет оценки эффекта по каналам и сегментам, затем выполняет ограниченный поиск допустимого портфеля, принимая замену только при улучшении прогнозной цели. LLM (OpenAI) служит дополнительным источником структурированных гипотез, а лимиты и вызовы среды контролирует код. Интерфейс показывает пилоты, расход ресурсов, журнал событий и «живую команду» из пяти ролей с командами explain и compare.

Ключевые решения

  • adaptive pilot experiments
  • budget/contact-constrained portfolio search
  • hypothesis generation
  • local_eval over seeds
  • deterministic CSV export

Метрики

local_eval на seed 0–9: 10/10 валидных запусков с положительным net, средний net ≈1,08 млн у.е., медиана 1 133 155 (диапазон 532 792–1 559 491); поиск портфеля даёт +8,93% среднего net на 11 dev-seed

Особенности

Агент не знает истинных эффектов и оплачивает информацию пилотами, то есть по сути решает задачу explore/exploit. Результаты воспроизводимы: две независимые сборки дали побайтово одинаковый CSV с известным SHA-256. README честно отделяет цифры публичного мока от закрытого судейского балла.

Стек

Python · Django 5.2 · Celery · PostgreSQL · Redis · React 18 · TypeScript · Vite · Docker Compose · Vitest

Модели

OpenAI


Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-182682a3-redorda.

README

README.md

Логотип Janymda

Janymda by RedOrda

AI-команда, которая превращает данные об абонентах в проверенный план тарифных кампаний.
История → гипотезы → пилоты → портфель в пределах бюджета → CSV.

Запустить у себя через Docker · Проверить решение · API-контракт

Django 5.2 React 18.2 Docker Compose HackAlem AI 2026

Настоящий экран мини-офиса Janymda с четырьмя участниками команды

Реальный экран интерфейса. В кейсе используются синтетические данные; показанное состояние команды зависит от выбранного плана.

Задача

В тарифном маркетинге недостаточно найти аудиторию с высоким ARPU: переход может уменьшить выручку, а каждый контакт расходует деньги и охват. История описывает другую выборку, поэтому агент сначала проверяет гипотезы небольшими пилотами, затем выбирает кампании по полученным наблюдениям.

Аудитория кейсаРесурсы агентаИтог
23 441 синтетических абонента · 21 тариф · 4 канала100 000 у. е. · 15 000 контактов, включая пилоты · до 20 пилотовДо 10 кампаний: кому, какой тариф и через какой канал предложить

[!NOTE] Локальное приложение и судейский Agent.act(env) используют один campaign_engine. Прогнозы и результаты на публичном моке не являются баллом закрытого оценщика.

Запуск за одну команду

Нужны запущенный Docker с Compose v2 и Bash. Python, Node.js и PostgreSQL на компьютере проверяющего не требуются.

  1. Скачайте официальный ZIP участника. Он не включён в Git.
  2. Клонируйте репозиторий и запустите установку с реальным абсолютным путём к скачанному ZIP; имя файла у вас может отличаться от примера:
git clone https://github.com/BAITC-Hacks/hack-182682a3-redorda.git
cd hack-182682a3-redorda
bash scripts/quickstart-compose.sh "/absolute/path/to/participant-kit.zip"
  1. В приглашении createsuperuser задайте свои имя пользователя и пароль. Откройте localhost:5173 и войдите под этой учётной записью.

Скрипт создаёт локальный .env со случайными секретами, проверяет SHA-256 архива, распаковывает его через Docker, поднимает PostgreSQL, Redis, Django, Celery и React, импортирует полный набор и проверяет готовность агента. Существующий .env он сохраняет без изменений. Готовых логинов и паролей в репозитории нет.

[!TIP] Если запуск был неинтерактивным, создайте пользователя командой docker compose exec backend python backend/manage.py createsuperuser. Статус контейнеров: docker compose ps -a; готовность API: curl -fsS http://localhost:5173/api/v1/ready/.

Контрольные точки после запуска:

ПроверкаОжидаемый результат
docker compose ps -adb, redis, backend, worker и frontend работают; migrate завершился с кодом 0
docker compose exec -T backend python backend/manage.py check_agentAgent preflight: OK и профиль из 23 441 абонента
Новый план в браузереРасчёт доходит до результата; кампании и CSV доступны в карточке запуска
Посмотреть интерфейс без ZIP

Запустите bash scripts/quickstart-compose.sh, создайте пользователя и в разделе «Аудитория» нажмите «Импортировать демоданные». Четыре включённых CSV позволяют изучить данные и сохранить черновик. Для пилотов и расчёта нужен полный ZIP с customer_profile.csv; после его получения повторите команду с путём к архиву.

Если запуск остановился
docker compose ps -a
docker compose logs --tail=120 backend worker frontend

Повторный запуск bash scripts/quickstart-compose.sh "/absolute/path/to/participant-kit.zip" сохраняет существующий .env. Если вы изменили переменные в нём вручную, пересоздайте контейнеры: docker compose up -d --force-recreate backend worker. Подробная инструкция Compose.

Сценарий для проверки

  1. Аудитория. После полного импорта откройте сводку: профиль абонентов и справочники становятся входом агента.
  2. План. Создайте запуск с бюджетом, лимитом контактов, числом пилотов и seed. baseline работает без внешнего API-ключа.
  3. Решение. Запустите расчёт. Смотрите пилоты, расход ресурсов, журнал событий, задачи команды и кампании в двух представлениях одного запуска.
  4. Результат. Откройте объяснения и сравнение доступных вариантов, затем скачайте сохранённый CSV. Новый набор ограничений создаёт отдельный план.

Экспорт читает сохранённый результат и не запускает пилоты повторно. Предполагаемый эффект, фактические расходы пилотов и плановая стоимость кампаний обозначаются раздельно. Поле результата симулятора остаётся null, если веб-запуск не выполнял отдельную оценку.

Живая команда получает задачи пяти ролей, результаты и передачи из реальных шагов движка. explain объясняет выбранную кампанию по сохранённым фактам. compare проверяет, какая начальная часть сохранённого портфеля укладывается в новые ограничения, включая уже потраченные ресурсы пилотов. Это ограниченный сценарий, а не полный поиск нового портфеля; обе команды не проводят дополнительных пилотов. Границы сравнения описаны в API-контракте. Ограничение каналов для нового запуска пока не поддерживается.

Почему здесь нужен агент

flowchart LR
    A["История и профиль аудитории"] --> B["Гипотезы"]
    B --> C["Пилоты через публичную среду"]
    C --> D["Обновление оценок"]
    D --> E["Поиск допустимого портфеля"]
    E --> F["Кампании и CSV"]
    C --> G["События и свидетельства"]
    D --> G
    E --> G

Агент не получает истинные эффекты заранее. Он расходует ограниченный бюджет на пилоты, учитывает их результаты при выборе каналов и сегментов, а затем проверяет итоговый портфель по общим лимитам. После пилотов ограниченный поиск может заменить кампанию, канал или порядок; он сохраняет вариант только при улучшении прогнозной цели. Это не обещание улучшить фактический результат на каждом seed.

LLM — дополнительный источник структурированных гипотез. При отсутствии ключа или ошибке провайдера расчётная стратегия продолжает работу. Проверка лимитов и вызовы публичной среды остаются в коде движка.

Результаты, которые можно повторить

[!IMPORTANT] Все цифры ниже получены на публичном локальном моке и seed, использованных при разработке. Это измеренный результат локального симулятора, не прогноз веб-интерфейса и не балл закрытого судейства. Данные кейса синтетические. Срез: 23 сентября 2026, версия агента d91aabc.

Стандартный агент · адаптивные пилоты

10 / 10≈1,08 млн у. е.14 пилотов8–10 кампаний
Валидные запуски с положительным netСредний чистый результатВ каждом запуске, из 20 допустимыхВ каждом итоговом плане

Agent.act(env) без вызовов LLM прошёл официальный local_eval --runs 10 на seed 0–9. Чистый результат учитывает пилоты и финальные кампании: медиана 1 133 155 у. е., диапазон 532 792–1 559 491 у. е. Общие расходы — 97 142–100 000 у. е.; контакты — 9 090–15 000. Проверка лимитов завершилась OK в каждом запуске.

Чистый результат стандартного агента на десяти seed публичной локальной среды

Все 10 запусков · net, кампании и ресурсы
SeedЧистый результат, у. е.КампанииКонтактыРасходы, у. е.
01 260 2721013 72898 276
11 435 659815 00097 142
2532 7921013 59299 466
31 559 49199 09099 982
41 497 251815 00097 456
51 037 1471015 00099 984
6644 650815 00097 288
71 229 162914 76599 852
8625 103815 00098 826
9992 439915 000100 000

Отдельный эксперимент · поиск портфеля

На одинаковых замороженных пилотах fixed_200 сравнили исходный и улучшенный портфели на 11 dev-seed. Средний измеренный net изменился с 1 373 058,47 до 1 495 712,80 у. е. — +8,93%. Из 11 пар: 6 улучшений · 1 совпадение · 4 ухудшения. Поиск сохраняет улучшение прогнозной цели; роста фактического net на каждом seed он не гарантирует. Это другая конфигурация, и её среднее нельзя приписывать стандартному адаптивному агенту. Протокол и границы вывода.

Воспроизводимая сдача

Два отдельных процесса make_submission с seed 42 и автономная сборка дали побайтово одинаковый CSV: 9 кампаний · 14 пилотов · 15 000 контактов · 99 994 у. е. расходов. Автономный агент повторил все десять локальных результатов. SHA-256 CSV: 8cffdc8561421204e1fee3de599918304173b3d9acb00fa8462dc395eee0ee52.

Команды для независимой локальной проверки

После установки Python 3.11+ и Node.js 20.19+:

make setup
.venv/bin/python scripts/import_participant_kit.py "/absolute/path/to/participant-kit.zip"
PYTHON_DOTENV_DISABLED=1 .venv/bin/python scripts/run_official.py local_eval --runs 10
PYTHON_DOTENV_DISABLED=1 .venv/bin/python scripts/run_official.py make_submission
.venv/bin/python scripts/build_agent.py --submission artifacts/submission.csv
make schema
make check

Готовый для копирования комплект создаётся в artifacts/delivery/: автономный agent.py, submission.csv и минимальные зависимости. Сгенерированные артефакты и пакет организаторов не входят в Git. ТЗ конкурса · Подробный протокол поиска.

Архитектура

flowchart LR
    UI["React · рабочий стол и команда"] --> API["Django API"]
    API --> Q["Celery worker"]
    Q --> ENGINE["campaign_engine"]
    JUDGE["Agent.act(env)"] --> ENGINE
    ENGINE <--> ENV["Публичная среда и пилоты"]
    ENGINE --> STORE["События · результаты · CSV"]
    STORE --> API
СлойОтветственность
frontend/Два представления запуска, персонажи, импорт данных, управление планом и экспорт
backend/Авторизация, хранение наборов и запусков, очередь, события, результаты и HTTP API
packages/campaign_engine/Общая стратегия для веба и судейского Agent.act, пилоты, оценки, ограничения и портфель
agent.py / scripts/build_agent.pyКонкурсный вход и автономная сборка для передачи организаторам

Документация: API и авторизация · OpenAPI · развёртывание · контракт живой команды · конкурсный агент.

RedOrda · HackAlem AI 2026 · Beeline Tariff Marketing Campaigns. Все данные и суммы кейса синтетические.

Звёзды
⭐ 0
Форки
0
Язык
Python
Последний push
в прошлом месяце
Коммиты
99
Авторы
5
Файлы
201
Ветки
15

Авторы коммитов

erkebulanmyrzabek 53oreke13 33ByOrynbasar 9Мырзабек Еркебұлан Қалдыбекұлы 2oreke 2

История коммитов

  • 2026-09-23 17:59Update production deployment docs and Blob download testoreke13
  • 2026-09-23 17:56Show reproducible local evaluation results in READMEoreke13
  • 2026-09-23 17:48Merge updated main onboarding with live team fixeserkebulanmyrzabek
  • 2026-09-23 17:48Document verified live team workflow and comparison limitserkebulanmyrzabek
  • 2026-09-23 17:46Present Janymda and streamline Compose onboardingoreke13
  • 2026-09-23 17:44Implement saved snapshot campaign explanations and constrained comparisonserkebulanmyrzabek
  • 2026-09-23 17:43Publish evidence-linked team tasks from real campaign stepserkebulanmyrzabek
  • 2026-09-23 17:41Fix budget extraction in create-plan text requestserkebulanmyrzabek
Все коммиты (99)
  • 2026-09-23 17:22Merge latest portfolio search into mainerkebulanmyrzabek
  • 2026-09-23 17:20Merge backend team services with live frontenderkebulanmyrzabek
  • 2026-09-23 17:18Merge live team frontend into mainerkebulanmyrzabek
  • 2026-09-23 17:18Merge latest main and verify portfolio search integrationByOrynbasar
  • 2026-09-23 17:16Improve final portfolio search with frozen pilot evidenceByOrynbasar
  • 2026-09-23 17:14Merge integrated backend team servicesoreke13
  • 2026-09-23 17:14Integrate durable team commands and validate cross-branch workfloworeke13
  • 2026-09-23 17:10Merge team HTTP APIoreke13
  • 2026-09-23 17:08Merge team command executionoreke13
  • 2026-09-23 17:08Merge team state persistenceoreke13
  • 2026-09-23 17:06Persist team tasks artifacts and consistent snapshotsoreke13
  • 2026-09-23 17:05Prepare typed team commands from short text requestserkebulanmyrzabek
  • 2026-09-23 17:04Share selected run, team snapshot and commands across viewserkebulanmyrzabek
  • 2026-09-23 17:02Handle missing run progress in detail viewerkebulanmyrzabek
  • 2026-09-23 17:01Implement durable team commands and AI adapteroreke13
  • 2026-09-23 17:00Drive existing pets from run tasks and handoffserkebulanmyrzabek
  • 2026-09-23 17:00Connect run detail to shared live team stateerkebulanmyrzabek
  • 2026-09-23 16:59Add team snapshot and command HTTP APIoreke13
  • 2026-09-23 16:59Merge remote-tracking branch 'origin/main' into codex/production-integrationerkebulanmyrzabek
  • 2026-09-23 16:59Merge authenticated agent workflow with imports and verified simulationerkebulanmyrzabek
  • 2026-09-23 16:49Fix dataset readiness and import integration before production releaseerkebulanmyrzabek
  • 2026-09-23 16:49Merge production-based team scopeoreke13
  • 2026-09-23 16:48Align team tasks with inspected production mascotsoreke13
  • 2026-09-23 16:46Merge parallel AI team specificationsoreke13
  • 2026-09-23 16:45Document parallel delivery plan for live AI teamoreke13
  • 2026-09-23 16:43Integrate subscriber persistence with validated immutable datasetserkebulanmyrzabek
  • 2026-09-23 16:41Integrate dataset imports, authenticated workflow and Janymda petserkebulanmyrzabek
  • 2026-09-23 16:39Merge latest frontend into agent web integrationByOrynbasar
  • 2026-09-23 16:38Connect campaign agent to authenticated web workflowByOrynbasar
  • 2026-09-23 16:38Integrate verified campaign execution and Janymda sign-inerkebulanmyrzabek
  • 2026-09-23 16:37Add four pixel pets and a Janymda mini-officeerkebulanmyrzabek
  • 2026-09-23 16:37Polish pet controls after browser and accessibility verificationerkebulanmyrzabek
  • 2026-09-23 16:36fix: preserve saved runs and negotiate CSV downloadserkebulanmyrzabek
  • 2026-09-23 16:36Polish pet controls after browser and accessibility verificationerkebulanmyrzabek
  • 2026-09-23 16:33feat(backend): enable verified official local simulationerkebulanmyrzabek
  • 2026-09-23 16:33fix(frontend): align full run workflow with backend contracterkebulanmyrzabek
  • 2026-09-23 16:32Add four pixel pets and a Janymda mini-officeerkebulanmyrzabek
  • 2026-09-23 16:25Guard frontend routes with Janymda sessionerkebulanmyrzabek
  • 2026-09-23 16:25Keep logout visible with long usernameserkebulanmyrzabek
  • 2026-09-23 16:25Add session and CSRF API clienterkebulanmyrzabek
  • 2026-09-23 16:25Add Janymda sign-in pageerkebulanmyrzabek
  • 2026-09-23 16:24feat(frontend): prepare campaign run workflowerkebulanmyrzabek
  • 2026-09-23 16:24fix(frontend): preserve run polling after network failureserkebulanmyrzabek
  • 2026-09-23 16:23fix(backend): connect web runs to shared campaign runnererkebulanmyrzabek
  • 2026-09-23 16:22Complete CSV import documentation and verification guidanceerkebulanmyrzabek
  • 2026-09-23 16:21Keep dataset import results across route navigationerkebulanmyrzabek
  • 2026-09-23 16:20Publish dataset import schema and storage documentationerkebulanmyrzabek
  • 2026-09-23 16:18Add validated raw CSV and demo dataset importserkebulanmyrzabek
  • 2026-09-23 16:17Add demo and CSV dataset import interfaceerkebulanmyrzabek
  • 2026-09-23 16:17Merge latest main before publishing diagnosticsByOrynbasar
  • 2026-09-23 16:16Keep uploaded datasets out of Docker image layerserkebulanmyrzabek
  • 2026-09-23 16:15Merge AI agent diagnostics into mainByOrynbasar
  • 2026-09-23 16:15Add controlled pilot and portfolio diagnosticsByOrynbasar
  • 2026-09-23 16:14Bundle demo CSVs and define web import contracterkebulanmyrzabek
  • 2026-09-23 16:13Expose run progress and sanitized failure detailsoreke13
  • 2026-09-23 16:08Merge campaign agent into mainByOrynbasar
  • 2026-09-23 16:05Keep logout visible with long usernameserkebulanmyrzabek
  • 2026-09-23 16:01Guard frontend routes with Janymda sessionerkebulanmyrzabek
  • 2026-09-23 15:57Add Janymda favicon to frontenderkebulanmyrzabek
  • 2026-09-23 15:57fix(frontend): preserve run polling after network failureserkebulanmyrzabek
  • 2026-09-23 15:56Add Janymda sign-in pageerkebulanmyrzabek
  • 2026-09-23 15:55Implement campaign agent with adaptive pilots and OpenAI integrationByOrynbasar
  • 2026-09-23 15:54Add session and CSRF API clienterkebulanmyrzabek
  • 2026-09-23 15:54feat(frontend): prepare campaign run workflowerkebulanmyrzabek
  • 2026-09-23 15:51Plan Janymda frontend login implementationerkebulanmyrzabek
  • 2026-09-23 15:49Specify Janymda frontend login flowerkebulanmyrzabek
  • 2026-09-23 15:44Merge public Swagger documentationoreke13
  • 2026-09-23 15:44Make Swagger and OpenAPI publicly accessibleoreke13
  • 2026-09-23 15:41Merge verified backend integration with latest mainoreke13
  • 2026-09-23 15:40Preserve latest main branding and disabled Actions; retain CI templateoreke13
  • 2026-09-23 15:38Merge backend integration, session auth and infrastructureoreke13
  • 2026-09-23 15:38Integrate backend auth, infrastructure and PostgreSQL worker checksoreke13
  • 2026-09-23 15:35Remove failing GitHub Actions workflowerkebulanmyrzabek
  • 2026-09-23 15:34Merge pull request #2 from BAITC-Hacks/codex/janymda-brandМырзабек Еркебұлан Қалдыбекұлы
  • 2026-09-23 15:33Use Janymda branding in navigationerkebulanmyrzabek
  • 2026-09-23 15:26Persist subscriber profiles in participant importerkebulanmyrzabek
  • 2026-09-23 15:17Merge codex/backend-results into backend integrationoreke13
  • 2026-09-23 15:17Merge codex/backend-api into backend integrationoreke13
  • 2026-09-23 15:17Merge codex/backend-data into backend integrationoreke13
  • 2026-09-23 15:17Merge codex/backend-execution into backend integrationoreke13
  • 2026-09-23 15:15Add campaign run API actions and explicit contractsoreke13
  • 2026-09-23 15:14Merge pull request #1 from BAITC-Hacks/codex/dev3-frontendМырзабек Еркебұлан Қалдыбекұлы
  • 2026-09-23 15:14Fix execution test to use queued task idoreke13
  • 2026-09-23 15:13Add validated Beeline dataset import and run lifecycle modelsoreke13
  • 2026-09-23 15:12Implement transactional campaign execution and Celery workeroreke13
  • 2026-09-23 15:12Implement saved campaign results and deterministic CSV exportoreke13
  • 2026-09-23 15:11Add React Bits motion to frontenderkebulanmyrzabek
  • 2026-09-23 15:06Poll main on Mac mini while GitHub Actions billing is blockedoreke
  • 2026-09-23 15:05Deploy hack.1ge.kz on Mac mini with checked main autodeployoreke
  • 2026-09-23 14:54Scaffold Django React monorepo and three developer briefsoreke13
  • 2026-09-23 14:00Document Beeline tariff campaign caseoreke13
Структура репозитория (201 файлов)
.dockerignore
.env.example
.gitignore
AGENTS.md
Makefile
README.md
agent.py
artifacts/.gitkeep
backend/Dockerfile
backend/apps/__init__.py
backend/apps/campaigns/__init__.py
backend/apps/campaigns/admin.py
backend/apps/campaigns/apps.py
backend/apps/campaigns/auth_views.py
backend/apps/campaigns/dataset_views.py
backend/apps/campaigns/errors.py
backend/apps/campaigns/management/__init__.py
backend/apps/campaigns/management/commands/__init__.py
backend/apps/campaigns/management/commands/check_agent.py
backend/apps/campaigns/management/commands/import_participant_data.py
backend/apps/campaigns/migrations/0001_initial.py
backend/apps/campaigns/migrations/0002_campaignrun_cancel_requested_campaignrun_error_code_and_more.py
backend/apps/campaigns/migrations/0002_subscriber.py
backend/apps/campaigns/migrations/0003_campaignrun_constraints_campaignrun_parent_run_and_more.py
backend/apps/campaigns/migrations/0003_merge_subscriber_execution.py
backend/apps/campaigns/migrations/0004_merge_20260923_1710.py
backend/apps/campaigns/migrations/__init__.py
backend/apps/campaigns/models.py
backend/apps/campaigns/serializers.py
backend/apps/campaigns/services/__init__.py
backend/apps/campaigns/services/datasets.py
backend/apps/campaigns/services/engine_bridge.py
backend/apps/campaigns/services/execution.py
backend/apps/campaigns/services/export.py
backend/apps/campaigns/services/participant_environment.py
backend/apps/campaigns/services/public_environment.py
backend/apps/campaigns/services/raw_datasets.py
backend/apps/campaigns/services/results.py
backend/apps/campaigns/services/team_ai.py
backend/apps/campaigns/services/team_commands.py
backend/apps/campaigns/services/team_state.py
backend/apps/campaigns/tasks.py
backend/apps/campaigns/team_serializers.py
backend/apps/campaigns/team_views.py
backend/apps/campaigns/urls.py
backend/apps/campaigns/views.py
backend/config/__init__.py
backend/config/celery.py
backend/config/health.py
backend/config/permissions.py
backend/config/runtime.py
backend/config/settings.py
backend/config/urls.py
backend/config/wsgi.py
backend/manage.py
backend/tests/__init__.py
backend/tests/integration/__init__.py
backend/tests/integration/test_pipeline.py
backend/tests/integration/test_postgres.py
backend/tests/integration/test_team_commands_postgres.py
backend/tests/integration/test_team_pipeline.py
backend/tests/integration/test_team_state_postgres.py
backend/tests/test_agent_readiness.py
backend/tests/test_api.py
backend/tests/test_auth.py
backend/tests/test_dataset_execution_readiness.py
backend/tests/test_dataset_upload.py
backend/tests/test_engine_integration.py
backend/tests/test_execution.py
backend/tests/test_export.py
backend/tests/test_import.py
backend/tests/test_models.py
backend/tests/test_participant_environment.py
backend/tests/test_participant_pipeline.py
backend/tests/test_public_engine_integration.py
backend/tests/test_public_environment.py
backend/tests/test_results.py
backend/tests/test_team_analysis.py
backend/tests/test_team_api.py
backend/tests/test_team_commands.py
backend/tests/test_team_state.py
compose.yaml
data/demo/README.md
data/demo/arpu_monthly.csv
data/demo/change_tariff.csv
data/demo/dict_tariff.csv
data/demo/traffic.csv
docs/api-contract.md
docs/assets/local-eval-10.svg
docs/assets/team-office.jpg
docs/backend-api.md
docs/backend-data.md
docs/backend-execution.md
docs/backend-integration.md
docs/backend-results.md
docs/deployment.md
docs/developers/00-team-plan.md
docs/developers/01-backend.md
docs/developers/02-agent-integration.md
docs/developers/02-agent.md
docs/developers/02-portfolio-search.md
docs/developers/03-frontend.md
docs/openapi.yaml
docs/team-contract.md
frontend/Dockerfile
frontend/README.md
frontend/index.html
frontend/package-lock.json
frontend/package.json
frontend/public/branding/janymda-logo.jpg
frontend/src/App.auth.test.tsx
frontend/src/App.tsx
frontend/src/api/adapters.test.ts
frontend/src/api/adapters.ts
frontend/src/api/client.auth.test.ts
frontend/src/api/client.ts
frontend/src/api/run-state.ts
frontend/src/api/team-requests.ts
frontend/src/api/types.ts
frontend/src/components/DataPage.css
frontend/src/components/DataPage.tsx
frontend/src/components/LoginPage.test.tsx
frontend/src/components/LoginPage.tsx
frontend/src/components/RunDetail.css
frontend/src/components/RunDetail.tsx
frontend/src/components/pets/AgentPets.css
frontend/src/components/pets/AgentPets.tsx
frontend/src/components/pets/PetAvatar.tsx
frontend/src/components/pets/PetOffice.tsx
frontend/src/components/pets/choreography.ts
frontend/src/components/react-bits/CountUp.tsx
frontend/src/components/react-bits/LICENSE.md
frontend/src/components/react-bits/SpotlightCard.css
frontend/src/components/react-bits/SpotlightCard.tsx
frontend/src/main.tsx
frontend/src/runs/RunDetail.tsx
frontend/src/runs/RunResults.tsx
frontend/src/runs/presentation.ts
frontend/src/runs/runs.css
frontend/src/runs/useRun.ts
frontend/src/state/RunContext.tsx
frontend/src/styles.css
frontend/src/test/run-workflow.test.tsx
frontend/src/test/setup.ts
frontend/src/vite-env.d.ts
frontend/tests/api-client.test.mjs
frontend/tsconfig.json
frontend/vite.config.ts
frontend/vitest.config.ts
infra/ci/github-actions.yaml
infra/macos/com.oa.redorda.api.plist
infra/macos/com.oa.redorda.autodeploy.plist
infra/macos/com.oa.redorda.web.plist
infra/macos/com.oa.redorda.worker.plist
infra/macos/production.env.example
infra/macos/proxy.mjs
infra/macos/run-service.sh
infra/nginx.conf
packages/campaign_engine/__init__.py
packages/campaign_engine/agent.py
packages/campaign_engine/beliefs.py
packages/campaign_engine/candidates.py
packages/campaign_engine/contracts.py
packages/campaign_engine/engine_types.py
packages/campaign_engine/openai_gateway.py
packages/campaign_engine/pilots.py
packages/campaign_engine/portfolio.py
packages/campaign_engine/runner.py
packages/campaign_engine/segments.py
packages/campaign_engine/team_analysis.py
packages/campaign_engine/team_events.py
packages/campaign_engine/tests/test_candidates.py
packages/campaign_engine/tests/test_delivery.py
packages/campaign_engine/tests/test_diagnostic_package.py
packages/campaign_engine/tests/test_hypothesis_provider.py
packages/campaign_engine/tests/test_openai_gateway.py
packages/campaign_engine/tests/test_pilot_diagnostics.py
packages/campaign_engine/tests/test_pilots.py
packages/campaign_engine/tests/test_portfolio.py
packages/campaign_engine/tests/test_portfolio_diagnostics.py
packages/campaign_engine/tests/test_portfolio_search.py
packages/campaign_engine/tests/test_portfolio_search_diagnostics.py
packages/campaign_engine/tests/test_runner.py
packages/campaign_engine/tests/test_runner_edges.py
packages/campaign_engine/tests/test_runner_search.py
packages/campaign_engine/tests/test_team_analysis.py
pyproject.toml
requirements.lock
requirements.txt
scripts/benchmark_agent.py
scripts/build_agent.py
scripts/check_openai.py
scripts/compare_portfolio_search.py
scripts/deploy-production-macos.sh
scripts/diagnose_pilots.py
scripts/diagnose_portfolio.py
scripts/import_participant_kit.py
scripts/package_diagnostics.py
scripts/poll-production-macos.sh
scripts/quickstart-compose.sh
scripts/run_official.py
Ветки (15)

Обсуждение 0 комментариев

Войдите, чтобы комментировать

Пока нет комментариев — будьте первым.