Files
Bridge-and-Join-s/deploy/docker-compose/docker-compose.yml
T
fontvielle ee642e5eaa feat(m2mcore): PgRepository через pgx + интеграция в lk-gateway
PostgreSQL-репозиторий для m2m_core.deals — реальное хранилище сделок
вместо in-memory. Выбор Repository происходит автоматически в
lkgateway.NewServer: если в runtime-конфиге задан Postgres DSN, поднимается
pgxpool и используется PostgresRepository; иначе fallback на MemoryRepository.

internal/m2mcore/pgrepo.go:
- PostgresRepository: Create (идемпотентный по guid через ON CONFLICT DO NOTHING),
  GetByGUID, GetByID, Update, List (с фильтрами state/investor/created_*),
  AppendEvent для журнала deal_events
- request_xml/response_xml/decision_xml хранятся как windows-1251 XML через nsdxml,
  на чтении парсятся обратно в m2m.M2M* структуры
- stages — jsonb с историей FSM-переходов

migrations/m2m-core/002__stages.sql:
- ALTER TABLE deals ADD COLUMN stages jsonb DEFAULT '[]'

internal/lkgateway/server.go:
- При NewServer проверяется runtime-config: если есть DSN → PostgresRepository,
  иначе MemoryRepository; ошибка подключения логируется с fallback на in-memory
- Тесты используют tempdir SetupPath для изоляции от реальной БД

internal/lkgateway/setup.go:
- tryPingPostgres переписан с database/sql (требует регистрации драйвера)
  на pgx.Connect — теперь форма /admin/setup/postgres реально проверяет
  подключение перед сохранением DSN

Проверено сквозным smoke-тестом: введение DSN через UI →
сохранение в ~/.bj/setup.json → перезапуск lk-gateway → лог
"PostgresRepository подключён (m2m_core.deals)" → сделки реально пишутся
в БД.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 13:43:49 +03:00

52 lines
1.5 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
version: "3.9"
# Локальный стек разработки и тестирования.
# В прод-среде сервисы поднимаются через systemd-юниты или podman-compose
# с production-overlay. Здесь — dev-конфиг с минимальными настройками
# и без секретов.
services:
postgres:
image: docker.io/library/postgres:16
# В проде заменить на postgrespro/std-16 или registry.postgrespro.ru/pgpro/...
container_name: bj-postgres
environment:
POSTGRES_USER: bj
POSTGRES_PASSWORD: bj_dev
POSTGRES_DB: bj
ports:
- "127.0.0.1:5432:5432"
volumes:
- bj-postgres-data:/var/lib/postgresql/data
minio:
image: docker.io/minio/minio:latest
container_name: bj-minio
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: bj
MINIO_ROOT_PASSWORD: bj_dev_minio
ports:
- "127.0.0.1:9000:9000"
- "127.0.0.1:9001:9001"
volumes:
- bj-minio-data:/data
crypto-service:
build:
context: ../../services/crypto-service
dockerfile: Dockerfile
container_name: bj-crypto-service
environment:
BJ_CRYPTO_SOCKET: /run/bj/crypto.sock
BJ_CRYPTO_PROVIDER: stub
volumes:
# UDS-сокет наружу как named volume, чтобы Go-сервисы
# (m2m-core, lk-gateway, nsd-adapter) могли его mount'ить.
- bj-crypto-sock:/run/bj
volumes:
bj-postgres-data:
bj-minio-data:
bj-crypto-sock: