7ef138ba19
* [E59-2][@ant] feat(inter): InterFileStorage порт — типы, токен INTER_FILE_STORAGE и типизированные ошибки для универсального файлового хранилища контура кооператива * [E59-3][@ant] feat(controller): MinIO-адаптер InterFileStoragePort, реестр бакетов, @UseBucket/@InjectBucket декораторы и FileStorageInfrastructureModule с forRoot/forFeature; 36 unit-тестов на адаптер, реестр, декоратор и HMAC-подписание * [E59-4][@ant] feat(controller): HTTP-ручка GET /api/storage/:bucket/:key с HMAC-валидацией подписи и стримом из MinIO; fetchObjectForReadProxy на адаптере, controller registered в FileStorageInfrastructureModule.forRoot; 9 e2e-тестов через supertest на 200/403/404/502 * [E59-5][@ant] test(controller): integration suite против реального MinIO — 8 сценариев на полный цикл put/head/getReadUrl/GET/delete + ошибки лимитов/MIME/metadata + HMAC-роут 200/403/404; docker-compose рядом с тестами, npm run test:integration:file-storage с автодетектом доступности MinIO * [E59-6][@ant] feat(controller,compose): MinIO в dev docker-compose, env-валидация и FileStorageInfrastructureModule.forRoot в app.module — контроллер на старте идемпотентно создаёт бакет coop-<coopname>; integration-тесты проходят против MinIO из dev compose * [E59-6][@ant] docs(file-storage): краткий README для разработчиков расширений — пример @UseBucket/@InjectBucket/forFeature, операции, ошибки, env, как запускать тесты --------- Co-authored-by: coopops <coopos@coopenomics.world>
42 lines
2.1 KiB
Bash
42 lines
2.1 KiB
Bash
# Шаблон per-instance конфига. Скопируй в .env и подправь под свой инстанс.
|
||
#
|
||
# Зачем: docker-compose.yaml и boot-скрипты параметризованы — это
|
||
# позволяет держать несколько копий репо (mono-ai-1, mono-ai-2 ...) с
|
||
# полностью изолированной инфраструктурой и запускать их параллельно.
|
||
#
|
||
# Без .env compose поднимется с дефолтами (как у mono-ai-1).
|
||
# Дефолты ниже соответствуют первому инстансу — для второго и далее
|
||
# применяй смещение portов: offset = (INSTANCE_INDEX - 1) * 10.
|
||
|
||
# Индекс инстанса (1 = базовый, 2/3/... = параллельные копии).
|
||
INSTANCE_INDEX=1
|
||
|
||
# Имя docker compose проекта. Определяет префикс автогенерируемых
|
||
# имён контейнеров (mongo → <COMPOSE_PROJECT_NAME>-mongo-1).
|
||
# По умолчанию compose возьмёт имя папки — оставь как есть, если папка
|
||
# уже называется уникально (например, mono-ai-1).
|
||
COMPOSE_PROJECT_NAME=mono-ai-1
|
||
|
||
# Host-порты (для INSTANCE_INDEX=2 прибавь +10 к каждому, для =3 +20 и т.д.).
|
||
NODE_HTTP_PORT=8888
|
||
NODE_P2P_PORT=9876
|
||
NODE_HISTORY_PORT=8070
|
||
MONGO_HOST_PORT=27017
|
||
REDIS_HOST_PORT=6379
|
||
PG_HOST_PORT=5532
|
||
COOPBACK_HOST_PORT=2998
|
||
DESKTOP_HOST_PORT=2999
|
||
OPENSEARCH_HOST_PORT=9200
|
||
MINIO_HOST_PORT=9000
|
||
MINIO_CONSOLE_HOST_PORT=9001
|
||
|
||
# MinIO root credentials (только для локального dev; на prod подменяются плейбуком).
|
||
MINIO_ROOT_USER=minioadmin
|
||
MINIO_ROOT_PASSWORD=minioadmin
|
||
|
||
# URL для скриптов и кода, запускаемого с хоста (boot, networks.sh,
|
||
# preactivate.sh, health.ts). Должны соответствовать host-портам выше.
|
||
CHAIN_URL=http://127.0.0.1:8888
|
||
API_URL=http://127.0.0.1:2998/v1/graphql
|
||
MONGODB_URL=mongodb://127.0.0.1:27017
|