Срез 0: скелет scan-gateway — без фронта и БД, горячие папки local/smb, воркер NATS без JetStream, эмулятор ИС Сканирование #3

Merged
aep merged 68 commits from feat/1-slice-0-skeleton into main 2026-10-04 18:41:20 +03:00
3 changed files with 40 additions and 1 deletions
Showing only changes of commit d1bcff8f5c - Show all commits

18
.dockerignore Normal file
View File

@ -0,0 +1,18 @@
.git
.superpowers
.claude
.codegraph
openspec
docs
setup
**/__pycache__
**/*.pyc
**/.mypy_cache
**/.ruff_cache
**/.pytest_cache
# локальное окружение и горячие папки dev/тестов: в контейнер окружение приходит из compose
api/.venv
api/.env
api/.env.test
api/.hotfolder
api/.hotfolder-test

2
.gitignore vendored
View File

@ -323,7 +323,6 @@ dist
# Custom ignore
.DS_Store
docker-compose.yml
.dockerignore
.vscode
my_project_env
.cursorignore
@ -333,3 +332,4 @@ my_project_env
# scan-gateway: локальная горячая папка dev-режима
api/.hotfolder/
api/.hotfolder-test/

21
Dockerfile Normal file
View File

@ -0,0 +1,21 @@
# Образ scan-gateway для dev и `make check-full`. Контекст сборки — корень репозитория.
# Платформенные пакеты raisa_* (Nexus) в образ не ставятся — та же логика, что в `make venv`.
FROM python:3.11-slim
ENV PYTHONUNBUFFERED=1 \
PIP_DISABLE_PIP_VERSION_CHECK=1
WORKDIR /app/api
COPY api/requirements.txt ./requirements.txt
RUN grep -v '^raisa_' requirements.txt > /tmp/req.txt \
&& pip install --no-cache-dir -r /tmp/req.txt \
&& rm /tmp/req.txt
COPY api/ ./
EXPOSE 8000
# Шлюз. Эмулятор ИС Сканирование запускается из этого же образа командой `python -m src.scan_emulator`,
# которую compose задаёт через `command`.
CMD ["python", "run_server.py"]