Zone Inspect

// documentation & reference

English
0 About the System

Precision.

This is an AI-powered visual inspection platform designed to eliminate human error and bring laboratory-grade accuracy to every check. The system leverages a neural network trained on real-world production data to detect defects, deviations, and anomalies — instantly and consistently.

Speed.

Define zones of interest, capture images, and let the engine do the rest. Every result is logged, traceable, and available for review at any time. Operators get clear pass/fail verdicts with confidence scores; managers get statistics, history, and full audit trails.

Confidence.

Built for the factory floor. Accessible from any device — desktop or mobile. No installation required. Just open the browser and inspect.

Detection Pipeline

Every uploaded photo goes through a multi-stage pipeline to find and analyze the matching zone:

1. Global Alignment — the input image is aligned to the reference using SIFT feature matching (5000 keypoints) with FLANN matcher and RANSAC homography. This warps the photo to overlap precisely with the reference, compensating for camera angle, position, and scale.

2. Zone Matching — each zone is extracted from the warped image and ranked:

  • SSIM pre-ranking — all zones scored quickly; top-3 advance.
  • Neural scoring — EfficientNet-B4 global cosine similarity (pooled layer-7 features) picks the best match above 0.55 threshold.
  • Fallback strategies — if global homography fails: local SIFT per zone, then template matching.

3. Defect Detection — the matched pair (reference vs. extracted) is analyzed:

  • CLAHE contrast normalization on both images.
  • Global similarity — cosine on EfficientNet-B4 layer-7 (semantic level).
  • SSIM map — per-pixel structural similarity to find difference regions.
  • Patch CNN map — layer-5 spatial features compared patch-by-patch, producing a similarity heatmap.
  • Texture weighting — flat regions are down-weighted to reduce false positives.
  • Verdict — weighted defect % vs. sensitivity thresholds: OK / WARN / DEFECT.

Final similarity = 50% global cosine (layer 7) + 50% patch cosine (layer 5).

4. Subzone Analysis — subzones use stricter thresholds plus HSV histogram comparison to catch completely different components. Zone verdict = worst status across all subzones.

5. Reference Blending — the auto-blend module aligns multiple photos via SIFT (with barcode/QR anchor detection) and pixel-averages them into a clean, noise-reduced reference.

OpenCV fallback: when the neural engine is unavailable, the system uses CLAHE + SSIM + edge analysis + contour-based measurement.
1 Getting Started

Login

Open the application URL. Enter your access key on the login page. The key is provided by the administrator and maps to your operator name. The session persists for 30 days.

Interface Overview

The system uses a 3-step wizard:

  • Step 1 — Upload: upload a reference photo or load a saved template.
  • Step 2 — Zones: draw inspection zones on the reference image.
  • Step 3 — Check: take zone photos, run analysis, review results.

Click the Step 1 indicator at any time to reset and start over.

Sensitivity Controls

In the header, two inputs control detection strictness:

  • Zone (0.00–2.00) — sensitivity for zone-level defect detection. Default: 0.50.
  • Subzone (0.00–2.00) — sensitivity for subzone-level analysis. Default: 0.51.

Higher values = stricter detection (more defects flagged). Lower values = more lenient.

2 Uploading a Reference Image

Single Image

Drag and drop (or click to browse) a single photo of the reference assembly into the upload area. Supported formats: PNG, JPG, JPEG, BMP, WebP.

Multi-Image Blending

Upload 2+ photos of the same object. The system shows a blending panel:

  • Manual blend: adjust X/Y offset and Scale sliders for each image. Click "Blend (manual)" to merge.
  • Auto-align (SIFT): automatically aligns images using feature matching, then averages. Best for slightly shifted shots.
  • Readjust: go back to the slider interface after viewing the result.

Multi-image blending reduces noise and produces a cleaner reference.

3 Templates

Saved Templates

Templates store the reference image + zone layout for reuse. They appear as cards in Step 1 with name, barcode mask, version number, zone count, and creation date.

Load

Click "Load" on a template card to jump directly to Step 3 (inspection) with all zones pre-configured. A "Recipe" badge appears showing the template name.

Save as Template

In Step 2 after drawing zones, enter a name and optional barcode mask, then click "Save Template". The reference image is stored in cloud storage (R2).

Edit Template

Click "Edit" on a template card to open the full-screen template editor. You can:

  • Add, rename, delete, and reorder zones (drag the handle).
  • Draw anchor points and subzones (see below).
  • Change template name and barcode mask.
  • Zoom the canvas: Ctrl+scroll or +/- buttons (100%–800%).

Versioning

Click "Save changes" to create a new version. Previous versions are archived and visible in the sidebar. Click any older version to restore it (creates a new version).

Delete Template

Click "Delete" on the template card. Confirmation required.

Barcode Mask

A prefix string (e.g. "7334") that validates scanned serial numbers. If the scanned code does not start with this mask, a "Mask mismatch" warning appears during inspection.

4 Drawing Inspection Zones

Draw Zones

In Step 2, click and drag on the reference image to draw rectangular zones. Each zone is auto-labeled ("Zone 1", "Zone 2", etc.) and color-coded.

Zone Controls

  • Rename: edit the text field on a zone chip.
  • Select: click the color dot to highlight the zone on the canvas.
  • Delete: click X on the zone chip.
  • Undo last / Clear all: buttons below the canvas.

Anchor Points

Click the crosshair icon on a zone chip to enter anchor mode. Place up to 2 anchor points on or near the zone. Anchors provide alignment guidance on the mobile camera — the phone shows where to position the board relative to detected features.

Subzones

Click the square icon on a zone chip to enter subzone mode. Draw up to 10 smaller rectangles inside the zone. Subzones trigger a separate, stricter analysis pass. Each subzone has its own status, defect %, and images. The zone's overall status = the worst status among all its subzones.

Canvas Zoom

Ctrl+scroll or use +/- buttons. Range: 100%–800%.

Save & Start

Click "Save zones & start check" to lock zones and proceed to Step 3.

5 Inspection Process

Serial Number Scanning

Before checking zones, scan a barcode / QR code / DataMatrix for the serial number. Upload a photo from desktop or use the mobile camera. The zone check area is locked until a serial is scanned. The decoded value appears with its type (e.g. QR_CODE, CODE_128).

Taking Zone Photos (Desktop)

Drag and drop one or more zone photos into the upload area, then click "Run Check". Multiple files are processed sequentially with a progress counter ("[1/5]", "[2/5]", etc.).

Zone Matching

Each uploaded photo is automatically matched to the best-fitting zone using a multi-stage pipeline:

  • Global alignment (SIFT or neural network) to warp the input to the reference.
  • Zone crop extraction and SSIM pre-ranking of all zones.
  • Top-3 neural scoring (EfficientNet-B4) for final match.
  • Match score must exceed 0.55 threshold. Otherwise "NO MATCH".
  • Already-OK zones are deprioritized.

Defect Analysis

The matched zone is compared against the reference to detect defects:

  • Neural mode: EfficientNet-B4 patch-based CNN comparison + global similarity + SSIM.
  • OpenCV fallback: CLAHE normalization, SSIM, absolute difference, edge analysis, adaptive thresholding, contour-based measurement.

Output: SSIM score, defect percentage, defect region count, status (OK / WARN / DEFECT), and visualization images (defect map, heatmap, extracted zone, reference crop).

Subzone Analysis

If the zone has subzones defined, each subzone is analyzed separately with stricter thresholds. The zone status = worst of (zone result, all subzone results).

Result Display

After each check: 5 images (input, reference, extracted, defect map, heatmap), statistics (score, SSIM, defect %), a bar chart of all zone scores, and subzone details if applicable. Click any image for a full-size lightbox.

6 Decisions & Saving Results

Calculated vs Accepted Result

Each zone and subzone has two results:

  • Calculated (auto): determined by the defect analysis algorithm.
  • Accepted (user decision): manually set by the operator via a dropdown.

If the operator overrides the calculated result, the original is shown crossed out with an arrow to the accepted status plus a pencil icon.

Overall Result

The overall inspection status is the worst effective status across all zones. Effective = user zone override > worst subzone override > calculated status. Any DEFECT makes the whole inspection a defect. Any WARN (with no defect) makes it a warning.

User Decision Override

  • Zone-level: dropdown on each zone chip or in the lightbox.
  • Subzone-level: dropdown next to each subzone. Changing subzone decisions recalculates the zone's effective status.

Auto-Accept

Toggle the "auto" switch next to the progress bar. When all zones are OK and auto-accept is ON, the result is auto-saved and a new board starts after 3 seconds.

Close & Save

Click "Close & Save" to save the inspection (complete or partial) and reset for the next board. If a result was auto-saved, it updates with the latest user decisions.

Skip Board

Abandon the current board without saving. Resets the session.

Retry Failed Zones

Clear only non-OK zones for re-photographing without resetting the entire board.

7 Mobile Camera

Connecting

In Step 3, a QR code and URL are shown. Scan with your phone to open the mobile companion page. No separate login required.

Serial Scanning

The "Serial" tab provides live camera barcode scanning. The camera feed shows a scan reticle with an animated scan line. A beep sound plays on successful detection. You can also choose an image from the gallery.

Zone Photos

The "Zone" tab shows which zone to photograph next. Navigate between zones with left/right arrows.

Anchor Alignment

If anchor points are defined for the zone, the camera feed shows dashed guide circles at target positions. Real-time template matching detects anchors in the live video. When aligned (solid green circles + checkmark), press "Capture Zone".

Capture & Upload

Press "Capture Zone" to take a photo. A shutter sound plays. The photo is queued for the desktop, which processes it automatically (polls every 5 seconds). Multiple photos can also be uploaded from the gallery.

Mobile Actions

  • Skip -> New SN: save current result and start a new board from mobile.
  • Retry Failed: re-scan only failed zones.

The mobile page continuously polls the server (every 5 seconds) to sync state with the desktop.

8 Inspection History

Viewing History

Scroll to the bottom of the page and click "Inspection History" to expand the panel. Each row shows: date, time, serial, template name, operator, zone count, overall status, and inline stats (OK/defect/warn counts, avg score, max defect %). Overridden results have a pencil icon.

Search & Filter

Type in the search box. Format: serial / template / operator. Supports * wildcards. Each part filters the corresponding field. Example: 7334* / Module XY / John.

Detail View

Click a row to expand it. Shows: stats row, doughnut pie chart (OK/Defect/Warn distribution), per-zone score bars, zone image cards with status badges and defect %. Subzone cards shown with a red left border.

Zone Comparison

Click any zone image card to open a full-size side-by-side comparison of the captured photo vs the reference.

Overridden Results in History

When the accepted status differs from the calculated one, the zone card shows: calculated -> accepted. Same for subzones.

Print Passport

Click "Print" on any history row to generate a formal inspection passport document with all metadata, zone table (with overrides shown), score charts, and zone images. Opens the browser print dialog.

Pagination

History loads in pages of 20. Click "Load more" to see older results.

9 Statistics Dashboard

Appears in Step 3 after the first zone is checked. Displays:

  • Summary counters: total checked, OK, Warn, Defect, average SSIM, average defect %.
  • Match scores chart: bar chart of match scores per zone, color-coded by status.
  • Defect % chart: defect percentage per zone.
  • SSIM chart: SSIM per zone (green >= 45%, yellow >= 30%, red < 30%).
  • Data table: zone status, score, SSIM, defect %, defect count.

All charts and counters update in real-time as zones are checked.

10 Progress Tracking & Mini-Map

Zone Status Chips

Color-coded chips below the check panel: green = OK, yellow = WARN, red = DEFECT, blue = unchecked. Shows effective status (with overrides). Click to view that zone's result.

Progress Bar

Shows "N/M zones checked" with a percentage fill bar.

Reference Mini-Map

Small canvas showing the full reference image with zone overlays. Unchecked zones pulsate; checked zones show their status color and a check/warn/defect marker.

Completion Banner

When all zones are checked: "ALL ZONES OK" (green) or "ISSUES FOUND" (yellow). Shows serial number if scanned. Action buttons appear for saving, skipping, or retrying.

11 External API
Your operator access key does NOT work for the external API. A separate API key (prefix apk_) is required. Contact your administrator to obtain one.

Authentication

All requests require the header X-Auth-Key with a valid API key. API keys are read-only — they can only retrieve inspection results and images.

X-Auth-Key: apk_your_key_here

List Results

GET /api/v1/results

Query parameters:

  • from — start date (ISO, e.g. 2026-03-01)
  • to — end date (ISO, e.g. 2026-03-19)
  • serial — serial number filter, supports * wildcard
  • template — template name filter
  • operator — operator name filter
  • statusok, warn, or defect
  • limit — max results per page (default 50, max 500)
  • offset — skip N results for pagination

Example:

curl -H "X-Auth-Key: apk_..." \
  "https://your-host/api/v1/results?from=2026-03-01&serial=SN-12*&limit=10"

Response:

{
  "total": 42,
  "limit": 10,
  "offset": 0,
  "results": [
    {
      "result_id": "a1b2c3d4_143000",
      "timestamp": "2026-03-19T14:30:00",
      "serial": "SN-1234-2026",
      "template_name": "Module X",
      "operator": "operator1",
      "overall_status": "ok",
      "zones": [
        {
          "label": "U1",
          "status": "ok",
          "score": 0.87,
          "defect_pct": 3.2,
          "image_url": "/api/v1/results/.../images/zone_0.jpg"
        }
      ]
    }
  ]
}

Single Result

GET /api/v1/results/{result_id}

Returns the full inspection record. Add ?images=base64 to embed images as Base64 data URIs directly in the JSON (convenient for single records, but large payloads).

curl -H "X-Auth-Key: apk_..." \
  "https://your-host/api/v1/results/a1b2c3d4_143000?images=base64"

Result Image

GET /api/v1/results/{result_id}/images/{filename}

Returns a JPEG image. The image_url fields in the JSON response point to this endpoint. Use the same API key header.

curl -H "X-Auth-Key: apk_..." -o zone.jpg \
  "https://your-host/api/v1/results/a1b2c3d4_143000/images/zone_0.jpg"

Error Codes

  • 401 — missing or invalid API key
  • 403 — key scope insufficient (e.g. operator key used on /api/v1/)
  • 404 — result or image not found
  • 503 — database unavailable

Full Example (curl)

# 1. Get recent inspections for serial starting with "SN-12"
KEY="apk_Xk9mP2qR7vN4wL5bT8cF"
HOST="https://inspect.metaprodtrace.com"

curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results?from=2026-03-01&serial=SN-12*&limit=5" \
  | python3 -m json.tool
# 2. Get a single result with full details
RID="a1b2c3d4_143000"

curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results/$RID" \
  | python3 -m json.tool
# 3. Download a zone image from that result
curl -H "X-Auth-Key: $KEY" \
  -o zone_photo.jpg \
  "$HOST/api/v1/results/$RID/images/zone_0.jpg"
# 4. Get the same result with images embedded as Base64
curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results/$RID?images=base64" \
  | python3 -m json.tool
# 5. Without a key — expect 401
curl -s "$HOST/api/v1/results"
# {"error": "Unauthorized"}
12 Roles & Access Control

The system uses group-based access control with three user roles and API key scoping.

Roles

admin Full access to everything. No group restriction. Can manage all templates, view all results, clear history.
lead Belongs to a group. Can create, edit, delete, and restore templates (own group + shared). Views results of own group only.
operator Belongs to a group. Can use templates (own group + shared) and run inspections. Cannot create/edit/delete templates. Views results of own group only.

Groups

Each non-admin user belongs to a group (e.g. "line1", "line2"). Groups isolate data:

-- Templates with a group are visible only to that group's members.
-- Templates with no group (empty) are shared -- visible to everyone.
-- Inspection results are strictly filtered by group.
-- Admin sees everything regardless of group.

API Keys

External API keys (apk_ prefix) also support group scoping:

-- Key with "group": "line1" can only read results from that group.
-- Key without group can read all results.
-- Scope "read" limits to GET requests on /api/v1/* endpoints.

Header Badge

The top-right corner of the interface shows the current user's name, role, and group.

Configuration

{
  "users": {
    "SECRET_KEY": {
      "name": "display_name",
      "role": "admin | lead | operator",
      "group": "group_name"
    }
  },
  "api_keys": {
    "apk_SECRET_KEY": {
      "name": "Integration Name",
      "scope": "read",
      "group": "group_name"
    }
  }
}
Admin users have no "group" field. Templates saved by admin have empty group (shared). Lead can set group when saving templates.
Русский
0 О системе

Точность.

Это платформа визуальной инспекции на базе искусственного интеллекта, созданная для устранения человеческого фактора и обеспечения лабораторной точности каждой проверки. Нейросеть, обученная на реальных производственных данных, мгновенно и стабильно выявляет дефекты, отклонения и аномалии.

Скорость.

Задайте зоны интереса, сделайте снимки — и система выполнит анализ. Каждый результат фиксируется, прослеживается и доступен для просмотра в любое время. Операторы получают чёткие вердикты с оценкой уверенности, а руководители — статистику, историю и полный аудиторский след.

Уверенность.

Создано для производства. Доступно с любого устройства — компьютера или телефона. Установка не требуется — просто откройте браузер и начните инспекцию.

Конвейер распознавания

Каждая загруженная фотография проходит многоэтапный конвейер для поиска и анализа совпадающей зоны:

1. Глобальное выравнивание — входное изображение совмещается с эталоном методом SIFT (5000 ключевых точек) с FLANN-матчером и гомографией RANSAC. Это компенсирует угол, положение и масштаб камеры.

2. Сопоставление зон — из выровненного изображения извлекается каждая зона и ранжируется:

  • SSIM-ранжирование — быстрая оценка всех зон; 3 лучших проходят дальше.
  • Нейросетевой скоринг — EfficientNet-B4 считает глобальное косинусное сходство (пулинг layer-7). Лучшее совпадение выше порога 0.55 побеждает.
  • Запасные стратегии — если глобальная гомография не удалась: локальный SIFT для зоны, затем шаблонное сопоставление.

3. Детектирование дефектов — сравниваются эталон и извлечение:

  • CLAHE — нормализация контраста обоих изображений.
  • Глобальное сходство — косинус на признаках EfficientNet-B4 layer-7 (семантический уровень).
  • Карта SSIM — попиксельное структурное сходство для выявления различий.
  • Патч-CNN карта — пространственные признаки layer-5 сравниваются попатчево, формируя тепловую карту сходства.
  • Текстурное взвешивание — плоские области получают пониженный вес для снижения ложных срабатываний.
  • Вердикт — взвешенный % дефектов vs. пороги чувствительности: OK / WARN / DEFECT.

Итоговое сходство = 50% глобальный косинус (layer 7) + 50% патч-косинус (layer 5).

4. Анализ подзон — подзоны используют ужесточённые пороги и HSV-гистограммное сравнение для выявления полностью отличающихся компонентов. Вердикт зоны = наихудший статус среди подзон.

5. Блендинг эталона — модуль auto-blend выравнивает несколько фотографий через SIFT (с обнаружением штрихкодов/QR как опорных точек) и усредняет их попиксельно для получения чистого эталона.

OpenCV-фоллбэк: при отсутствии нейродвижка система использует CLAHE + SSIM + анализ рёбер + контурное измерение.
1 Начало работы

Вход в систему

Откройте URL приложения. На странице входа введите ключ доступа, выданный администратором. Ключ привязан к имени оператора. Сеанс сохраняется 30 дней.

Обзор интерфейса

Система работает в 3 шага:

  • Шаг 1 — Загрузка: загрузка эталонного фото или выбор сохранённого шаблона.
  • Шаг 2 — Зоны: рисование зон инспекции на эталонном изображении.
  • Шаг 3 — Проверка: фотографирование зон, анализ, просмотр результатов.

Нажатие на индикатор Шаг 1 в любой момент сбрасывает сессию и возвращает к началу.

Настройки чувствительности

В заголовке страницы два поля:

  • Zone (0.00–2.00) — чувствительность детектирования дефектов на уровне зоны. По умолчанию: 0.50.
  • Subzone (0.00–2.00) — чувствительность на уровне подзон. По умолчанию: 0.51.

Большее значение = строже (больше дефектов определяется). Меньшее = мягче.

2 Загрузка эталона

Одно изображение

Перетащите (или выберите через диалог) одно фото эталона в область загрузки. Форматы: PNG, JPG, JPEG, BMP, WebP.

Блендинг нескольких фото

Загрузите 2+ фото одного и того же объекта. Система покажет панель блендинга:

  • Ручной блендинг: ползунки X/Y смещение и масштаб для каждого изображения. Нажмите "Blend (manual)".
  • Auto-align (SIFT): автоматическое выравнивание по особым точкам, затем усреднение. Лучший вариант при небольшом сдвиге кадров.
  • Readjust: вернуться к ползункам после просмотра результата.

Блендинг нескольких фото уменьшает шум и даёт более чистый эталон.

3 Шаблоны

Сохранённые шаблоны

Шаблоны хранят эталонное изображение + разметку зон для повторного использования. Отображаются карточками в Шаге 1: имя, маска штрихкода, версия, количество зон, дата создания.

Загрузить шаблон

Нажмите "Load" на карточке — сразу переход к Шагу 3 с готовыми зонами. Появляется бейдж "Recipe" с именем шаблона.

Сохранить как шаблон

В Шаге 2, после рисования зон, введите имя и опционально маску штрихкода, нажмите "Save Template".

Редактирование шаблона

Нажмите "Edit" — откроется полноэкранный редактор. Возможности:

  • Добавление, переименование, удаление и перетаскивание зон (ручка-захват).
  • Рисование якорных точек и подзон (см. ниже).
  • Изменение имени и маски штрихкода.
  • Масштаб холста: Ctrl+scroll или кнопки +/- (100%–800%).

Версионирование

"Save changes" создаёт новую версию. Предыдущие версии видны в боковой панели. Нажатие на старую версию восстанавливает её (создаётся новая версия).

Удаление шаблона

Кнопка "Delete" на карточке. Требуется подтверждение.

Маска штрихкода

Префикс (например "7334"), по которому валидируются сканированные серийные номера. Если код не начинается с маски — предупреждение "Mask mismatch".

4 Разметка зон инспекции

Рисование зон

В Шаге 2 кликните и перетащите мышь по эталонному изображению для создания прямоугольной зоны. Зоны автоматически нумеруются ("Zone 1", "Zone 2"...) и раскрашиваются.

Управление зонами

  • Переименовать: редактируйте текстовое поле на чипе зоны.
  • Выбрать: нажмите на цветную точку — зона подсвечивается на холсте.
  • Удалить: кнопка X на чипе зоны.
  • Undo last / Clear all: кнопки под холстом.

Якорные точки (Anchors)

Нажмите значок прицела на чипе зоны. Поставьте до 2 якорных точек на изображении. При съёмке с мобильного камера покажет ориентиры для выравнивания объекта.

Подзоны (Subzones)

Нажмите значок квадрата на чипе. Нарисуйте до 10 прямоугольников внутри зоны. Подзоны анализируются отдельно с более строгими порогами. У каждой подзоны свой статус, % дефектов и изображения. Итоговый статус зоны = наихудший среди всех подзон.

Масштаб холста

Ctrl+scroll или кнопки +/-. Диапазон: 100%–800%.

Сохранить и начать

Нажмите "Save zones & start check" для фиксации зон и перехода к Шагу 3.

5 Процесс инспекции

Сканирование серийного номера

Перед проверкой зон отсканируйте штрихкод / QR-код / DataMatrix для идентификации объекта. Загрузите фото с ПК или используйте мобильную камеру. Проверка зон заблокирована до сканирования. Распознанное значение отображается с типом кода (QR_CODE, CODE_128 и т.д.).

Фото зон (с ПК)

Перетащите одно или несколько фото зон в область загрузки, нажмите "Run Check". Файлы обрабатываются последовательно со счётчиком прогресса ("[1/5]", "[2/5]" и т.д.).

Сопоставление зон

Каждое фото автоматически сопоставляется с наиболее подходящей зоной через многоэтапный анализ:

  • Глобальное выравнивание (SIFT или нейросеть) входного фото по эталону.
  • Вырезка областей зон и предварительное SSIM-ранжирование.
  • Топ-3 нейронный скоринг (EfficientNet-B4) для финального выбора.
  • Порог совпадения: 0.55. Ниже — "NO MATCH".
  • Уже проверенные (ОК) зоны имеют пониженный приоритет.

Анализ дефектов

Сопоставленная зона сравнивается с эталоном:

  • Нейросетевой режим: EfficientNet-B4, патч-анализ CNN, глобальное сходство, SSIM.
  • OpenCV-фоллбек: CLAHE нормализация, SSIM, абсолютная разница, анализ краёв, адаптивная пороговая обработка, контурное измерение площади.

Результат: SSIM, % дефектов, количество регионов, статус (OK / WARN / DEFECT), визуализация (карта дефектов, тепловая карта, вырезанная зона, эталонный кроп).

Анализ подзон

Если у зоны есть подзоны — каждая анализируется отдельно с более строгими порогами. Итоговый статус зоны = наихудший из (статус зоны, все статусы подзон).

Отображение результатов

После каждой проверки: 5 изображений (вход, эталон, вырезка, карта дефектов, тепловая карта), статистика, столбчатая диаграмма оценок всех зон, подзоны (если есть). Клик по изображению — полноразмерный просмотр в лайтбоксе.

6 Решения и сохранение результатов

Расчётный и принятый результат

У каждой зоны и подзоны два результата:

  • Расчётный (авто): определён алгоритмом анализа дефектов.
  • Принятый (решение оператора): вручную установлен оператором через выпадающий список.

Если оператор изменил результат, исходный отображается зачёркнутым со стрелкой к принятому статусу и значком карандаша.

Общий результат

Итоговый статус инспекции — наихудший эффективный статус всех зон. Эффективный = переопределение зоны > наихудшее переопределение подзон > расчётный. Любой DEFECT делает всю инспекцию дефектной. Любой WARN (без дефектов) — предупреждение.

Переопределение решения

  • Уровень зоны: выпадающий список на чипе зоны или в лайтбоксе.
  • Уровень подзоны: выпадающий список рядом с каждой подзоной. Изменение пересчитывает эффективный статус зоны.

Авто-принятие

Переключатель "auto" рядом с прогресс-баром. Когда все зоны OK и авто-принятие включено — результат автоматически сохраняется и через 3 секунды начинается новый объект.

Закрыть и сохранить

"Close & Save" — сохраняет инспекцию (полную или частичную) и сбрасывает для следующего объекта.

Пропустить объект

Отменить текущий объект без сохранения. Сессия сбрасывается.

Перепроверить дефектные

Очищает только не-ОК зоны для повторной съёмки без сброса всей инспекции.

7 Мобильная камера

Подключение

В Шаге 3 отображаются QR-код и URL. Отсканируйте телефоном для открытия мобильной страницы. Отдельный вход не требуется.

Сканирование серийного номера

Вкладка "Serial" — живая камера со сканирующей рамкой и анимированной линией. При распознавании звучит сигнал. Также можно выбрать фото из галереи.

Фото зон

Вкладка "Zone" показывает какую зону нужно снять. Переключение между зонами стрелками влево/вправо.

Выравнивание по якорям

Если у зоны заданы якорные точки — на видео камеры показываются штриховые круги-ориентиры. В реальном времени определяются позиции якорей на изображении. При совпадении (зелёные круги + галочка) — можно снимать.

Съёмка и загрузка

"Capture Zone" — снимок. Звук затвора. Фото ставится в очередь для десктопа, где обрабатывается автоматически (опрос каждые 5 секунд). Также можно загрузить несколько фото из галереи.

Действия с мобильного

  • Skip -> New SN: сохранить текущий результат и начать новый объект.
  • Retry Failed: пересканировать только дефектные зоны.

Мобильная страница опрашивает сервер каждые 5 секунд для синхронизации состояния с десктопом.

8 История инспекций

Просмотр истории

Прокрутите страницу вниз и нажмите "Inspection History" для раскрытия панели. Каждая строка: дата, время, серийный номер, шаблон, оператор, количество зон, итоговый статус, краткая статистика (OK/defect/warn, ср. оценка, макс. % дефектов). Переопределённые результаты помечены значком карандаша.

Поиск и фильтрация

Введите в строку поиска. Формат: серийник / шаблон / оператор. Поддерживается * как подстановка. Каждая часть фильтрует соответствующее поле. Пример: 7334* / Module XY / John.

Детальный просмотр

Нажмите на строку для раскрытия: ряд статистики, кольцевая диаграмма (OK/Defect/Warn), столбцы оценок зон, карточки изображений с бейджами статуса и % дефектов. Карточки подзон имеют красную левую границу.

Сравнение зон

Нажмите на карточку изображения зоны — откроется полноразмерное сравнение снимка и эталона бок о бок.

Переопределения в истории

Если принятый статус отличается от расчётного, на карточке зоны: расчётный -> принятый. Аналогично для подзон.

Печать паспорта

Кнопка "Print" на строке истории — генерирует формальный документ инспекции со всеми метаданными, таблицей зон (с переопределениями), графиками, изображениями зон. Открывает диалог печати браузера.

Пагинация

История загружается по 20 записей. "Load more" для просмотра старых результатов.

9 Панель статистики

Появляется в Шаге 3 после проверки первой зоны. Содержит:

  • Счётчики: всего проверено, OK, Warn, Defect, средний SSIM, средний % дефектов.
  • Диаграмма оценок: столбчатый график оценок совпадения зон, цвет по статусу.
  • Диаграмма дефектов: % дефектов по зонам.
  • Диаграмма SSIM: SSIM по зонам (зелёный >= 45%, жёлтый >= 30%, красный < 30%).
  • Таблица: зона, статус, оценка, SSIM, % дефектов, количество дефектных областей.

Все графики и счётчики обновляются в реальном времени по мере проверки зон.

10 Прогресс и мини-карта

Чипы статуса зон

Цветные чипы под панелью проверки: зелёный = OK, жёлтый = WARN, красный = DEFECT, синий = не проверена. Показывает эффективный статус (с учётом переопределений). Клик — просмотр результата зоны.

Прогресс-бар

Показывает "N/M зон проверено" с процентным заполнением.

Мини-карта эталона

Маленький холст с полным видом эталона и наложением зон. Непроверенные зоны пульсируют; проверенные показывают статусный цвет и маркер.

Баннер завершения

При проверке всех зон: "ALL ZONES OK" (зелёный) или "ISSUES FOUND" (жёлтый). Показывает серийный номер. Кнопки для сохранения, пропуска или перепроверки.

11 Внешний API
Ваш ключ оператора НЕ подходит для внешнего API. Требуется отдельный API-ключ (префикс apk_). Обратитесь к администратору для его получения.

Авторизация

Все запросы требуют заголовок X-Auth-Key с действующим API-ключом. API-ключи работают только на чтение — получение результатов инспекций и изображений.

X-Auth-Key: apk_ваш_ключ

Список результатов

GET /api/v1/results

Параметры запроса:

  • from — дата начала (ISO, напр. 2026-03-01)
  • to — дата окончания (ISO, напр. 2026-03-19)
  • serial — фильтр по серийному номеру, поддержка *
  • template — фильтр по имени шаблона
  • operator — фильтр по оператору
  • statusok, warn или defect
  • limit — макс. результатов на страницу (по умолч. 50, макс. 500)
  • offset — пропустить N результатов (пагинация)

Пример:

curl -H "X-Auth-Key: apk_..." \
  "https://your-host/api/v1/results?from=2026-03-01&serial=SN-12*&limit=10"

Ответ:

{
  "total": 42,
  "limit": 10,
  "offset": 0,
  "results": [
    {
      "result_id": "a1b2c3d4_143000",
      "timestamp": "2026-03-19T14:30:00",
      "serial": "SN-1234-2026",
      "template_name": "Module X",
      "operator": "operator1",
      "overall_status": "ok",
      "zones": [
        {
          "label": "U1",
          "status": "ok",
          "score": 0.87,
          "defect_pct": 3.2,
          "image_url": "/api/v1/results/.../images/zone_0.jpg"
        }
      ]
    }
  ]
}

Один результат

GET /api/v1/results/{result_id}

Возвращает полную запись инспекции. Добавьте ?images=base64 для встраивания изображений в JSON как Base64 (удобно для одиночных записей, но большой объём данных).

curl -H "X-Auth-Key: apk_..." \
  "https://your-host/api/v1/results/a1b2c3d4_143000?images=base64"

Изображение результата

GET /api/v1/results/{result_id}/images/{filename}

Возвращает JPEG-изображение. Поля image_url в JSON-ответе указывают на этот эндпоинт. Используйте тот же API-ключ в заголовке.

curl -H "X-Auth-Key: apk_..." -o zone.jpg \
  "https://your-host/api/v1/results/a1b2c3d4_143000/images/zone_0.jpg"

Коды ошибок

  • 401 — отсутствует или недействителен API-ключ
  • 403 — недостаточные права (напр. ключ оператора на /api/v1/)
  • 404 — результат или изображение не найдены
  • 503 — база данных недоступна

Полный пример (curl)

# 1. Получить недавние инспекции для серийника начинающегося с "SN-12"
KEY="apk_Xk9mP2qR7vN4wL5bT8cF"
HOST="https://inspect.metaprodtrace.com"

curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results?from=2026-03-01&serial=SN-12*&limit=5" \
  | python3 -m json.tool
# 2. Получить один результат с полными данными
RID="a1b2c3d4_143000"

curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results/$RID" \
  | python3 -m json.tool
# 3. Скачать изображение зоны из этого результата
curl -H "X-Auth-Key: $KEY" \
  -o zone_photo.jpg \
  "$HOST/api/v1/results/$RID/images/zone_0.jpg"
# 4. Получить результат с изображениями встроенными как Base64
curl -s -H "X-Auth-Key: $KEY" \
  "$HOST/api/v1/results/$RID?images=base64" \
  | python3 -m json.tool
# 5. Без ключа — ожидаем 401
curl -s "$HOST/api/v1/results"
# {"error": "Unauthorized"}
12 Роли и управление доступом

Система использует групповое управление доступом с тремя ролями пользователей и привязкой API-ключей к группам.

Роли

admin Полный доступ ко всему. Без ограничений по группе. Управление всеми шаблонами, просмотр всех результатов, очистка истории.
lead Принадлежит группе. Может создавать, редактировать, удалять и восстанавливать шаблоны (своей группы + общие). Видит результаты только своей группы.
operator Принадлежит группе. Может использовать шаблоны (своей группы + общие) и проводить инспекции. Не может создавать/редактировать/удалять шаблоны. Видит результаты только своей группы.

Группы

Каждый не-admin пользователь принадлежит группе (например "line1", "line2"). Группы изолируют данные:

-- Шаблоны с группой видны только участникам этой группы.
-- Шаблоны без группы (пустая) являются общими -- видны всем.
-- Результаты инспекций строго фильтруются по группе.
-- Admin видит все, независимо от группы.

API-ключи

Внешние API-ключи (префикс apk_) тоже поддерживают привязку к группе:

-- Ключ с "group": "line1" читает результаты только этой группы.
-- Ключ без группы читает все результаты.
-- Scope "read" ограничивает GET-запросами на /api/v1/* эндпоинты.

Бейдж в хедере

В правом верхнем углу интерфейса отображаются имя, роль и группа текущего пользователя.

Конфигурация

{
  "users": {
    "СЕКРЕТНЫЙ_КЛЮЧ": {
      "name": "отображаемое_имя",
      "role": "admin | lead | operator",
      "group": "имя_группы"
    }
  },
  "api_keys": {
    "apk_СЕКРЕТНЫЙ_КЛЮЧ": {
      "name": "Имя интеграции",
      "scope": "read",
      "group": "имя_группы"
    }
  }
}
У admin-пользователей нет поля "group". Шаблоны, сохраненные админом, имеют пустую группу (общие). Lead может задать группу при сохранении шаблона.