Добавить общий Storage-сервис данных

Новый сервис Deal.Storage (src/storage-service): gRPC Upload/
Download/Stat/Delete, определение типа контент-снифингом, MinIO-бэкенд,
токен-валидация через общий интерцептор. Контракт storage.proto в
Deal.Proto; sln сервиса; подключение в compose.dev и эндпоинт в core;
тесты (снифер + хост/токен).
This commit is contained in:
Rustam Khalimov
2026-09-11 14:33:43 +03:00
parent e1aebd1d78
commit 770dba7257
18 changed files with 1120 additions and 1 deletions
+28 -1
View File
@@ -1,7 +1,7 @@
# compose.dev.yml — dev-стек Дейла (этап 6, Task 20; Ruling 12).
#
# Полный стек: postgres + minio (хранилища), три автономных сервиса этапа 6
# (telegram-service :5101, ai-service :5102, ml-service :5103) и core (deal-api:
# (telegram-service :5101, ai-service :5102, ml-service :5103, storage-service :5104) и core (deal-api:
# HTTP :5080 + gRPC-ингресс :5082).
#
# Режимы интеграций core — флагами SERVICES__{ML,AI,TELEGRAM}__USELOCAL (Ruling 6):
@@ -88,6 +88,7 @@ services:
Services__Ml__Endpoint: http://ml-service:5103
Services__Ai__Endpoint: http://ai-service:5102
Services__Telegram__Endpoint: http://telegram-service:5101
Services__Storage__Endpoint: http://storage-service:5104
Storage__Minio__Endpoint: minio:9000
Storage__Minio__AccessKey: deal_minio
Storage__Minio__SecretKey: deal_minio_secret
@@ -186,6 +187,32 @@ services:
timeout: 3s
retries: 10
# storage-service — общий gRPC-сервис данных (вложения источников). Отдельный процесс, отдельное sln
# (src/storage-service/Deal.Storage.sln). Загрузка/выгрузка/стат/удаление объектов; тип объекта
# определяет сервис. Бэкенд — MinIO. Защита — общий service-token (DEAL_SERVICE_TOKEN).
storage-service:
build:
context: ..
dockerfile: src/storage-service/Deal.Storage/Dockerfile
container_name: deal-storage-service
environment:
GRPC_PORT: "5104"
DEAL_SERVICE_TOKEN: ${DEAL_SERVICE_TOKEN:-deal_dev_service_token}
DEAL_STORAGE_ENDPOINT: minio:9000
DEAL_STORAGE_ACCESS_KEY: deal_minio
DEAL_STORAGE_SECRET_KEY: deal_minio_secret
DEAL_STORAGE_BUCKET: deal-attachments
DEAL_STORAGE_SECURE: "false"
ports:
- "5104:5104"
depends_on:
- minio
healthcheck:
test: ["CMD", "/bin/grpc_health_probe", "-addr=localhost:5104"]
interval: 5s
timeout: 3s
retries: 10
# Prometheus (профиль observability, этап 12/пакет A) — сбор /metrics всех 4 процессов (:9464)
# внутри dev-сети. Подъём: docker compose -f deploy/compose.dev.yml --profile observability up -d.
# Конфиг — общий deploy/observability/prometheus.yml (те же имена сервисов и таргеты). UI — 9090.