chore(repo): дедуп formatAmount, пины образов, дефолты MinIO, доля any

Шаги 2.3 и 2.4 плана production-готовности:
- lib/format.ts formatAmount вместо 2 локальных копий
- пины тегов minio/rclone/ollama/traccar/pgvector + osrm по digest
- minioadmin без дефолта (env required, dev-подсказки в .env.example)
- 28 any в auto-transitions/shared типизированы из @shared/schema
- удалён _tablefield_orig.txt
- check/lint/build чисто, vitest 104/104
This commit is contained in:
2026-09-08 01:07:55 +03:00
parent 5750a3106f
commit 75ec0f25bb
12 changed files with 118 additions and 204 deletions

View File

@@ -43,7 +43,8 @@ services:
start_period: 10s
minio:
image: minio/minio:latest
# Тег запинен: совпадает с версией на продакшене (RELEASE.2025-09-07T16-13-09Z)
image: minio/minio:RELEASE.2025-09-07T16-13-09Z
profiles:
- with-minio
command: server /data --console-address :9001
@@ -51,7 +52,8 @@ services:
- "9000:9000" # S3 API (используется приложением)
- "9001:9001" # MinIO Web Console (http://localhost:9001)
environment:
MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:-minioadmin}
# Креды MinIO — только из .env, дефолтов нет: в production обязательно сменить minioadmin/minioadmin
MINIO_ROOT_USER: ${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required}
MINIO_ROOT_PASSWORD: ${MINIO_SECRET_KEY:?MINIO_SECRET_KEY is required}
volumes:
- minio_data:/data
@@ -64,7 +66,8 @@ services:
start_period: 15s
webdav:
image: rclone/rclone:latest
# Тег запинен: совпадает с версией на продакшене (rclone v1.74.0)
image: rclone/rclone:1.74.0
profiles:
- with-minio
entrypoint: /bin/sh
@@ -76,7 +79,7 @@ services:
--no-checksum
:s3:$${MINIO_BUCKET:-files}
--s3-provider=Minio
--s3-access-key-id=$${MINIO_ACCESS_KEY:-minioadmin}
--s3-access-key-id=$${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required}
--s3-secret-access-key=$${MINIO_SECRET_KEY}
--s3-endpoint=http://minio:9000
--s3-no-check-bucket"
@@ -85,7 +88,7 @@ services:
environment:
WEBDAV_USER: ${WEBDAV_USER:-admin}
WEBDAV_PASSWORD: ${WEBDAV_PASSWORD:-}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:-minioadmin}
MINIO_ACCESS_KEY: ${MINIO_ACCESS_KEY:?MINIO_ACCESS_KEY is required}
MINIO_SECRET_KEY: ${MINIO_SECRET_KEY:-}
MINIO_BUCKET: ${MINIO_BUCKET:-files}
restart: unless-stopped
@@ -94,7 +97,8 @@ services:
condition: service_healthy
ollama:
image: ollama/ollama:latest
# Тег запинен: совпадает с версией на продакшене (ollama 0.30.10)
image: ollama/ollama:0.30.10
profiles:
- with-ollama
ports:
@@ -138,7 +142,8 @@ services:
start_period: 30s
traccar:
image: traccar/traccar:latest
# Тег запинен: совпадает с версией на продакшене (traccar 6.15.2)
image: traccar/traccar:6.15.2
container_name: traccar
restart: unless-stopped
ports:
@@ -164,7 +169,9 @@ services:
# Map matching (привязка GPS-треков к дорогам) — OSRM, карта Приволжского округа.
# Только внутренняя Docker-сеть (приложение ходит по http://osrm:5000).
osrm:
image: osrm/osrm-backend:latest
# Пин по digest: тега v6.0.0 не существует, есть только latest
# (digest совпадает с образом на продакшене на момент пина)
image: osrm/osrm-backend:latest@sha256:af5d4a83fb90086a43b1ae2ca22872e6768766ad5fcbb07a29ff90ec644ee409
container_name: osrm
restart: unless-stopped
command: osrm-routed --algorithm mld /data/region.osrm