О проекте
Команда: Nexus
Кейс HackAlem.ai: Логистика — Электрокомплект · ekt.kz
Стадия: Доведённый продукт
Задача кейса: Автоматический расчёт заказов поставщикам для пополнения склада, с утверждением менеджером
Суть
Веб-приложение считает рекомендуемые заказы поставщикам IEK и Systeme Electric по реальным выгрузкам партнёра (10 XLSX): количество, срочность и полное числовое обоснование по каждому SKU. Менеджер правит и подтверждает позиции, затем выгружает консолидированный PO CSV; LLM по кнопке объясняет расчёт.
Как устроено
XLSX разбираются и нормализуются прямо в браузере, затем чистые детерминированные функции (calculation.ts) считают регулярный спрос. Разовые всплески исключаются по медиане + MAD/IQR, а повторяющиеся крупные заказы считаются устойчивым ростом. Месяцы дефицита исключаются из знаменателя среднего; сезонный индекс берётся по каждому месяцу горизонта, тренд ограничен ±50%; спрос классифицируется как стабильный, волатильный или прерывистый по коэффициенту вариации. Заказ = max(0, прогноз × рост + страховой запас z·σ·√(L+R) − (остаток − резерв) − товар в пути), округлённый до MOQ. Серверный маршрут вызывает gpt-5-mini только для текста пояснения, со строгой JSON-схемой и запасным ответом.
Ключевые решения
- детекция выбросов по медиане + MAD/IQR
- сезонный индекс по месяцам
- ограниченный тренд
- компенсация спроса в периоды дефицита
- страховой запас z·σ·√(L+R)
- классификация типа спроса по CV
- округление до MOQ
- LLM-пояснение со строгой JSON-схемой
Особенности
Весь расчёт идёт в браузере и воспроизводим до байта, а LLM только формулирует текст поверх готовых чисел. Отдельно описаны ограничения реальных данных партнёра: нет поля клиента, нет флага дефицита, нет срока поставки по SKU. Проект открыто построен на заранее подготовленной «харнесс»-заготовке (это раскрыто в README), поэтому в дереве много кода, не относящегося к кейсу (fintech, агентные расследования).
Стек
TypeScript · Next.js 15 · React 19 · xlsx · Docker · Vercel
Модели
gpt-5-mini
Проект создан за 5 часов на финале хакатона HackAlem.ai (23 сентября 2026, Астана). Код — BAITC-Hacks/hack-70275441-nexus.
README
README.mdNexus Автозаказ
Автоматический расчёт заказов поставщикам для пополнения склада. Кейс ТОО «Электрокомплект» (ekt.kz), хакатон HackAlem AI, трек «Логистика».
Живой деплой: https://nexus-electrokomplekt.vercel.app/replenishment
1. Проблема
Менеджер отдела закупа ТОО «Электрокомплект» сегодня вручную считает пополнение склада в Excel: сводит историю продаж, остатки и товар в пути по каждому артикулу. Это трудоёмко, поэтому расчёт проводится нечасто и не в реальном времени — отсюда избыточные запасы по одним позициям и дефицит по другим. Разовые крупные заказы (в том числе продажа большого объёма одному клиенту) искажают расчёт регулярной потребности и дополнительно портят картину.
2. Что реализовано
Сервис читает исходные книги обоих поставщиков (IEK и Systeme Electric), считает по каждому SKU регулярный спрос очищенным от аномалий способом и выдаёт конкретную рекомендацию — сколько и у какого поставщика заказать, с числовым обоснованием и меткой срочности.
Все пять официальных обязательных требований кейса реализованы и покрыты отдельными тестами:
- Расчёт использует все источники данных — историю продаж, остатки, товар в пути, категорию, внешний прогноз прироста; изменение любого из них меняет результат (проверено тестами по каждому источнику отдельно).
- Сезонность и устойчивый рост — сезонный индекс считается отдельно для каждого будущего календарного месяца горизонта поставки и периода пересмотра, плюс ограниченный (±50%) исторический тренд, комбинированный с внешним прогнозом.
- Компенсация упущенного спроса при дефиците — месяцы с околонулевым остатком, ненулевым спросом в соседних периодах и действительно подавленными текущими продажами исключаются из знаменателя среднего, а не считаются нулевым спросом.
- Исключение разовых крупных заказов — на уровне накладной/SKU (строки одной накладной агрегируются), устойчивой статистикой (медиана + MAD/IQR, не среднее и стандартное отклонение, которые сами чувствительны к выбросам).
- Итоговый список по поставщикам с обоснованием и срочностью — каждая строка сопровождается числовым разбором (спрос, сезонность, рост, поправка на дефицит, исключённые всплески, остаток, резерв, товар в пути, страховой запас) и меткой high/medium/low.
Дополнительно, по итогам сверки с партнёром реализовано сверх изначального минимума:
- Страховой запас от статистической волатильности спроса, а не фиксированная доля от среднего:
z(уровень_сервиса) × σ(спрос) × √(срок_поставки + период_пересмотра), с уровнем сервиса по категории (98% / 95% / 90%). - Резервы под клиентов вычитаются из доступного остатка там, где эти данные есть (
Остаток − Резерв). - Повторные крупные заказы отличаются от разовых всплесков: если аномально крупные продажи повторяются минимум в двух разных месяцах за последние 3 месяца — это устойчивый сдвиг спроса, а не выброс, и такие продажи остаются в расчёте (а не исключаются). Одиночный крупный заказ по-прежнему исключается как и раньше.
- Классификация типа спроса — стабильный / волатильный / прерывистый (по доле ненулевых периодов и коэффициенту вариации). Для прерывистого спроса отключены сезонный коэффициент и краткосрочный тренд — на малой выборке ненулевых периодов они дают ложные скачки, а не реальный сигнал.
- Консервативный учёт неизвестного ETA: товар в пути без даты показывается менеджеру отдельным риском, но не уменьшает заказ и не снижает срочность, пока дата прихода не подтверждена.
- Актуализация остатка: для Systeme Electric используется фактический снимок
Остатокиз dashboard; для IEK, где такого снимка нет, последний начальный остаток прозрачно переносится на расчётную дату вычитанием продаж с начала периода. - Проверка и подтверждение менеджером — по каждой позиции можно изменить количество и подтвердить его (MOQ применяется в момент подтверждения); рассчитанная системой рекомендация при этом не перезаписывается и остаётся видна отдельно. Подтверждённые позиции выгружаются в консолидированный CSV Purchase Order по поставщикам; отправки заказа поставщику без человека нет.
- Редактируемые допущения — срок поставки, период пересмотра, внешний прогноз прироста и уровни сервиса категорий доступны непосредственно перед запуском расчёта.
- Фильтры по срочным заказам, аномалиям спроса, рискам поставки и избытку остатков.
- Опциональное LLM-обоснование поверх уже посчитанных чисел (кнопка «Получить объяснение от ИИ» на каждой строке) — LLM только формулирует текст на русском, не пересчитывает и не изменяет ни одного числа.
3. Как это работает
Загрузка 10 XLSX-файлов (5 на поставщика) → парсинг в браузере
→ нормализация в общую структуру (lib/nexus/replenishment/assemble.ts)
→ детерминированный расчёт (lib/nexus/replenishment/calculation.ts)
→ таблица рекомендаций по поставщикам
→ (опционально, по клику) LLM-обоснование через серверный API-роут
Весь расчёт выполняется в браузере пользователя — файлы не отправляются ни на какой сервер, парсинг и вычисления идут локально в JavaScript. Единственный сетевой запрос — опциональный вызов /api/replenishment/narrate, и только когда пользователь явно нажимает кнопку «Получить объяснение от ИИ» по конкретной строке; это осознанное архитектурное решение: секретный OPENAI_API_KEY не может присутствовать в клиентском коде, поэтому эта единственная функция реализована как серверный маршрут, а не как прямой вызов из браузера.
Формула пополнения:
target_position = сумма прогноза по будущим сезонным месяцам горизонта × рост + страховой_запас
current_position = max(0, остаток − резерв) + товар_в_пути_в_горизонте
рекомендуемый_заказ = max(0, target_position − current_position), округлено до кратности MOQ
4. Технологии и архитектура
- Стек: Next.js 15 / React 19 / TypeScript, без внешних UI-библиотек.
- Парсинг XLSX: библиотека
xlsx, весь разбор — в браузере (lib/nexus/replenishment/xlsxParsers.ts). - Расчёт: чистые детерминированные функции без побочных эффектов (
lib/nexus/replenishment/calculation.ts), 0 зависимостей от LLM — воспроизводимо и тестируемо байт в байт. - LLM-обоснование (опционально): OpenAI Responses API (
gpt-5-miniпо умолчанию,OPENAI_MODELпереопределяемо), серверный маршрутapp/api/replenishment/narrate, со строгой JSON-схемой ответа и явным fallback (никогда не 500-я ошибка) при отсутствии ключа/таймауте/некорректном ответе модели. - Границы клиент/сервер:
components/replenishment/ReplenishmentWorkspace.tsx— весь клиентский код (парсинг, расчёт, UI);app/api/replenishment/narrate/route.ts+lib/nexus/replenishment/narration.ts— единственное место, где на сервере используется API-ключ.
Этот кейс построен поверх переиспользуемой инфраструктуры (харнесс) — что именно унаследовано и что написано заново для этого кейса, см. раздел «Disclosure» ниже и приложение в конце файла.
5. Установка и запуск
Требуется Node.js (проверено на Node 24).
npm install
npm run dev
Открыть http://localhost:3000/replenishment.
Продакшен-сборка (именно так собирается деплой на Vercel):
npm run build
npm run start
6. Как проверить сценарий
- Открыть
/replenishment(локально или на живом деплое выше). - Для каждого из двух поставщиков загрузить соответствующие 5 файлов из
demo/data/replenishment/iek/иdemo/data/replenishment/systeme-electric/в поля с такими подписями: «Динамика продаж» →sales_transactions.xlsx, «Продажи по месяцам» →monthly_sales.xlsx, «Остатки по месяцам» →monthly_stock.xlsx, «Товар в пути» →inbound_shipments.xlsx(у IEK) /inbound_dashboard.xlsx(у Systeme Electric), «MOQ / кратность» →moq.xlsx. - Нажать «Рассчитать заказы →».
- При необходимости изменить срок поставки, период пересмотра, внешний прогноз или целевые уровни сервиса в блоке «Плановые допущения».
- Появится таблица по каждому поставщику: артикул, рекомендуемое количество, срочность, покрытие в месяцах. Раскрыть «Показать расчёт» у любой строки — видно полное числовое обоснование.
- После проверки скорректировать и подтвердить нужные позиции, затем скачать консолидированный PO CSV. Опционально нажать «Получить объяснение от ИИ» — требуется
OPENAI_API_KEY.
Это реальные данные партнёра (не синтетика) — с ними легко напрямую проверить каждый из 5 обязательных критериев (см. раздел 2).
7. Данные и интеграции
- Данные: реальные выгрузки партнёра (ТОО «Электрокомплект») по двум поставщикам — IEK и Systeme Electric, включены в репозиторий в
demo/data/replenishment/(это официальные материалы кейса, не синтетика; персональных данных клиентов в них нет — история продаж не содержит поля с идентификатором клиента вообще). - Внешние сервисы: OpenAI Responses API — опционально, только для текстового обоснования; сам расчёт не зависит от него ни в каком виде.
8. Известные ограничения
Честно, без приукрашивания:
- Нет поля «клиент» в истории продаж — вопреки исходному ТЗ, в реальных данных партнёра такого поля нет вообще. Детекция разовых крупных заказов работает по аномальному размеру отдельной транзакции, а не по привязке к конкретному клиенту.
- Нет явного индикатора дефицита (stockout) — ни в одном исходном файле такой отметки нет. Период дефицита выводится эвристически: месяц с остатком около нуля при ненулевом спросе в соседних месяцах.
- Нет источника срока поставки по SKU/поставщику в предоставленных файлах — используется явно показанное и редактируемое перед расчётом допущение (по умолчанию 2 месяца).
- Резервы под клиентов и категория товара есть только у Systeme Electric (в файле «Товар в пути») — у IEK такого источника нет, резерв по умолчанию 0, категория —
UNCLASSIFIEDс нейтральным уровнем сервиса 95%. - Внешний прогноз прироста спроса («прогноз по приросту» из ТЗ) не имеет отдельного источника данных от партнёра — по умолчанию 0 (полагаемся только на историческую сезонность и тренд), значение редактируется перед расчётом.
- Бюджет закупки и загрузка транспорта — не реализованы (не входили в обязательные требования кейса; в требованиях упоминались только MOQ/условия поставщика, что реализовано).
- LLM-обоснование — опциональное улучшение поверх уже вычисленного результата; при недоступности модели интерфейс молча остаётся на детерминированном тексте, который уже полностью удовлетворяет требованию «каждая строка сопровождается обоснованием» сам по себе.
9. Disclosure: что подготовлено до соревновательной части
Согласно Положению §6.4 (обязательное раскрытие использования ранее созданного кода) — этот проект построен поверх переиспользуемой, доменно-нейтральной инфраструктуры («харнесс»), подготовленной командой заранее с помощью Claude Code (AI-агент для разработки; разрешено согласно §6.9):
- Next.js-каркас приложения и конфигурация деплоя.
- Слой приёма данных: разбор CSV/XLSX (устойчивый к кавычкам, многолистовой, с учётом русских форматов дат, разделителей тысяч и локализованных заголовков) — общие утилиты, на которых также построен новый парсер XLSX-книг Электрокомплекта.
- Агентный паттерн (LLM выбирает/формулирует, никогда не вычисляет) и транспортный слой вызова LLM с таймаутами/ретраями/аудитом (
lib/nexus/agentic/llmRequest.ts) — переиспользован для опционального LLM-обоснования в этом кейсе. - Универсальный статистический движок и Domain Registry — не используются напрямую в расчёте этого кейса (задача не инвестигационная, а расчётная), но их код остаётся в репозитории как часть заявленного харнесса.
Никакой доменной бизнес-логики, датасета или решённого кейса в этой базе не было. Всё, что относится непосредственно к решению — парсинг реальных книг Электрокомплекта, нормализация данных, формула пополнения, сезонность, компенсация дефицита, исключение всплесков, страховой запас от волатильности, учёт резервов, страница /replenishment, LLM-обоснование — построено во время соревновательной части. Коммиты в этом репозитории с официального старта отражают эту работу.
10. Команда
Один участник.
Приложение: базовый харнесс (подготовлен заранее, раскрыт выше)
Ниже — краткое описание переиспользуемой инфраструктуры, на которой построен этот кейс. Она была спроектирована как доменно-нейтральный движок для расследования аномалий (LLM Investigator/Skeptic поверх детерминированной статистики) — терминология «risk investigation» ниже относится именно к этому базовому слою, а не к текущему кейсу пополнения склада, который является отдельным детерминированным расчётным модулем.
- Назначение движка: загруженный табличный датасет профилируется, маршрутизируется по форме данных (
TIME_SERIES/CROSS_SECTIONAL/EVENT_TRANSACTION/AMBIGUOUS_TABULAR), и по нему проводится ограниченное объяснимое расследование: LLM-Investigator выбирает, какой детерминированный инструмент запустить, каждый вызов возвращаетEvidenceRecord, LLM-Skeptic оспаривает гипотезу, отдельный валидатор независимо пересчитывает весь артефакт из сырых данных и сверяет хэш. Причинность никогда не устанавливается — только заявляется как гипотеза. - Инвариант: LLM решает, что проверить и как сформулировать вывод; детерминированный код считает каждое число. Валидатор никогда не доверяет заявленному агентом числу — только собственному пересчёту.
- Domain Registry (
lib/nexus/domains/) — словарные записи (без бизнес-логики) дляRETAIL,LOGISTICS,MANUFACTURING,MINING. - Живой маршрут расследования:
/investigate— доступен в этом репозитории как часть заявленного харнесса, но не является решением текущего кейса.
Полная документация базового харнесса: docs/methodology.md (статистика), docs/task-adaptation-harness.md (процедура адаптации под новую задачу).
Переменные окружения
OPENAI_API_KEY= # опционально; включает LLM-обоснование в /replenishment и живой агентный цикл в /investigate
OPENAI_MODEL= # опционально; по умолчанию gpt-5-mini
Без OPENAI_API_KEY приложение полностью работает — расчёт пополнения детерминирован и не зависит от LLM ни в каком виде; /investigate переходит на явно помеченный детерминированный fallback. .env.local никогда не коммитится (исключён через .gitignore).
Тесты и проверка
npm test # node --test lib/**/*.test.ts
npm run typecheck # tsc --noEmit
npm run lint # eslint .
npm run build # next build
Docker
Приложение запускается одним контейнером: Next.js одновременно раздаёт frontend и обслуживает API routes. База данных и дополнительные сервисы не требуются.
- При необходимости скопируйте
.env.exampleв.envи задайтеOPENAI_API_KEY. Ключ опционален: без него расчёт и детерминированные объяснения продолжают работать. - Соберите и запустите приложение:
docker compose up --build
Интерфейс будет доступен на http://localhost:3000, healthcheck — на http://localhost:3000/api/health. Для другого порта задайте NEXUS_PORT, например NEXUS_PORT=8080 docker compose up --build.
Переменные окружения:
OPENAI_API_KEY= # опционально, только для LLM-обоснования
OPENAI_MODEL= # опционально, по умолчанию gpt-5-mini
NEXUS_PORT= # опционально, внешний порт Docker Compose; по умолчанию 3000
Остановка:
docker compose down
Секреты не копируются в image и передаются контейнеру только во время запуска.
Vercel
Живой деплой уже развёрнут по ссылке в начале файла. Чтобы развернуть свою копию:
Вариант A — через Vercel CLI (не требует прав на этот GitHub-репозиторий):
npm install -g vercel
vercel login
vercel --prod --yes
Команда собирает и разворачивает текущую папку напрямую, без привязки к GitHub. После первого запуска добавьте переменную окружения (если нужен LLM):
vercel env add OPENAI_API_KEY production
и выполните vercel --prod --yes повторно, чтобы переменная подхватилась.
Вариант B — импорт репозитория через vercel.com:
New Project → Import Git Repository → выбрать этот репозиторий → Deploy. Next.js определяется автоматически, дополнительная настройка не требуется. OPENAI_API_KEY/OPENAI_MODEL — опционально, в Project Settings → Environment Variables.
Оба варианта разворачивают идентичное приложение — то же самое, что запускается локально (npm run dev) или в Docker.
Структура репозитория
app/replenishment/ Страница кейса: загрузка файлов, таблица рекомендаций
app/investigate/ Живой маршрут базового харнесса (не относится к текущему кейсу)
app/api/replenishment/narrate/ Серверный маршрут LLM-обоснования (единственное место с API-ключом)
components/replenishment/ UI кейса
lib/nexus/replenishment/ Парсинг, сборка входа, детерминированный расчёт, LLM-обоснование
demo/data/replenishment/ Реальные данные партнёра (IEK, Systeme Electric) для воспроизводимости
lib/engine/, lib/nexus/agentic/, lib/nexus/domains/, ... Базовый харнесс (см. приложение выше)
docs/ Методология и документация адаптации харнесса
Авторы коммитов
История коммитов
- 2026-09-23 17:43Add explicit Vercel deployment instructions to README, alongside DockerDamir Kamalutdinov
- 2026-09-23 17:40Fix stock source, seasonal forecast horizon, stockout and lifecycle logicDamir Kamalutdinov
- 2026-09-23 17:02Add Docker packaging for reliable one-command judge verificationDamir Kamalutdinov
- 2026-09-23 16:14Add days-of-supply, projected stockout gap, and dead/slow-stock protectionDamir Kamalutdinov
- 2026-09-23 16:07Redirect site root to /replenishment instead of the generic harness landing pageDamir Kamalutdinov
- 2026-09-23 15:56Document the growth-signal distinction and manager approve flow in READMEDamir Kamalutdinov
- 2026-09-23 15:54Distinguish sustained-growth signals from one-off spikes; add manager review/approve flowDamir Kamalutdinov
- 2026-09-23 15:42Write the final case README (Hour 4)Damir Kamalutdinov
Все коммиты (18)
- 2026-09-23 15:40Ignore .vercel/ (local Vercel CLI project-link metadata)Damir Kamalutdinov
- 2026-09-23 15:28Add optional LLM narration on top of the deterministic explanationDamir Kamalutdinov
- 2026-09-23 15:25Shorten demo data filenames to avoid Windows path-length clone failuresDamir Kamalutdinov
- 2026-09-23 14:50Wire the replenishment pipeline end-to-end and add /replenishment (Hour 3)Damir Kamalutdinov
- 2026-09-23 14:25Un-gitignore the partner's real case data — it's official ТЗ materialDamir Kamalutdinov
- 2026-09-23 14:08Add deterministic replenishment calculation module (Hour 2)Damir Kamalutdinov
- 2026-09-23 13:48Add XLSX parsers for the Elektrokomplekt replenishment case (Hour 1)Damir Kamalutdinov
- 2026-09-23 13:44Lightly adapt harness README sections toward the actual chosen caseDamir Kamalutdinov
- 2026-09-23 13:38Add case status/disclosure banner to README, drop stale "risk system" taglineDamir Kamalutdinov
- 2026-09-23 13:27Initial commit: reusable NEXUS harness (disclosed pre-existing preparation)Damir Kamalutdinov
Структура репозитория (193 файлов)
.dockerignore .env.example .gitignore AGENTS.md DEMO.md Dockerfile README.md app/api/health/route.ts app/api/investigate/preflight/route.ts app/api/investigate/route.ts app/api/replenishment/narrate/route.ts app/globals.css app/investigate/page.tsx app/layout.tsx app/page.tsx app/replenishment/page.tsx components/.gitkeep components/nexus/CircularCarousel.tsx components/nexus/CommandCenter.tsx components/nexus/workspace/AgentRuntimeTrace.tsx components/nexus/workspace/DecisionView.tsx components/nexus/workspace/InvestigationWorkspace.tsx components/nexus/workspace/ScenarioPanel.tsx components/nexus/workspace/SchemaResolutionPanel.tsx components/replenishment/ReplenishmentWorkspace.tsx components/replenishment/replenishment.module.css compose.yaml data/fintech_demo.json demo/data/replenishment/iek/inbound_shipments.xlsx demo/data/replenishment/iek/monthly_sales.xlsx demo/data/replenishment/iek/monthly_stock.xlsx demo/data/replenishment/iek/moq.xlsx demo/data/replenishment/iek/sales_transactions.xlsx demo/data/replenishment/iek/seasonality_reference.xlsx demo/data/replenishment/systeme-electric/inbound_dashboard.xlsx demo/data/replenishment/systeme-electric/monthly_sales.xlsx demo/data/replenishment/systeme-electric/monthly_stock.xlsx demo/data/replenishment/systeme-electric/moq.xlsx demo/data/replenishment/systeme-electric/sales_transactions.xlsx demo/data/replenishment/systeme-electric/seasonality_reference.xlsx docs/hackathon-checkpoint-plan.md docs/hackathon-disclosure-draft.md docs/hackathon-readme-template.md docs/hackathon-repro-checklist.md docs/methodology.md docs/scenario-tool-packs.md docs/task-adaptation-harness.md docs/task-adaptation-quickref.md eslint.config.mjs lib/engine/domainSimulation.ts lib/engine/inferentialStats.test.ts lib/engine/inferentialStats.ts lib/engine/statistics.ts lib/motionGuard.test.ts lib/namingGuard.test.ts lib/nexus/action/exportDecision.test.ts lib/nexus/action/exportDecision.ts lib/nexus/action/policy.ts lib/nexus/action/proposeAction.ts lib/nexus/action/timeSeriesAction.test.ts lib/nexus/action/types.ts lib/nexus/action/verificationParity.test.ts lib/nexus/action/verifiedImmutability.test.ts lib/nexus/adapters/generic/analyze.ts lib/nexus/agentic/autonomyV2.test.ts lib/nexus/agentic/boundedRuntime/runtime.test.ts lib/nexus/agentic/boundedRuntime/runtime.ts lib/nexus/agentic/callToolAudit.ts lib/nexus/agentic/hardeningStress.test.ts lib/nexus/agentic/investigator.ts lib/nexus/agentic/liveInvestigator.test.ts lib/nexus/agentic/liveInvestigator.ts lib/nexus/agentic/liveSkeptic.test.ts lib/nexus/agentic/liveSkeptic.ts lib/nexus/agentic/llmRequest.test.ts lib/nexus/agentic/llmRequest.ts lib/nexus/agentic/nextSteps.test.ts lib/nexus/agentic/nextSteps.ts lib/nexus/agentic/observer.ts lib/nexus/agentic/orchestrator.ts lib/nexus/agentic/precursorChain.test.ts lib/nexus/agentic/precursorChain.ts lib/nexus/agentic/resolveToolPack.ts lib/nexus/agentic/runtimePresentation.test.ts lib/nexus/agentic/skeptic.ts lib/nexus/agentic/timeSeriesEvidenceRefs.test.ts lib/nexus/agentic/toolPack.ts lib/nexus/agentic/toolRegistry.test.ts lib/nexus/agentic/toolRegistry.ts lib/nexus/agentic/types.ts lib/nexus/construction/dataset.ts lib/nexus/crossSectional/agents.test.ts lib/nexus/crossSectional/agents.ts lib/nexus/crossSectional/crossSectional.test.ts lib/nexus/crossSectional/evidence.ts lib/nexus/crossSectional/liveTools.ts lib/nexus/crossSectional/metadata.ts lib/nexus/crossSectional/tools.ts lib/nexus/crossSectional/types.ts lib/nexus/crossSectional/validator.ts lib/nexus/crossSectional/workflow.ts lib/nexus/demo/constructionTimeSeries.ts lib/nexus/demo/fintechDataset.ts lib/nexus/demo/fintechTimeSeries.ts lib/nexus/demo/scenarios.test.ts lib/nexus/demo/scenarios.ts lib/nexus/demo/syntheticIndustrial.ts lib/nexus/domains/logistics.ts lib/nexus/domains/manufacturing.ts lib/nexus/domains/metricAliases.ts lib/nexus/domains/metricVocabulary.ts lib/nexus/domains/mining.ts lib/nexus/domains/registry.test.ts lib/nexus/domains/registry.ts lib/nexus/domains/resolution.test.ts lib/nexus/domains/resolution.ts lib/nexus/domains/retail.ts lib/nexus/domains/schemaFixtures.ts lib/nexus/domains/schemaPresentation.test.ts lib/nexus/domains/schemaResolution.test.ts lib/nexus/domains/schemaResolution.ts lib/nexus/domains/semanticResolver.test.ts lib/nexus/domains/semanticResolver.ts lib/nexus/domains/structuralValidator.ts lib/nexus/domains/types.ts lib/nexus/eventTransaction/agents.ts lib/nexus/eventTransaction/eventTransaction.test.ts lib/nexus/eventTransaction/evidence.ts lib/nexus/eventTransaction/liveTools.ts lib/nexus/eventTransaction/tools.ts lib/nexus/eventTransaction/transactionJournal.test.ts lib/nexus/eventTransaction/types.ts lib/nexus/eventTransaction/validator.ts lib/nexus/eventTransaction/workflow.ts lib/nexus/healthRoute.test.ts lib/nexus/ingestion/csv.test.ts lib/nexus/ingestion/csv.ts lib/nexus/ingestion/normalizeTabularRows.test.ts lib/nexus/ingestion/normalizeTabularRows.ts lib/nexus/ingestion/numericSeries.test.ts lib/nexus/ingestion/numericSeries.ts lib/nexus/ingestion/profileDataset.ts lib/nexus/ingestion/sseLifecycle.test.ts lib/nexus/ingestion/types.ts lib/nexus/replenishment/assemble.test.ts lib/nexus/replenishment/assemble.ts lib/nexus/replenishment/calculation.test.ts lib/nexus/replenishment/calculation.ts lib/nexus/replenishment/narration.test.ts lib/nexus/replenishment/narration.ts lib/nexus/replenishment/types.ts lib/nexus/replenishment/xlsxParsers.test.ts lib/nexus/replenishment/xlsxParsers.ts lib/nexus/report/boundedList.test.ts lib/nexus/report/boundedList.ts lib/nexus/report/businessSummary.test.ts lib/nexus/report/businessSummary.ts lib/nexus/report/crossSectionalBusinessSummary.ts lib/nexus/report/displayLabels.test.ts lib/nexus/report/displayLabels.ts lib/nexus/report/eventTransactionBusinessSummary.ts lib/nexus/report/humanBusinessSummary.test.ts lib/nexus/report/interpretation.test.ts lib/nexus/report/interpretation.ts lib/nexus/report/investigationViewModel.ts lib/nexus/report/pdfReport.ts lib/nexus/report/reportModel.test.ts lib/nexus/report/reportModel.ts lib/nexus/report/scenarioPackage.ts lib/nexus/report/timeUnits.test.ts lib/nexus/report/timeUnits.ts lib/nexus/tasks/agentInstructions.test.ts lib/nexus/tasks/agentInstructions.ts lib/nexus/tasks/taskRegistry.test.ts lib/nexus/tasks/taskRegistry.ts lib/nexus/templates/domainToolPack.template.ts lib/nexus/timeSeries/validator.test.ts lib/nexus/timeSeries/validator.ts lib/nexus/universal/admission.test.ts lib/nexus/universal/admission.ts lib/nexus/universal/contracts.ts lib/nexus/universal/fixtures.ts lib/nexus/universal/headers.ts lib/nexus/universal/localizedHeaders.test.ts lib/nexus/universal/profile.ts lib/nexus/universal/workflow.ts lib/types.ts next-env.d.ts next.config.ts package-lock.json package.json public/.gitkeep tsconfig.json
Обсуждение 0 комментариев
Войдите, чтобы комментироватьПока нет комментариев — будьте первым.