011 fix redis
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
---
|
||||
id: 011
|
||||
title: Migrate Redis repository client to aioredis
|
||||
status: DONE
|
||||
created: 2026-03-08
|
||||
---
|
||||
|
||||
## Context
|
||||
Текущая реализация кеш-репозитория использует клиент `redis`. Требуется перейти на `aioredis` для асинхронного доступа к Redis без изменения бизнес-поведения приложения.
|
||||
|
||||
## Goal
|
||||
Перевести слой Repository (`PriceCache`) и связанные точки инициализации/конфигурации на `aioredis`, сохранив существующий контракт репозитория и runtime-поведение кеша.
|
||||
|
||||
## Constraints
|
||||
- Изменения только в слоях Repository и инициализации зависимостей, необходимых для подключения клиента.
|
||||
- Не изменять бизнес-правила, Controller/API-контракты и оркестрацию Service.
|
||||
- SQL/внешний IO вне Repository и Adapter не добавлять.
|
||||
- Публичный интерфейс `PriceCache` (`get`, `set`, `invalidate`) должен остаться совместимым.
|
||||
- Не изменять файлы в `spec/` кроме этой задачи и сгенерированного `spec/index.md`.
|
||||
|
||||
## Acceptance criteria
|
||||
- В кодовой базе для Redis repository используется `aioredis` вместо `redis`.
|
||||
- Инициализация Redis-клиента и операции `get/set/invalidate` работают асинхронно через `aioredis`.
|
||||
- Поведение TTL и сериализации кеша не изменено относительно текущего контракта.
|
||||
- Конфигурация подключения к Redis продолжает читаться из секции `repository` YAML-конфига.
|
||||
- Ошибки подключения/операций Redis обрабатываются детерминированно в рамках текущего repository-контракта.
|
||||
|
||||
## Definition of Done
|
||||
- [ ] Обновлены зависимости проекта для использования `aioredis`.
|
||||
- [ ] Репозиторий кеша переведен на `aioredis` без изменения публичного интерфейса.
|
||||
- [ ] Обновлены/добавлены тесты репозитория для нового клиента.
|
||||
- [ ] Все релевантные тесты проходят.
|
||||
|
||||
## Tests
|
||||
- Обновить `tests/repositories/cache/test_redis_cache.py` под использование `aioredis`.
|
||||
- Добавить/обновить тесты на cache hit/miss, `set/get` roundtrip, `invalidate`, TTL expiration.
|
||||
- Добавить негативный тест на ошибку Redis-клиента при операции чтения или записи.
|
||||
|
||||
## Commands
|
||||
- `poetry run pytest tests/repositories/cache/test_redis_cache.py -q`
|
||||
- `poetry run pytest tests/services/test_aggregator.py -q`
|
||||
Reference in New Issue
Block a user