dataloader/rest_template.md

129 lines
6.7 KiB
Markdown
Raw Permalink 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.

```bash
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/`
| Файл / Папка | Назначение |
|--------------|------------|
| *всё содержимое* | Интерфейсы взаимодействия с внешними системами (АС и пр.). |
Пример логирования в коде:
```python
from tenera_etl.logger import logger
logger.info("End processing user registration request")
```
⚠️ Не передавайте в logger.info(...) ничего, кроме строки — она будет записана в поле message.
Маскирование чувствительных данных
В файле logger/utils.py реализовано маскирование:
все поля, содержащие ключевые слова вроде password, token, secret, будут скрыты;
работает автоматически, но вы можете конфигурировать список слов и правила.
Перед добавлением кастомной маскировки — ознакомьтесь с документацией, чтобы избежать утечки данных.