// documentation & reference
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.
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:
3. Defect Detection — the matched pair (reference vs. extracted) is analyzed:
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.
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.
Operators work on the inspection screen:
Leads and admins also have Recipe Studio (link in the header) to prepare recipes, and a quick check without a recipe (Step 2 — Zones) for trials.
Click the Step 1 indicator at any time to reset and start over.
How strict the check is belongs to the recipe (zone and subzone values 0.00–2.00, defaults 0.50 / 0.51; higher = stricter). Operators cannot change it. Leads and admins can tick Override in the header for a trial run; without the tick the recipe's values are used.
The reference image belongs to a recipe and is set in Recipe Studio, step 2 (see section 3). Each recipe version keeps its own reference.
Every reference is checked for sharpness, exposure and resolution. A red result blocks publishing; yellow is a warning. Use a sharp, evenly lit photo of a known-good board, taken the way operators will shoot.
"Blend several photos…" aligns 2+ shots of the same board (SIFT, with barcode/QR anchors as a fallback) and averages them. This reduces noise and glare.
The inspection screen still has an upload area for trials: upload a reference, draw zones, check. Such results have no recipe version. Operators do not see this area.
A recipe is everything needed to inspect one product: reference
image, zones and subzones, strictness, notes for operators, and samples of good and defective
boards. Recipes are prepared in Recipe Studio (/studio,
lead and admin) and used on the inspection screen.
Each recipe has versions: draft → live → archived. Operators always inspect with the live version. Editing a live recipe opens a new draft; the line keeps the live version until the draft is published. Any archived version can be put back on the line from the version list. Every inspection result stores the recipe version it was checked with.
Keep the viewpoint consistent. Tall parts (capacitors, relays) look different from different angles, and no alignment can undo that. Shoot the samples the way operators will shoot the boards, all from about the same position and angle. The reference itself may be shot at an angle; what matters is that photos are similar to the good samples. Calibration measures, for every zone, how far each photo's viewpoint is from the typical viewpoint of the good samples, and lists those more than 20° away. While shooting samples, the phone shows the same measure live (see "Viewpoint hint" in the mobile section).
Photograph boards the way operators will: hand-held, normal light. Connect a phone with the QR code in step 4/5 (the phone uses the same camera settings as inspection), or upload from a computer. Each photo is aligned to the reference; the card shows which zones are fully in the frame and any quality problem. Name the phone model: samples must come from different phones. Exclude a photo to keep it without counting it.
For defect samples, open Label and draw a box around each defect on the aligned photo; zone and subzone are detected from the box. Labels survive later zone edits. Defect types: missing, wrong part, shifted, rotated, contamination, damage, other.
Click Calibrate in step 6. For every zone the system learns what normal variation looks like from the good samples (differences between boards, phones, light) and checks each defect sample against it. Every good sample is compared with all the others, so the report shows how many false alarms to expect on good boards; a defect is caught when its score is above the OK limit, and the report shows whether the strongest deviation lies inside the box you drew.
The score shows how unusual the most unusual spot of the zone is compared with the good samples; about 1 is typical. The report is a table: one row per zone with its subzones below. Each zone has its own OK limit: type it, or pick a preset: No false alarms (just above the worst good sample), Catch all defects (just below the weakest defect) or Middle. The counts update at once; then Save limits. Explanations are behind the ? buttons; thumbnails open large on click. By default the limit is the worst good sample × 1.10. Between the OK limit and 1.25 × that limit the result is WARN, above it DEFECT. Subzones follow their zone's limit.
Under each zone the report lists samples worth a second look: good samples shot from a different angle than most good samples or scoring far above them, and defect samples shot from a different angle (their score mixes the angle and the defect). One unusual good photo raises the limit for the whole zone; exclude it if it does not show the zone the usual way, then recalibrate. During inspection, a non-OK verdict on a photo taken from an unusual angle suggests a retake. Changing samples, zones or the reference makes the calibration out of date: recalibrate before publishing.
If some defect samples pass as OK at the chosen limits, the lead can still publish: tick that the misses are accepted and give a reason. The reason is kept with the version and shown in the version list. Fewer than 3 different good boards and samples shot from an unusual angle are warnings. A lead publishes on their own once nothing blocks; an admin may publish with unmet requirements.
Samples are tied to the reference they were aligned to. After a new reference, re-align them with one click in step 4; until then they are not counted.
A recipe without a group is shared: operators of every group can inspect with it. Only admins edit shared recipes in Studio.
A prefix (e.g. "7334") that validates scanned serial numbers. If the scanned code does not start with it, a "Mask mismatch" warning appears during inspection.
Zones are drawn in Recipe Studio, step 3, on the recipe's reference image. Click Save zones to store them in the draft.
Click and drag on the reference image. Each zone is labelled ("Zone 1", "Zone 2"…) and colour-coded. Rename it in the zone list, drag the handle to reorder, × to delete.
Click the crosshair in the zone list and place up to 2 anchors. On the phone they help the operator position the board.
Click the square icon and draw up to 10 rectangles inside the zone. Subzones get a separate, stricter analysis; the zone status is the worst of the zone and its subzones. Tick critical where any deviation is a defect (a connector pin, a polarised part): every critical subzone needs its own defect sample before publishing. The optional "sens" field sets strictness for that subzone only.
Ctrl+scroll or the +/- buttons, 100%–800%.
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).
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.).
Each uploaded photo is automatically matched to the best-fitting zone using a multi-stage pipeline:
The matched zone is compared against the reference to detect defects:
Output: SSIM score, defect percentage, defect region count, status (OK / WARN / DEFECT), and visualization images (defect map, heatmap, extracted zone, reference crop).
If the zone has subzones defined, each subzone is analyzed separately with stricter thresholds. The zone status = worst of (zone result, all subzone results).
A recipe published with a calibration is inspected with its model of normal variation: the zone is found from the photo's alignment to the reference (no similarity threshold), and the result is OK / WARN / DEFECT from the calibrated limits. The heatmap shows where the photo differs from all good samples. Parts of the zone outside the photo are ignored; at least 90% of the zone must be in the frame. Recipes without calibration are inspected by comparison with the reference as before.
Thresholds come from the recipe's strictness (see section 1). The recipe badge shows the version in use, and the lead's notes for operators appear under it. Each saved result stores the recipe version.
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.
Each zone and subzone has two results:
If the operator overrides the calculated result, the original is shown crossed out with an arrow to the accepted status plus a pencil icon.
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.
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.
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.
Abandon the current board without saving. Resets the session.
Clear only non-OK zones for re-photographing without resetting the entire board.
In Step 3, a QR code and URL are shown. Scan with your phone to open the mobile companion page. No separate login required.
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.
The "Zone" tab shows which zone to photograph next. Navigate between zones with left/right arrows.
While a zone is being framed, the bottom of the viewfinder shows a live hint: whether the zone is fully in the frame and, for a calibrated recipe, how far the viewpoint is from the typical viewpoint of the recipe's good samples. Green: up to 10°; yellow: up to 20°; red: more. For yellow and red an arrow shows which way to move the phone. It is only a hint; capturing is never blocked. The phone of a lead collecting samples in Recipe Studio shows the same hint, measured against the good samples taken so far (from 3 of them per zone). With many phones framing at once the hints update less often, so that inspections stay fast.
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".
Press "Capture Zone" to take a photo. A shutter sound plays. The photo is checked as soon as it is uploaded: the verdict appears on the phone and the full result on the desktop (polls every 1.5 seconds). Multiple photos can also be uploaded from the gallery.
The mobile page continuously polls the server (every 5 seconds) to sync state with the desktop.
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.
Type in the search box. Format: serial / template / operator. Supports
* wildcards. Each part filters the corresponding field. Example:
7334* / Module XY / John.
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.
Click any zone image card to open a full-size side-by-side comparison of the captured photo vs the reference.
When the accepted status differs from the calculated one, the zone card shows: calculated -> accepted. Same for subzones.
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.
History loads in pages of 20. Click "Load more" to see older results.
Appears in Step 3 after the first zone is checked. Displays:
All charts and counters update in real-time as zones are checked.
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.
Shows "N/M zones checked" with a percentage fill bar.
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.
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.
apk_) is required.
Contact your administrator to obtain one.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
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 * wildcardtemplate — template name filteroperator — operator name filterstatus — ok, warn, or defectlimit — max results per page (default 50, max 500)offset — skip N results for paginationExample:
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"
}
]
}
]
}
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"
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"
401 — missing or invalid API key403 — key scope insufficient (e.g. operator key used on /api/v1/)404 — result or image not found503 — database unavailable# 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"}
The system uses group-based access control with three user roles and API key scoping.
Roles
| admin | Full access to everything. No group restriction. Edits all recipes in Recipe Studio, including shared ones; may publish a recipe with unmet requirements; views all results, clears history. |
| lead | Belongs to a group. Prepares, publishes and rolls back recipes of their group in Recipe Studio; may override strictness for trial runs. Views results of own group only. |
| operator | Belongs to a group. Inspects with published recipes (own group + shared) using the recipe's strictness. No Recipe Studio, no ad-hoc references. Views results of own group only. |
Groups
Each non-admin user belongs to a group (e.g. "line1", "line2"). Groups isolate data:
-- Recipes with a group are visible only to that group's members.
-- Recipes with no group are shared: every group can inspect with
them; only admins edit them.
-- 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"
}
}
}
Точность.
Это платформа визуальной инспекции на базе искусственного интеллекта, созданная для устранения человеческого фактора и обеспечения лабораторной точности каждой проверки. Нейросеть, обученная на реальных производственных данных, мгновенно и стабильно выявляет дефекты, отклонения и аномалии.
Скорость.
Задайте зоны интереса, сделайте снимки — и система выполнит анализ. Каждый результат фиксируется, прослеживается и доступен для просмотра в любое время. Операторы получают чёткие вердикты с оценкой уверенности, а руководители — статистику, историю и полный аудиторский след.
Уверенность.
Создано для производства. Доступно с любого устройства — компьютера или телефона. Установка не требуется — просто откройте браузер и начните инспекцию.
Каждая загруженная фотография проходит многоэтапный конвейер для поиска и анализа совпадающей зоны:
1. Глобальное выравнивание — входное изображение совмещается с эталоном методом SIFT (5000 ключевых точек) с FLANN-матчером и гомографией RANSAC. Это компенсирует угол, положение и масштаб камеры.
2. Сопоставление зон — из выровненного изображения извлекается каждая зона и ранжируется:
3. Детектирование дефектов — сравниваются эталон и извлечение:
Итоговое сходство =
50% глобальный косинус (layer 7) + 50% патч-косинус (layer 5).
4. Анализ подзон — подзоны используют ужесточённые пороги и HSV-гистограммное сравнение для выявления полностью отличающихся компонентов. Вердикт зоны = наихудший статус среди подзон.
5. Блендинг эталона — модуль auto-blend выравнивает несколько фотографий через SIFT (с обнаружением штрихкодов/QR как опорных точек) и усредняет их попиксельно для получения чистого эталона.
Откройте URL приложения. На странице входа введите ключ доступа, выданный администратором. Ключ привязан к имени оператора. Сеанс сохраняется 30 дней.
Операторы работают на экране инспекции:
У ведущих и админов есть ещё Recipe Studio (ссылка в шапке) для подготовки рецептов и быстрая проверка без рецепта (Шаг 2 — Zones) для проб.
Нажатие на индикатор Шаг 1 в любой момент сбрасывает сессию и возвращает к началу.
Строгость проверки задаётся в рецепте (значения для зон и подзон 0.00–2.00, по умолчанию 0.50 / 0.51; больше = строже). Оператор не может её менять. Ведущий и админ могут отметить Override в шапке для пробного прогона; без отметки используются значения рецепта.
Эталон относится к рецепту и задаётся в Recipe Studio, шаг 2 (см. раздел 3). У каждой версии рецепта свой эталон.
Каждый эталон проверяется на резкость, экспозицию и разрешение. Красная оценка блокирует публикацию, жёлтая — предупреждение. Используйте резкое, равномерно освещённое фото заведомо исправной платы, снятое так же, как будут снимать операторы.
«Blend several photos…» выравнивает 2+ снимка одной платы (SIFT, при необходимости по штрихкоду/QR) и усредняет их. Это уменьшает шум и блики.
На экране инспекции осталась область загрузки для пробных проверок: эталон, зоны, проверка. У таких результатов нет версии рецепта. Операторы эту область не видят.
Рецепт — всё, что нужно для контроля одного изделия: эталон, зоны и
подзоны, строгость, заметки для операторов и образцы исправных и бракованных плат. Рецепты
готовятся в Recipe Studio (/studio, ведущий и админ) и
используются на экране инспекции.
У рецепта есть версии: черновик → на линии → архив. Операторы всегда проверяют по версии на линии. Правка рецепта открывает новый черновик, а линия работает на текущей версии, пока черновик не опубликуют. Любую архивную версию можно вернуть на линию из списка версий. Каждый результат инспекции хранит номер версии рецепта.
Держите ракурс одинаковым. Высокие детали (конденсаторы, реле) с разных сторон выглядят по-разному, и никакое выравнивание этого не исправит. Снимайте образцы так, как операторы будут снимать платы: примерно с одного места и под одним углом. Эталон сам может быть снят под углом; важно, чтобы снимки были похожи на хорошие образцы. Калибровка для каждой зоны измеряет, насколько ракурс снимка отличается от типичного ракурса хороших образцов, и показывает те, что отличаются больше чем на 20°. При съёмке образцов телефон показывает ту же меру вживую (см. «Подсказка ракурса» в разделе о мобильной странице).
Снимайте так же, как будут снимать операторы: с рук, при обычном свете. Подключите телефон по QR-коду на шаге 4/5 (телефон использует те же настройки камеры, что и при инспекции) или загрузите фото с компьютера. Каждое фото выравнивается по эталону; на карточке видно, какие зоны целиком в кадре, и проблемы качества. Указывайте модель телефона: образцы должны быть с разных телефонов. «Exclude» оставляет фото, но не учитывает его.
Для дефектных образцов откройте Label и обведите каждый дефект рамкой на выровненном фото; зона и подзона определяются по рамке. Разметка сохраняется при последующей правке зон. Типы дефектов: missing (нет компонента), wrong part (чужой), shifted (смещён), rotated (повёрнут), contamination (загрязнение), damage (повреждение), other.
Нажмите Calibrate на шаге 6. Для каждой зоны система узнаёт по хорошим образцам, как выглядит нормальный разброс (разные платы, телефоны, свет), и проверяет каждый дефектный образец. Каждый хороший образец сравнивается со всеми остальными, поэтому отчёт показывает, сколько ложных тревог ждать на исправных платах; дефект пойман, если его оценка выше порога OK, и отчёт показывает, попало ли самое сильное отклонение в нарисованную рамку.
Оценка показывает, насколько необычно самое необычное место зоны по сравнению с хорошими образцами; около 1 — обычное значение. Отчёт — таблица: строка на зону, под ней её подзоны. У каждой зоны свой порог OK: введите число или выберите готовое значение: No false alarms (чуть выше худшего хорошего образца), Catch all defects (чуть ниже самого слабого дефекта) или Middle (посередине). Цифры обновляются сразу, затем Save limits. Пояснения спрятаны под кнопками ?; миниатюры открываются крупно по клику. По умолчанию порог — худший хороший образец × 1.10. Между порогом OK и 1.25 × порог — WARN, выше — DEFECT. Подзоны следуют порогу своей зоны.
Под каждой зоной отчёт показывает образцы, на которые стоит взглянуть: хорошие, снятые с другого ракурса, чем большинство хороших, или с оценкой намного выше остальных, и дефектные, снятые с другого ракурса (их оценка смешивает ракурс и дефект). Один необычный хороший снимок поднимает порог для всей зоны; исключите его, если зона на нём видна не так, как обычно, и откалибруйте заново. При инспекции к вердикту не OK для снимка с необычного ракурса добавляется совет переснять. Изменение образцов, зон или эталона делает калибровку устаревшей: перед публикацией откалибруйте заново.
Если при выбранных порогах часть дефектных образцов проходит как OK, ведущий всё равно может опубликовать: отметить, что пропуски приняты, и указать причину. Причина сохраняется вместе с версией и видна в списке версий. Меньше 3 разных исправных плат и образцы, снятые с необычного ракурса, — предупреждения. Ведущий публикует сам, когда ничего не блокирует; админ может опубликовать и с невыполненными требованиями.
Образцы привязаны к эталону, по которому выровнены. После замены эталона выровняйте их заново одной кнопкой на шаге 4; до этого они не учитываются.
Рецепт без группы — общий: по нему могут проверять операторы всех групп. Править общие рецепты в Studio может только админ.
Префикс (например «7334»), по которому проверяются серийные номера. Если код не начинается с маски, при инспекции появляется предупреждение «Mask mismatch».
Зоны рисуются в Recipe Studio, шаг 3, на эталоне рецепта. Нажмите Save zones, чтобы сохранить их в черновике.
Кликните и протяните мышью по эталону. Зоны нумеруются («Zone 1», «Zone 2»…) и раскрашиваются. Переименование — в списке зон, порядок — перетаскиванием за ручку, удаление — ×.
Нажмите значок прицела в списке зон и поставьте до 2 якорей. На телефоне они помогают оператору расположить плату.
Нажмите значок квадрата и нарисуйте до 10 прямоугольников внутри зоны. Подзоны анализируются отдельно и строже; статус зоны — худший из зоны и её подзон. Отметьте critical там, где любое отклонение — брак (вывод разъёма, полярный компонент): для каждой критичной подзоны перед публикацией нужен свой дефектный образец. Необязательное поле «sens» задаёт строгость только для этой подзоны.
Ctrl+scroll или кнопки +/-, 100%–800%.
Перед проверкой зон отсканируйте штрихкод / QR-код / DataMatrix для идентификации объекта. Загрузите фото с ПК или используйте мобильную камеру. Проверка зон заблокирована до сканирования. Распознанное значение отображается с типом кода (QR_CODE, CODE_128 и т.д.).
Перетащите одно или несколько фото зон в область загрузки, нажмите "Run Check". Файлы обрабатываются последовательно со счётчиком прогресса ("[1/5]", "[2/5]" и т.д.).
Каждое фото автоматически сопоставляется с наиболее подходящей зоной через многоэтапный анализ:
Сопоставленная зона сравнивается с эталоном:
Результат: SSIM, % дефектов, количество регионов, статус (OK / WARN / DEFECT), визуализация (карта дефектов, тепловая карта, вырезанная зона, эталонный кроп).
Если у зоны есть подзоны — каждая анализируется отдельно с более строгими порогами. Итоговый статус зоны = наихудший из (статус зоны, все статусы подзон).
После каждой проверки: 5 изображений (вход, эталон, вырезка, карта дефектов, тепловая карта), статистика, столбчатая диаграмма оценок всех зон, подзоны (если есть). Клик по изображению — полноразмерный просмотр в лайтбоксе.
Рецепт, опубликованный с калибровкой, проверяется по модели нормы: зона находится по выравниванию фото на эталон (без порога похожести), результат OK / WARN / DEFECT — по порогам калибровки. Тепловая карта показывает, где фото отличается от всех хороших образцов. Части зоны вне кадра не учитываются; в кадре должно быть не меньше 90% зоны. Рецепты без калибровки проверяются сравнением с эталоном, как раньше.
Пороги берутся из строгости рецепта (см. раздел 1). На плашке рецепта видна используемая версия, под ней — заметки ведущего для операторов. Каждый сохранённый результат хранит версию рецепта.
У каждой зоны и подзоны два результата:
Если оператор изменил результат, исходный отображается зачёркнутым со стрелкой к принятому статусу и значком карандаша.
Итоговый статус инспекции — наихудший эффективный статус всех зон. Эффективный = переопределение зоны > наихудшее переопределение подзон > расчётный. Любой DEFECT делает всю инспекцию дефектной. Любой WARN (без дефектов) — предупреждение.
Переключатель "auto" рядом с прогресс-баром. Когда все зоны OK и авто-принятие включено — результат автоматически сохраняется и через 3 секунды начинается новый объект.
"Close & Save" — сохраняет инспекцию (полную или частичную) и сбрасывает для следующего объекта.
Отменить текущий объект без сохранения. Сессия сбрасывается.
Очищает только не-ОК зоны для повторной съёмки без сброса всей инспекции.
В Шаге 3 отображаются QR-код и URL. Отсканируйте телефоном для открытия мобильной страницы. Отдельный вход не требуется.
Вкладка "Serial" — живая камера со сканирующей рамкой и анимированной линией. При распознавании звучит сигнал. Также можно выбрать фото из галереи.
Вкладка "Zone" показывает какую зону нужно снять. Переключение между зонами стрелками влево/вправо.
Пока зона наводится, внизу видоискателя видна подсказка: целиком ли зона в кадре и, для откалиброванного рецепта, насколько ракурс отличается от типичного ракурса хороших образцов рецепта. Зелёный — до 10°, жёлтый — до 20°, красный — больше. Для жёлтого и красного стрелка показывает, куда сдвинуть телефон. Это только подсказка, снимать можно всегда. Телефон ведущего при съёмке образцов в Recipe Studio показывает ту же подсказку относительно уже снятых хороших образцов (от 3 на зону). Когда наводятся сразу много телефонов, подсказки обновляются реже, чтобы проверки оставались быстрыми.
Если у зоны заданы якорные точки — на видео камеры показываются штриховые круги-ориентиры. В реальном времени определяются позиции якорей на изображении. При совпадении (зелёные круги + галочка) — можно снимать.
"Capture Zone" — снимок. Звук затвора. Фото проверяется сразу при загрузке, вердикт появляется на телефоне, полный результат — на десктопе (опрос каждые 1,5 секунды). Также можно загрузить несколько фото из галереи.
Мобильная страница опрашивает сервер каждые 5 секунд для синхронизации состояния с десктопом.
Прокрутите страницу вниз и нажмите "Inspection History" для раскрытия панели. Каждая строка: дата, время, серийный номер, шаблон, оператор, количество зон, итоговый статус, краткая статистика (OK/defect/warn, ср. оценка, макс. % дефектов). Переопределённые результаты помечены значком карандаша.
Введите в строку поиска. Формат: серийник / шаблон / оператор. Поддерживается
* как подстановка. Каждая часть фильтрует соответствующее поле. Пример:
7334* / Module XY / John.
Нажмите на строку для раскрытия: ряд статистики, кольцевая диаграмма (OK/Defect/Warn), столбцы оценок зон, карточки изображений с бейджами статуса и % дефектов. Карточки подзон имеют красную левую границу.
Нажмите на карточку изображения зоны — откроется полноразмерное сравнение снимка и эталона бок о бок.
Если принятый статус отличается от расчётного, на карточке зоны: расчётный -> принятый. Аналогично для подзон.
Кнопка "Print" на строке истории — генерирует формальный документ инспекции со всеми метаданными, таблицей зон (с переопределениями), графиками, изображениями зон. Открывает диалог печати браузера.
История загружается по 20 записей. "Load more" для просмотра старых результатов.
Появляется в Шаге 3 после проверки первой зоны. Содержит:
Все графики и счётчики обновляются в реальном времени по мере проверки зон.
Цветные чипы под панелью проверки: зелёный = OK, жёлтый = WARN, красный = DEFECT, синий = не проверена. Показывает эффективный статус (с учётом переопределений). Клик — просмотр результата зоны.
Показывает "N/M зон проверено" с процентным заполнением.
Маленький холст с полным видом эталона и наложением зон. Непроверенные зоны пульсируют; проверенные показывают статусный цвет и маркер.
При проверке всех зон: "ALL ZONES OK" (зелёный) или "ISSUES FOUND" (жёлтый). Показывает серийный номер. Кнопки для сохранения, пропуска или перепроверки.
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 — фильтр по операторуstatus — ok, warn или defectlimit — макс. результатов на страницу (по умолч. 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 — база данных недоступна# 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"}
Система использует групповое управление доступом с тремя ролями пользователей и привязкой API-ключей к группам.
Роли
| admin | Полный доступ ко всему. Без ограничений по группе. Правит все рецепты в Recipe Studio, включая общие; может опубликовать рецепт с невыполненными требованиями; видит все результаты, очищает историю. |
| lead | Принадлежит группе. Готовит, публикует и откатывает рецепты своей группы в Recipe Studio; может переопределить строгость для пробного прогона. Видит результаты только своей группы. |
| operator | Принадлежит группе. Проверяет по опубликованным рецептам (своей группы + общим) со строгостью из рецепта. Нет доступа к Recipe Studio и собственным эталонам. Видит результаты только своей группы. |
Группы
Каждый не-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": "имя_группы"
}
}
}