Ты в роли профессионального backend разработчика с навыками в проектировании и системной аналитике. Твоя задача составить документ для реализации API сервиса MSM по описанию ниже. В документе должно бтыь минимум кода.
```
# Техническое задание на разработку системы для хранения информации о поверках средств измерений

## 1. Общее описание и цели проекта

### 1.1. Цель проекта
Разработка системы для автоматизации процессов регистрации, учета и хранения информации о поверках средств измерений (СИ), выпущенных предприятием, с возможностью интеграции с ФГИС "АРШИН" и внутренней PDM-системой.

### 1.2. Назначение системы
- Автоматизация работы с заявками на поверку средств измерений
- Регистрация и хранение данных о проведенных поверках
- Отслеживание статусов поверок
- Взаимодействие с ФГИС "АРШИН" для выгрузки результатов поверок
- Исключение ошибок при внесении данных о поверках
- Сбор и хранение информации об эталонных средствах измерений

### 1.3. Пользователи системы
- Администратор – полный доступ ко всем функциям системы
- Метролог/поверитель – проведение поверок, создание заявок, доступ только к своим данным

## 2. Функциональные требования

### 2.1. Управление средствами измерений (СИ)
- Регистрация СИ, получаемых из PDM-системы
- Хранение информации о СИ (тип, серийный номер, модификация и т.д.)
- Отслеживание статуса СИ (новое, в поверке, поверено, забраковано)
- Отображение истории поверок для каждого СИ
- Отображение информации об актуальной поверке СИ

### 2.2. Управление заявками на поверку
- Создание заявок на поверку СИ
- Отслеживание статуса заявок
- Регистрация входного контроля СИ
- Планирование даты проведения поверки
- Указание адреса доставки/отправки
- Выделение заявок с приближающимися дедлайнами

### 2.3. Проведение поверок
- Регистрация результатов поверок для различных типов СИ
- Фиксация использованных эталонных средств измерений
- Запись условий проведения поверки (температура, давление, влажность)
- Регистрация положительных и отрицательных результатов
- Фиксация специфичных для LPIT параметров поверки:
  - Номинальная нагрузка
  - Калибровочные коэффициенты по току и напряжению
  - Фазовые коэффициенты
  - Результаты тестов (HV-тест, изоляция, ток, напряжение)

### 2.4. Управление эталонными средствами измерений
- Регистрация эталонных СИ с указанием их типа
- Отслеживание сроков действия поверок эталонных СИ
- Указание области применимости эталонов (для каких типов СИ подходят)
- Хранение информации о поверках эталонных СИ

### 2.5. Интеграция с ФГИС "АРШИН"
- Формирование данных для выгрузки в АРШИН
- Генерация XML-файлов по установленному формату
- Выгрузка данных о поверках через API АРШИН
- Получение данных из АРШИН (номера документов поверки и т.д.)
- Отслеживание статуса выгрузки в АРШИН
- Фиксация номера и даты документа поверки из АРШИН

### 2.6. Отчетность
- Формирование отчетов о проведенных поверках
- Статистика по типам СИ и результатам поверок
- Выгрузка данных в форматах XML, Excel
- Отчеты по плановым и выполненным поверкам

## 3. Нефункциональные требования

### 3.1. Производительность
- Система должна поддерживать одновременную работу необходимого количества пользователей
- Время отклика системы при выполнении основных операций не должно превышать 2 секунды
- Система должна обеспечивать обработку пиковых нагрузок в период массовых поверок

### 3.2. Масштабируемость
- Архитектура должна предусматривать возможность горизонтального масштабирования
- Система должна поддерживать добавление новых типов СИ (например, PSU) без изменения архитектуры

### 3.3. Надежность
- Обеспечение отказоустойчивости при сбоях внешних систем
- Механизм восстановления прерванных операций
- Регулярное резервное копирование данных

### 3.4. Безопасность
- Аутентификация пользователей через Keycloak
- Разграничение прав доступа по ролям
- Аудит действий пользователей с фиксацией ключевых операций
- Защита от основных типов атак (XSS, CSRF, SQL Injection)
- Шифрование чувствительных данных

### 3.5. Технологический стек
- Backend: Python, FastAPI, SQLAlchemy 2.0
- База данных: PostgreSQL
- Асинхронная обработка запросов
- Интеграция с шиной данных/очередью сообщений для получения данных из PDM

## 4. Модель данных

### 4.1. Основные сущности

#### 4.1.1. MeasurementInstrumentType (Тип средства измерения)
- id - первичный ключ
- mi_type_number - номер из государственного реестра средств измерений
- mi_type_name - наименование типа
- doc_title - методика поверки

#### 4.1.2. MeasurementInstrument (Средство измерения)
- id - первичный ключ
- entity_type_id - тип измерительного устройства (LPIT, PSU и т.д.)
- pdm_id - идентификатор в PDM-системе
- mi_type_id - тип средства измерения
- verif_res_id - актуальная проведенная поверка

#### 4.1.3. ReferenceInstrument (Эталонное средство измерения)
- id - первичный ключ
- suitable_type_id - тип СИ, для которого подходит эталон
- mi_type_id - тип эталонного средства измерения
- verification_num - номер поверки
- verification_date - дата поверки
- verification_valid_date - дата окончания действия поверки

#### 4.1.4. VerificationResult (Результат поверки)
- id - первичный ключ
- prev_id - ссылка на предыдущую поверку
- verification_num - номер поверки
- verification_date - дата поверки
- verification_valid_date - дата до которой действительна поверка
- sign_pass - наличие знака поверки в паспорте
- sign_mi - наличие знака поверки на СИ
- mi_owner_id - владелец СИ
- metrologist_id - метролог, проводивший поверку
- verification_type_id - тип поверки
- test_bench_id - испытательный стенд
- mi_reference_id - использованное эталонное СИ
- arshin_uploaded - статус выгрузки в АРШИН
- arshin_upload_date - дата выгрузки в АРШИН
- arshin_document_number - номер документа в АРШИН

#### 4.1.5. LpitVerificationRecord (Запись о поверке LPIT)
- id - первичный ключ
- rated_burden_cv - номинальная нагрузка
- acf_current - калибровочный коэффициент по току
- pcf_current - фазовый коэффициент по току
- acf_voltage - калибровочный коэффициент по напряжению
- pcf_voltage - фазовый коэффициент по напряжению
- result_hv_test - результат HV-теста
- result_insulation_test - результат теста изоляции
- current_tests - значения проведенных испытаний по току
- voltage_tests - значения проведенных испытаний по напряжению
- result_current_tests - результат испытаний по току
- result_voltage_tests - результат испытаний по напряжению
- temperature - температура при проведении
- pressure - давление при проведении
- humidity - влажность при проведении

#### 4.1.6. Metrologist (Метролог)
- id - первичный ключ
- sign_cipher - условный шифр знака поверки
- lastname - фамилия
- firstname - имя
- snils - СНИЛС

#### 4.1.7. VerificationType (Тип поверки)
- name - наименование (Первичная, Очередная, Внеочередная)

#### 4.1.8. TestBench (Испытательный стенд)
- id - первичный ключ
- name - наименование
- serial_number - серийный номер

#### 4.1.9. MIAcceptance (Заявка на поверку)
- id - первичный ключ
- mi_instance_id - средство измерения
- acceptance_number - номер заявки
- acceptance_date - дата заявки
- pass_entry_control - пройден ли входной контроль
- transfer_date - дата передачи/отправки
- shipping_address - адрес доставки

#### 4.1.10. User (Пользователь)
- id - первичный ключ
- username - имя пользователя
- email - электронная почта
- role - роль (администратор, метролог)
- keycloak_id - идентификатор пользователя в Keycloak

#### 4.1.11. AuditLog (Журнал аудита)
- id - первичный ключ
- user_id - пользователь, выполнивший действие
- action_type - тип действия
- entity_type - тип сущности
- entity_id - идентификатор сущности
- timestamp - время действия
- details - детали действия (JSON)

## 5. Бизнес-процессы

### 5.1. Регистрация нового СИ
1. Создание записи о СИ в PDM-системе
2. Передача данных через шину данных/очередь сообщений в MSM
3. Создание записи о новом СИ в MSM
4. Уведомление о создании нового СИ

### 5.2. Создание заявки на поверку
1. Выбор СИ из списка
2. Ввод данных заявки (номер, дата, адрес доставки)
3. Отметка о прохождении входного контроля
4. Сохранение заявки

### 5.3. Проведение поверки
1. Выбор заявки на поверку
2. Выбор эталонных СИ и испытательного стенда
3. Проведение измерений и испытаний
4. Ввод результатов поверки
5. Установка статуса поверки (пройдена/не пройдена)
6. Сохранение результатов поверки
7. Обновление статуса СИ

### 5.4. Выгрузка данных в АРШИН
1. Выбор поверок для выгрузки
2. Формирование XML-файла
3. Отправка данных в АРШИН через API
4. Получение подтверждения и номера документа
5. Обновление статуса выгрузки
6. Сохранение номера документа из АРШИН

### 5.5. Обработка данных из АРШИН
1. Получение данных из АРШИН
2. Сопоставление с существующими записями
3. Обновление информации о поверках

## 6. Интеграции с внешними системами

### 6.1. Интеграция с PDM
- Получение данных о новых СИ через шину данных/очередь сообщений
- Обработка сообщений о создании новых СИ
- Запрос дополнительных данных через API PDM при необходимости


## 7. Безопасность и разграничение доступа

### 7.1. Роли и права доступа
- **Администратор**:
  - Полный доступ ко всем функциям системы
  - Управление пользователями
  - Редактирование справочников
  - Просмотр и редактирование всех данных
  - Выгрузка данных в АРШИН

- **Метролог**:
  - Создание заявок на поверку
  - Проведение поверок
  - Просмотр и редактирование только своих поверок
  - Просмотр справочников
  - Невозможность редактирования данных других метрологов

### 7.2. Аутентификация и авторизация
- Интеграция с Keycloak для управления пользователями
- Проверка прав доступа на уровне API
- Защита от несанкционированного доступа

## 10. Архитектурные решения

### 10.1. Общая архитектура
- Многослойная архитектура с выделением слоев:
  - Слой доступа к данным
  - Слой бизнес-логики
  - Слой API
  - Слой интеграции с внешними системами

### 10.2. Обработка сообщений
- Использование шины данных/очереди сообщений для интеграции с PDM
- Асинхронная обработка сообщений
- Механизмы повторных попыток при сбоях

### 10.3. API
- RESTful API для взаимодействия с клиентами
- Документированный API с использованием OpenAPI
- Версионирование API для обеспечения обратной совместимости



## 13. Терминология

- **ФГИС "АРШИН"** - федеральная государственная информационная система для учёта и хранения сведений о результатах поверки средств измерений
- **PDM** - система управления данными о продукции
- **LPIT** - измерительный трансформатор
- **PSU** - блок питания (будущий тип СИ)
- **Метролог** - специалист, проводящий поверку средств измерений
- **СИ** - средство измерения
- **Поверка** - совокупность операций по определению метрологических характеристик средства измерений
- **Эталон** - эталонное средство измерения, используемое при поверке
```