5 Commits

Author SHA1 Message Date
Andrey Epifancev
b1d0186c77 Зависимости под контур: PyJWT 2.8.0, cryptography 43.0.3; JwksVerifier без PyJWK в decode (#43)
- requirements: PyJWT[crypto]==2.8.0, cryptography==43.0.3 (dev согласован)
- JwksVerifier: в decode передаётся signing_key.key, алгоритм выводится из типа ключа
  (_algorithms_for_key: RSA -> RS256, EC P-256 -> ES256), как для AUTH_PUBLIC_KEY
- DevHs256Verifier: TypeError/ValueError от PyJWT 2.8 (нечисловой exp) -> AuthError, не 500
- тест: RSA-ключ из JWKS + ES256-токен (и наоборот) -> AuthError

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01EAKRDNzXtRrwmWz9z6PZu3
2026-10-07 18:38:48 +04:00
Andrey Epifancev
df8a5285bb feat(domain): ядро импорта справочников из выгрузки ЕЦП (§13.1–13.2)
- domain/directory_import.py: read_rows (xlsx первый лист / csv UTF-8 `;`/`,`,
  заголовки по нормализованному тексту, MISSING_COLUMNS / UNSUPPORTED_FILE),
  plan_import — чистая функция: операции плана и отчёт с кодами §13.2,
  ASSUMPTION(OQ-87..91); ИНН — через domain/inn.py.
- openpyxl==3.1.5 (+ et_xmlfile==2.0.0) в requirements.txt,
  types-openpyxl в requirements-dev.txt.
- Тесты без БД: нормализация, чтение csv/xlsx (Review Focus 1–3), каждый код
  §13.2, skip/update, фикстура «Русский Бисквит» (ФЛ в строке 12 → UNSUPPORTED_TYPE).
- План фазы 2: Task 9 отмечена; tasks.md 3.1.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012vJkmBGKKqMoEMzvsXG3y2
2026-10-04 22:29:52 +04:00
Andrey Epifancev
d7469f31bc chore: зафиксирована версия cryptography в requirements.txt (R-18c)
auth.py импортирует cryptography напрямую, а requirements.txt — полный freeze.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 22:01:33 +04:00
Andrey Epifancev
70b47a097d feat: ядро аутентификации (Claims, TokenVerifier, DevHs256Verifier, JwksVerifier, build_verifier)
Dev HS256 включается только при AUTH_DEV_ISSUER и DEBUG одновременно; РАИСА — RS256/ES256 по
публичному ключу или JWKS с кэшем. PyJWT[crypto] добавлен в requirements.txt как прод-зависимость.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-03 21:51:51 +04:00
Andrey Epifancev
ba922225ab chore: каркас из шаблона команды (DKB_ARMKA@ba172f8, доменный код удалён) 2026-10-02 23:15:37 +04:00