Files
chestno-api/README.md
T
2026-07-08 16:43:29 +03:00

3.9 KiB

chestno-api — Тестовое web-приложение для API Честного знака

Веб-приложение для проверки кодов маркировки через API ГИС МТ «Честный знак» (True API).

Архитектура

  • Backend: Fastify + TypeScript
  • Frontend: React + Vite + TypeScript
  • Docker: docker-compose (2 сервиса: backend, frontend)

Быстрый старт

# Клонировать и перейти в директорию
cd chestno-api

# Настроить окружение
cp backend/.env.example backend/.env
# Отредактировать backend/.env — указать thumbprint сертификата

# Запустить
docker-compose up --build

Разработка (без Docker)

# Backend
cd backend
npm install
npm run dev

# Frontend (в отдельном терминале)
cd frontend
npm install
npm run dev

Структура проекта

backend/
  src/
    config.ts           # Конфигурация
    index.ts            # Точка входа Fastify
    routes/
      auth.ts           # GET /auth/key, POST /auth/signin, GET /auth/status
      cises.ts          # POST /api/check-codes/public, /api/check-codes/auth
      upd.ts            # POST /api/upload-upd
    services/
      auth-service.ts   # True API аутентификация + подпись через КриптоПро
      cises-service.ts  # Проверка КМ (публичная / авторизованная)
      token-cache.ts    # Кеширование токена (node-cache, TTL 10ч)
      upd-parser.ts     # Парсинг XML УПД (формат Приказа №970)
    types/
      index.ts          # TypeScript типы

frontend/
  src/
    App.tsx             # Корневой компонент с навигацией
    pages/
      AuthPage.tsx      # Авторизация
      CheckCodesPage.tsx# Проверка кодов
      UploadUpdPage.tsx # Загрузка УПД
    components/
      ResultsTable.tsx  # Таблица результатов с цветовой индикацией
    services/
      api.ts            # HTTP-клиент к backend
    types/
      index.ts          # TypeScript типы

API Endpoints

Аутентификация

  • GET /auth/key — получение UUID + data для подписи
  • POST /auth/signin — отправка подписи, получение токена
  • GET /auth/status — статус авторизации

Проверка кодов

  • POST /api/check-codes/public — публичная проверка (без авторизации)
  • POST /api/check-codes/auth — авторизованная проверка (полная информация)

УПД

  • POST /api/upload-upd — загрузка XML УПД, парсинг и проверка кодов

Переменные окружения (backend/.env)

Переменная Описание По умолчанию
PORT Порт сервера 3001
HOST Хост 0.0.0.0
TRUE_API_URL URL True API https://markirovka.sandbox.crptech.ru/api/v3/true-api
PUBLIC_CHECK_URL URL публичного API https://mobile.api.crpt.ru/mobile/check
CERT_THUMBPRINT Thumbprint сертификата КриптоПро —

Подпись данных через КриптоПро

Подпись выполняется через CLI-утилиту cryptcp (входит в состав КриптоПро CSP). Установите КриптоПро CSP и укажите thumbprint сертификата в CERT_THUMBPRINT.

Получение thumbprint сертификата

cryptcp -list