media-service (C4 Level 3)
Ответственность
- Рендер PNG/WebP игрового поля
- Хранение URL в S3/MinIO
- Шаблоны для dice_board (сетка, фишки, подсветка)
Компоненты
flowchart TB
subgraph media [media-service]
API[Media API]
Renderer[Board Renderer]
TemplateEngine[Template Engine]
S3Client[S3 Client]
Cache[Render Cache]
end
API --> Renderer
Renderer --> TemplateEngine
Renderer --> Cache
Renderer --> S3Client
S3Client --> S3[(MinIO/S3)]
| Компонент | Описание |
|---|---|
| Board Renderer | Pillow / Cairo — 6×6 grid |
| Template Engine | Assets: cell, token colors, highlight |
| Render Cache | Hash(state) → skip re-render if same |
| S3 Client | Upload, presigned/public URL |
dice_board render input
{
"board": [[null, "p1", ...], ...],
"highlights": [[3, 5], [5, 3]],
"dice": [4, 2],
"current_player": "p1"
}
Output
- PNG 512×512 or 1024×1024
- WebP variant for web
- Max 1 MB (NFR-022)
FR
FR-006, FR-038, FR-039