Commit Graph

31 Commits

Author SHA1 Message Date
Тимур Городецкий 5f5f0e7f81 fix(ct):пофиксил дублирование позиций в таблице а также убрал добавление поставщика безКП в таблицу 2026-09-23 16:06:26 +05:00
Тимур Городецкий 64973a2232 fix(ct): поставщики без КП с шага 2 не попадают в таблицу сравнения
Они выводились на шаге 3 колонкой с нулевыми ценами, хотя сравнивать у них
нечего. Остаются в списке шага 2 и в «Не получены КП»; ручной ввод цен
сохранён за поставщиками, добавленными на самом шаге 3.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:56:14 +05:00
Тимур Городецкий e4b6582e3c feat(ct): выбор валюты у уже загруженных КП на шаге 2
После возврата с шага 3 очередь загрузки пуста, и КП, по умолчанию
сохранённое в тенге, нельзя было перевести в валюту без перезагрузки файла.
Теперь валюта меняется в «Загруженные КП»: обновляются supplier.currency
и пересчёт офферов в тенге; в режиме просмотра показывается код валюты.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:32:43 +05:00
Тимур Городецкий a45807f669 fix(ct): список загруженных КП пропадал при открытии СТ без сессии
Лукап offer в «Оценке поставщиков» смотрит на FileLeafRef библиотеки КП,
а SP не отдаёт такой лукап через REST (500), поэтому loadKpFilesForOffers
всегда возвращал пусто и «Загруженные КП» видел только автор в своей сессии.
Id файла теперь дублируется в числовое поле offerFileId и читается оттуда.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 15:30:36 +05:00
Тимур Городецкий adf3efeb64 feat(ct): выбор поставщика из базы данных на шаге СТ 2026-09-17 16:23:56 +05:00
Тимур Городецкий 7e403a8623 feat: извлекаю текст PDF через новый API 2026-09-16 15:01:04 +05:00
Тимур Городецкий b0c08bcc83 fix: финальные оповещения (oid/kps) + ленивая загрузка потребностей 2026-09-14 16:10:39 +05:00
Тимур Городецкий 0914c76e15 fix(ct): оповещения на финале+ починил загрузку по ссылке, сузил блок решения 2026-09-14 10:52:51 +05:00
Тимур Городецкий 37bc153b98 fix: перенес матрицу согласования для всех таблиц со списков на бэк 2026-09-11 16:55:21 +05:00
Тимур Городецкий a762c755fd style(kps): зеленый стиль выбранного поставщика как в СТ 2026-09-08 11:51:48 +05:00
Тимур Городецкий 5f45b7da20 fix(oid): оповещение об отклонении/согласовании (Step3 Teams-ссылка и Step4)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-04 11:13:50 +05:00
Тимур Городецкий 04faca37ae Revert "fix(oid): передаём статус СТ в поток оповещения (не читаем из SP)"
This reverts commit a3ffaf696a.
2026-09-04 09:55:39 +05:00
Тимур Городецкий 7b4382370d chore: версия 1.0.0.2
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-04 09:49:53 +05:00
Тимур Городецкий a3ffaf696a fix(oid): передаём статус СТ в поток оповещения (не читаем из SP)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-04 09:49:26 +05:00
Тимур Городецкий 6217135629 chore: поднять версию решения до 1.0.0.1 для деплоя правок
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 17:59:43 +05:00
Тимур Городецкий abe7cdbbc3 fix(oid): рекомендованный поставщик зелёным, как в СТ
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 16:42:41 +05:00
Тимур Городецкий e50eca4fd4 fix(oid): статус СТ до оповещения — на финале согласования шлём Согласована
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 16:34:33 +05:00
Тимур Городецкий fa47373d57 fix(oid): подсказки поиска в диалоге замены не обрезаются
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 16:15:03 +05:00
Тимур Городецкий 3a8d10a7f5 fix(ct): подсказки поиска в диалоге замены не обрезаются
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 15:09:54 +05:00
Тимур Городецкий 1e367f5fcc fix(ct): фиксируем порядок согласующих (order0) в SP при отправке
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 15:03:19 +05:00
Тимур Городецкий cc44f77975 fix(ct): статус СТ до оповещения и без ложной плашки Teams
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-03 14:26:38 +05:00
Тимур Городецкий 899b14b869 feat(oid): импорт работ из заявки на услуги на шаге 1
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 15:27:30 +05:00
Тимур Городецкий 9faff36ba2 feat(ct): карточка INCORE во вложениях СТ, кнопка только после согласования
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 15:27:21 +05:00
Тимур Городецкий f615ca3c95 fix: наезд подзаголовков таблицы сравнения на первую строку
Второй ряд шапки (Наименование ТМЦ/Ед.изм./Кол-во/Цена/Сумма) прибит
sticky с захардкоженным top:70px, а реальная высота ряда поставщика больше
(имя, индикатор Adata, теги валют, статус, кнопки) — из-за чего подзаголовки
наезжали на первую строку данных.

Высота row1 теперь измеряется через ResizeObserver и прокидывается в CSS
переменную --header-row1-h; sticky top использует её. Обновляется при
выборе поставщика, появлении тегов валют и изменении состояния Adata.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 11:38:58 +05:00
Тимур Городецкий 158c007c15 feat: подписание пакета INCORE через NCALayer и карточку SIGEX
Кнопка «Выгрузить пакет документов для INCORE MANAGEMENT» на шаге 4 теперь
не просто скачивает отчёт, а формирует юридически значимую карточку
электронного документа (DDC) с ЭЦП инициатора.

Флоу: отчёт СТ в PDF → подпись через десктопный NCALayer (CMS) →
регистрация в SIGEX (POST /api) → фиксация хэша (POST /api/{id}/data) →
сборка карточки (POST /api/{id}/buildDDC, qrWithIDLink=true) → карточка
с QR-проверкой скачивается в пакет вместе с файлами КП.

- Новый SigexSignService: NCALayer basicsSignCMS + SIGEX register/finalize/
  buildDDC + оркестратор signAndBuildCard с колбэком прогресса.
- CtService: getCtReportBlob() (blob вместо скачивания) + downloadBlob().
- useStep4Approval/Step4Approval: прогресс-диалог по этапам подписания
  и диалог ошибки; отмена в окне NCALayer не считается ошибкой.
- ncalayer-js-client + ambient-типы (src/global.d.ts).

Подписывает только инициатор, только через NCALayer (без eGov mobile/QR).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 11:38:00 +05:00
Тимур Городецкий c1a5c6fde7 fix: сохранение данных шагов 2 и 4 при навигации хлебными крошками
Навигация через goToStep (хлебные крошки) переключает шаг, не вызывая
per-step save, поэтому локальный стейт, который писался в formData только
по кнопке «Сохранить и продолжить», терялся при переходе на другой шаг.

- Шаг 2: поставщики без КП теперь гидратируются из formData и пишутся
  в formData.suppliers сразу при изменении (а не только в persistStep2).
- Шаг 2: курсы валют пишутся в formData при каждой правке.
- Шаг 2: поставщик с КП и его офферы (с валютой файла) пишутся в formData
  инкрементально при завершении обработки КП, иначе загруженный после
  первого сохранения поставщик не попадал колонкой в таблицу шага 3.
  Построение поставщиков/офферов вынесено в общую buildKpSuppliersAndOffers.
- Шаг 4: переупорядочивание согласующих (moveMember) пишет порядок
  в formData сразу, иначе он сбрасывался при переходе на другой шаг.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-02 11:37:20 +05:00
Тимур Городецкий 5c9392fe49 feat: добавил базу контрагентов CRUD 2026-09-01 11:25:23 +05:00
Тимур Городецкий 00a0eb6ce7 feat(ct): интеграция Adata и выбор рекомендованного поставщика по формуле 80/20 2026-08-31 17:48:22 +05:00
Тимур Городецкий 109053e3af объединение CT, KPS, OID и дашборда в один портал
Перенос, декомпозиция и перекраска форм CT/KPS/OID на @tnsu/ui-kit,
config-driven дашборд-реестр по трём типам документов. Из отслеживания
исключены артефакты сборки (lib-commonjs/jest-output/release) — забыты
в .gitignore ранее.
2026-08-28 16:21:34 +05:00
Тимур Городецкий baf8fa357d объединение омтс, кпс, оид и дашборд в один проект 2026-08-28 16:08:02 +05:00
Тимур Городецкий 31ef6fdbb9 feat: config-driven реестр на реальных данных SP 2026-08-17 11:23:57 +05:00