--- id: 035 title: Generalize tariff_code to string identifier status: TODO created: 2026-05-30 --- ## Context Добавляется второй провайдер доставки CSE («Карго»), который идентифицирует тариф GUID-строкой. Текущие схемы и persistence используют числовой `tariff_code` (`int`), несовместимый с CSE. Требуется обобщить идентификатор тарифа до строки для обоих провайдеров. ## Goal Перевести `tariff_code` на строковый тип в API-схемах и в persistence, сохранив обратное поведение CDEK (числовой код передаётся как строка). ## Constraints - Не изменять бизнес-правила в `app/domain/`. - CDEK adapter должен формировать `tariff_code` как строку из своего числового кода. - Сохранить совместимость существующего init-payment контракта, кроме типа `tariff_code`. - Изменение типа колонки выполнить миграцией Alembic. - Не изменять файлы в `spec/`. ## Acceptance criteria - `DeliveryPrice.tariff_code: str | None`. - `SystemDataTariff.tariff_code: str` с непустым значением. - CDEK `mapper`/`order_mapper` корректно работают со строковым `tariff_code`. - Колонка `orders.tariff_code` имеет строковый тип; добавлена миграция. - Существующие тесты обновлены под строковый `tariff_code`. ## Definition of Done - [ ] Обновлены схемы `DeliveryPrice` и `SystemDataTariff`. - [ ] Обновлены CDEK мапперы. - [ ] Обновлены модель `Order` и миграция Alembic. - [ ] Затронутые тесты проходят. ## Tests - Обновить unit-тесты CDEK мапперов и схем. - Проверить миграцию на тестовой БД. ## Commands - `poetry run pytest -q`