AI-система простежуваності харчових продуктів

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
AI-система простежуваності харчових продуктів
Складний
від 1 тижня до 3 місяців
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1284
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1196
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    901
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1119
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    586
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    853

AI-система простежуваності продуктів харчування

Простежуваність - ключова вимога харчової безпеки: при виявленні проблеми необхідно за хвилини локалізувати всі порушені партії. AI автоматизує збір даних ланцюжка та робить відгук точковим, а не масовим.

Архітектура простежуваності

One-up/One-down принцип:

Кожен учасник ланцюга знає, від кого отримав та кому віддав продукт. AI пов'язує всі ланки у граф:

from datetime import datetime
import json
import hashlib

class TraceabilityRecord:
    """Запись прослеживаемости для партии продукта"""

    def __init__(self, lot_id, product_code, quantity_kg, timestamp=None):
        self.lot_id = lot_id
        self.product_code = product_code
        self.quantity_kg = quantity_kg
        self.timestamp = timestamp or datetime.now().isoformat()
        self.inputs = []          # из каких партий сделан (сырьё)
        self.processing_params = {}  # производственные параметры
        self.outputs = []         # в какие партии ушёл (полуфабрикат, готовая)
        self.shipments = []       # кому отгружен

    def add_input_lot(self, input_lot_id, quantity_used, quality_params=None):
        """Добавить входящую партию сырья"""
        self.inputs.append({
            'lot_id': input_lot_id,
            'quantity_kg': quantity_used,
            'quality': quality_params or {},
            'timestamp': datetime.now().isoformat()
        })

    def record_processing(self, params):
        """Записать производственные параметры"""
        self.processing_params = {
            **params,
            'recorded_at': datetime.now().isoformat()
        }

    def add_shipment(self, destination_id, quantity, transport_conditions=None):
        """Записать отгрузку"""
        self.shipments.append({
            'destination': destination_id,
            'quantity_kg': quantity,
            'transport': transport_conditions or {},
            'timestamp': datetime.now().isoformat()
        })

    def generate_lot_hash(self):
        """Хэш записи для верификации целостности"""
        data = json.dumps({
            'lot_id': self.lot_id,
            'inputs': self.inputs,
            'processing': self.processing_params
        }, sort_keys=True)
        return hashlib.sha256(data.encode()).hexdigest()


class TraceabilityGraph:
    """Граф прослеживаемости для анализа и отзывов"""

    def __init__(self):
        import networkx as nx
        self.graph = nx.DiGraph()

    def add_lot(self, lot: TraceabilityRecord):
        self.graph.add_node(lot.lot_id, data=lot.__dict__)
        for inp in lot.inputs:
            self.graph.add_edge(inp['lot_id'], lot.lot_id, quantity=inp['quantity_kg'])
        for shipment in lot.shipments:
            self.graph.add_edge(lot.lot_id, shipment['destination'], quantity=shipment['quantity_kg'])

    def recall_simulation(self, problem_lot_id):
        """Выявить все партии, затронутые отзывом"""
        import networkx as nx
        # Все потомки (вниз по цепи): куда ушёл проблемный продукт
        downstream = nx.descendants(self.graph, problem_lot_id)
        # Все предки (вверх по цепи): из какого сырья сделан
        upstream = nx.ancestors(self.graph, problem_lot_id)

        return {
            'problem_lot': problem_lot_id,
            'downstream_lots': list(downstream),
            'upstream_lots': list(upstream),
            'total_kg_at_risk': sum(
                self.graph.nodes[lot]['data']['quantity_kg']
                for lot in downstream
                if lot in self.graph.nodes
            )
        }

Інтеграція з ЧЕСНИЙ ЗНАК

Маркування харчової продукції:

  • Молоко та молочні продукти: з 1.06.2021 (Постанова 1550) - Вода упакована: з 2022 - Бізес: реєстрація у ГІС МТ, друк кодів DataMatrix

AI-автоматизація роботи з маркуванням: - генерація заявки на коди → прийом кодів → нанесення на упаковку - автоматичне підтвердження введення в оборот при відвантаженні - Reconciliation: коди в системі vs. фізична наявність → виявлення розбіжностей

Аналітика та запобігання проблемам

Predictive quality control:

ML-модель на виробничих даних + історія відгуків: - Параметри процесу, що виходять за допуск → який % цих партій історично призводив до скарг? - Проактивний карантин: партія проходить посилений контроль до випуску - Економіка: 1 превентивний карантин > 1 відгук з ринку (у 10-50 разів дешевше)

Моніторинг холодового ланцюга:

IoT-логери в транспорті та холодильниках: - Порушення температурного режиму → автоматичне оновлення терміну придатності - ML-розрахунок Mean Kinetic Temperature (MKT) з історії температур - Перерахунок залишкового терміну придатності партії

Термін розробки: 4–6 місяців для системи простежуваності з інтеграцією ЧЕСНИЙ ЗНАК, графом простежуваності та моніторингом cold chain.