14 Commits

Author SHA1 Message Date
Andrey Epifancev
acbc19c7eb fix(hub): импорт не затирает правки хаба пустыми ячейками CSV, весь импорт в транзакции
Пустая ячейка CSV не меняет существующее поле заметки; заметка без непустых полей не пишется,
но учитывается в счётчике как раньше. Импорт обёрнут в db.transaction (set_note — SAVEPOINT).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:29:08 +04:00
Andrey Epifancev
47495fa5db feat(hub): импорт CSV-пакета admin/jira-sync в заметки, сверка связей
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:26:06 +04:00
Andrey Epifancev
600163a9ee fix(hub): типы полей тела запроса дают 422, а не 500
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:23:00 +04:00
Andrey Epifancev
34d5714898 fix(hub): проверка Content-Length и предел тела, тик автообновления, узкая обработка ошибок, тесты долгого claim
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:19:54 +04:00
Andrey Epifancev
2558248dc9 feat(hub): HTTP API — маршруты агента и интерфейсов, токены, долгий claim, клиент
Соединение SQLite на запрос, сравнение токенов в постоянное время,
400 на битый JSON и нечисловые параметры.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:15:59 +04:00
Andrey Epifancev
68b73439a6 fix(hub): сбой резервной копии не блокирует выдачу, SAVEPOINT для вложенных транзакций, настоящий тест исключительной выдачи
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:12:38 +04:00
Andrey Epifancev
b41ab0ad25 feat(hub): очередь команд — пакеты, выдача, отчёты, отмена, сверка, автообновление, резервные копии
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:07:07 +04:00
Andrey Epifancev
f353d90ec6 feat(hub): вложенные транзакции присоединяются к внешней, db.utcnow и db.parse
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:07:07 +04:00
Andrey Epifancev
ccf519c9e7 fix(hub): подтверждение ensure_link с конфликтами и ensure_issue по автору и давности
check_confirmed для ensure_link: связь есть и нет конфликтов (другой тип между теми же задачами
или обратное направление любого типа). check_confirmed для ensure_issue: необязательный reporter,
сужает поиск по теме до задач этого автора. Тесты: конфликты, обратное направление при обоих
ключах в зеркале, давность 7 дней, фильтр по reporter, выбор самой новой из двух.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:03:59 +04:00
Andrey Epifancev
a19c1ca7e1 feat(hub): контракт команд — валидация, временные ключи, оценка, подтверждение по состоянию
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 22:00:08 +04:00
Andrey Epifancev
3394ddcf4c fix(hub): транзакции в set_note и rename_note, сохранение заметки при равных ключах
rename_note: при old_key == new_key ранний выход (DELETE раньше стирал единственную заметку);
DELETE и UPDATE выполняются в транзакции.
set_note: чтение, слияние и запись в одной транзакции (соединение общее для потоков).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:57:25 +04:00
Andrey Epifancev
e981d62620 feat(hub): зеркало задач, связи, служебные заметки
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:53:13 +04:00
Andrey Epifancev
f082541566 feat(hub): настройки, токены, init из config.example.json
Модуль settings: значения по умолчанию, версия настроек, защищённые ключи,
перенос проектных настроек из config.example.json (учётные данные остаются у агента).
Фикстура tests/fixtures/config.example.json — копия admin/jira-sync/config.example.json.
.pytest_cache/ добавлен в .gitignore.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:50:46 +04:00
Andrey Epifancev
81850783d4 feat(hub): скелет пакета, схема SQLite, транзакции
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014Typ5sXWNMFirr2va2uL8o
2026-10-11 21:41:00 +04:00