S03: добавить файловый storage adapter для chat #16

Open
opened 2026-04-07 16:39:05 +00:00 by gglamer · 0 comments
Owner

Контекст

Спринту 01 нужен filesystem-backed storage adapter для chat directories и file operations. Только этот слой должен знать, как chat layout маппится в пути на диске.

Цель

Реализовать filesystem storage adapter для:

  • создания chat directory
  • lifecycle history.md
  • attachment save/read/list/delete/clear
  • безопасного path resolution для download

В scope

  • создание chat directory layout
  • создание history.md при инициализации чата
  • enforcement правил безопасных attachment names и reserved-name policy
  • file save/read/delete/clear
  • file metadata extraction или resolution, нужные outer layers
  • focused adapter tests

Вне scope

  • HTTP endpoint behavior
  • quota usecase logic
  • metadata repositories
  • durable DB

Ограничения

  • filesystem details остаются только во внешнем слое
  • нельзя трактовать history.md как обычный attachment
  • нельзя пропускать path-like или unsafe attachment names
  • adapter должен оставаться thin и explicit

Критерии приемки

  • chat directory создается предсказуемо для конкретного чата
  • history.md создается один раз как структурное состояние чата
  • attachment operations не удаляют и не перезаписывают history.md
  • path handling безопасный и детерминированный
  • добавлены focused adapter tests
  • проходит make typecheck

Предполагаемые файлы

  • storage adapter file во внешнем слое, например adapter/storage/chat_fs.py
  • focused tests в test/*

Зависимости

  • зависит от S01 storage contracts
  • в линейной очереди идет после S02
  • блокирует S04, S05, S06 и S07

Ветки

  • Ветка-основание: feat/storage-s02-in-memory-metadata-repositories
  • Новая ветка: feat/storage-s03-chat-filesystem-storage
## Контекст Спринту 01 нужен filesystem-backed storage adapter для chat directories и file operations. Только этот слой должен знать, как chat layout маппится в пути на диске. ## Цель Реализовать filesystem storage adapter для: - создания chat directory - lifecycle `history.md` - attachment save/read/list/delete/clear - безопасного path resolution для download ## В scope - создание chat directory layout - создание `history.md` при инициализации чата - enforcement правил безопасных attachment names и reserved-name policy - file save/read/delete/clear - file metadata extraction или resolution, нужные outer layers - focused adapter tests ## Вне scope - HTTP endpoint behavior - quota usecase logic - metadata repositories - durable DB ## Ограничения - filesystem details остаются только во внешнем слое - нельзя трактовать `history.md` как обычный attachment - нельзя пропускать path-like или unsafe attachment names - adapter должен оставаться thin и explicit ## Критерии приемки - chat directory создается предсказуемо для конкретного чата - `history.md` создается один раз как структурное состояние чата - attachment operations не удаляют и не перезаписывают `history.md` - path handling безопасный и детерминированный - добавлены focused adapter tests - проходит `make typecheck` ## Предполагаемые файлы - storage adapter file во внешнем слое, например `adapter/storage/chat_fs.py` - focused tests в `test/*` ## Зависимости - зависит от S01 storage contracts - в линейной очереди идет после S02 - блокирует S04, S05, S06 и S07 ## Ветки - Ветка-основание: `feat/storage-s02-in-memory-metadata-repositories` - Новая ветка: `feat/storage-s03-chat-filesystem-storage`
gglamer changed title from S03: add chat filesystem storage adapter to S03: добавить файловый storage adapter для chat 2026-04-07 16:43:18 +00:00
blaze was assigned by gglamer 2026-04-07 16:46:35 +00:00
gglamer added this to the Tasks project 2026-04-07 16:46:38 +00:00
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: platform/master#16
No description provided.