6.7 KiB
6.7 KiB
aigw-project/
└── src/
└── tenera_etl/ # следует использовать своё название
├── api/
│ ├── v1/
│ │ ├── __init__.py
│ │ ├── router.py
│ │ ├── schemas.py # pydantic models
│ │ ├── service.py
│ │ ├── models.py # db models, data classes, named tuples
│ │ ├── exceptions.py
│ │ └── utils.py
│ ├── __init__.py
│ ├── middleware.py
│ ├── os_router.py # роутер для health и status endpoints
│ ├── metric_router.py # !BETA! роутер для оценки сервиса
│ └── schemas.py # валидация endpoint-ов из os_router и metric_router
├── interfaces/ # интерфейсы для подключения к внешним AC
├── logger/
│ ├── __init__.py
│ ├── context_vars.py # управление контекстом запросов для логирования
│ ├── logger.py # реализация логгера
│ ├── models.py # модели логов, метрик, событий аудита
│ ├── utils.py # функции + маскирование args
│ └── uvicorn_logging_config.py # конфигурация логирования uvicorn
├── __main__.py
├── base.py
├── config.py # global configs
├── exceptions.py # global exceptions
└── context.py
├── tests/
│ └── integration_tests/
│ ├── fixtures/
│ │ └── fixture_*.py
│ ├── conftest.py
│ ├── gigachat_interface/ # тесты интерфейсов (на GigaController)
│ │ └── test_gptchat_*.py
│ └── v1_api/
│ ├── constants.py
│ ├── test_service.py # тесты бизнес-логики
│ └── test_service_*.py
├── app.sh # запуск в OpenShift, содержит tool.poetry.scripts
├── Dockerfile # основной Dockerfile
├── Dockerfile-k8s # локальный Docker
├── pyproject.toml
├── poetry.lock
├── .env # переменные окружения
└── .gitignore
📁 Назначение ключевых файлов
src/tenera_etl/
| Файл | Назначение |
|---|---|
__main__.py |
Точка входа. Запускает FastAPI-приложение. |
config.py |
Загрузка и обработка переменных окружения. |
base.py |
Базовые классы и типы, переиспользуемые в проекте. |
context.py |
Реализация паттерна AppContext - единая точка доступа к зависимостям. |
src/tenera_etl/logger/
| Файл | Назначение |
|---|---|
context_vars.py |
Контекстные переменные для логирования (Request-ID и др.). ⚠️ Не редактировать. |
logger.py |
Основной логгер приложения. ⚠️ Не редактировать. |
models.py |
Модели логов, метрик, аудита. ⚠️ Не редактировать. |
utils.py |
Утилиты логгера, включая маскирование данных. |
uvicorn_logging_config.py |
Конфигурация логгирования uvicorn. |
src/tenera_etl/api/
| Файл | Назначение |
|---|---|
__init__.py |
Конфигуратор FastAPI - регистрация версий и роутов. |
os_router.py |
Инфраструктурные endpoint'ы (/health, /status). ⚠️ Не редактировать. |
metric_router.py |
Метрики (BETA). ⚠️ Не редактировать. |
schemas.py |
Схемы (Pydantic) для os_router и metric_router. ⚠️ Не редактировать. |
middleware.py |
Мидлвар для логирования входящих и исходящих запросов. ⚠️ Не редактировать. |
src/tenera_etl/api/v1/
| Файл | Назначение |
|---|---|
router.py |
Основные endpoint'ы бизнес-логики (v1). |
schemas.py |
Pydantic-схемы запросов и ответов. |
models.py |
Модели данных (DB, классы, namedtuples). |
service.py |
Реализация бизнес-логики. |
utils.py |
Утилиты и вспомогательные функции. |
exceptions.py |
Исключения (RestNotFound, InvalidUserData, и др.). |
src/tenera_etl/interfaces/
| Файл / Папка | Назначение |
|---|---|
| всё содержимое | Интерфейсы взаимодействия с внешними системами (АС и пр.). |
Пример логирования в коде:
from tenera_etl.logger import logger
logger.info("End processing user registration request")
⚠️ Не передавайте в logger.info(...) ничего, кроме строки - она будет записана в поле message.
Маскирование чувствительных данных
В файле logger/utils.py реализовано маскирование:
все поля, содержащие ключевые слова вроде password, token, secret, будут скрыты;
работает автоматически, но вы можете конфигурировать список слов и правила.
Перед добавлением кастомной маскировки - ознакомьтесь с документацией, чтобы избежать утечки данных.