構造化されていない工場のデータを監査可能な追跡レコードに変換します。EPCIS 2.0 および EU デジタル製品パスポート要件をリアルタイムで満たします。
ユースケース: Agentic AI、Single View
製品: MongoDB Atlas、Atlas Stream Processing
パートナー: Amazon Web Services
ソリューション概要
追跡するおよび追跡は、原材料の調達から製造、流通、配送までの製品の旅のすべてのイベントを、接続された監査可能なタイムラインに記録するプラクティスです。
行動への圧力は現実です
グローバルな追跡と追跡の市場は、2030 年までに 12 億ドルに達すると予測されています。3 つの規制上の期限により、メーカーは対応を迫られています。
US DSCSA: アイテムレベルの医薬の直列化が必要で、供給錯程でのすべての処方薬を追跡します。
EU バッテリー パスポート: 2027 年 2 月までに、製造業者は EV バッテリーと産業用バッテリーのライフサイクル全体をドキュメント化する必要があります。
EU デジタル製品パスポート: 2030 が EU 内で販売するすべての製品について、検証可能なデジタルレコードが必要です。
これらの各々の指令には同じ要件があります。つまり、メーカーは、いつでも、製品がどこにあったか、そしてどのようになったかを正確に証明する必要があります。不足するコストは高くなります。例えば、医療機器のリコールは、2024年に前年比 8.6%増加し、1 件の製薬会社のリコールにより、最大 $600 万ドルのコストがかかる可能性があります。
データは存在しているが、アクセスが問題
これらの要件を満たすにはデータが必要ですが、ほとんどのメーカーはすでにデータを生成しています。問題は、そのうち 90% が使用されないことです。これらのデータは、分断されたサイロに存在しています。たとえば、フリーテキストの演算子ログ、不一致なタイムスタンプ、および、従来の ETL パイプラインでは固定されたスキーマと脆弱な解析ルールがないと取り扱えられない混合された測定単位などです。データがクリーンアップされて構造化されるころには、リコールの防止やコンプライアンスの期限に間に合わせるためのウィンドウはすでに閉じています。
このソリューションの仕組み
断片化された工場データとコンプライアンス対応のレコードの間のギャップはエンジニアリングの問題です。このソリューションは、MongoDB Atlas と AWS Bedrock を使用して生の工場フロアイベントを構造化されたクエリ可能な製品履歴に接続することで、このギャップを埋めます。
工場の生イベントは到着次第 MongoDB に保存され、Amazon Web Services Bedrock を活用した AI クリーニング パイプラインを通じて移動します。パイプラインは各イベントを構造化された EPCIS 2.0 準拠のレコードに正規化します。製品の完全な流れは 1 つのドキュメントに保存されるため、コンプライアンス監査官または供給錯マネージャーは、ジョインや別のシステムにクエリすることなく、1 回の読み取りでカストディの全チェーンを検索できます。
規制業界ではすでにこのアーキテクチャが大規模で実行されています。
McKesson 1.2は年間 7900 億個の医薬品のシリアル番号を追跡し、MongoDB Atlas で DSCSA の連邦期限を達成しました。
GE HealthCare は、Change Streams と Atlas Search を使用してデータ取得時間を 83% 短縮しました。
Bosch は航空機 1 機あたり 6 万件の締め付けイベントを追跡し、FAA に完全に準拠した監査記録を保持しています。
参照アーキテクチャ
提案されたアーキテクチャは、次のコンポーネントに依存します。
MongoDB Atlas は統一データプラットフォームとして機能します。
AWS Bedrock は AI の推理を取り扱います。
Next.js ウェブアプリケーションは、製品の流れをリアルタイムで表示します。
図 1 。追跡と追跡ソリューションアーキテクチャ
ワークフローは、工場のイベントが検証や事前プロセシングなしで MongoDB に到着したときに開始します。次に、Atlas Stream Processing は各イベントをプロセシングキューにルーティングします。そこから、Change Stream は Amazon Web Services Bedrock をトリガーし、それによって非構造化された生テキストが構造化され、EPCIS 2.0 準拠のレコードに変換されます。最後に、MongoDB はクリーンイベントを保存し、製品のジャーニードキュメントを更新して、プロセス全体を数秒以内に完了させます。
製品の全履歴は 1 つのドキュメントに保存されています。Web アプリケーションは、ジョインなしで 1 つのクエリでカスタディの完全なチェーンを検索します。
データモデルアプローチ
MongoDB の製品ドキュメントは、単純なものから始まり、製造の各段階で拡大していきます。以下の 2 つのドキュメントは、その進化を示しています。
生イベント
工場イベントは、演算子が書き込んだとおり、検証や事前処理なしで正確に到着します。
{ "text": "ALERT | BATCH-GM005-037 | ShenZhn WH | 06:15:00Z - rcvd \n raw mat'ls from Tianhe Biosci. Qty: 1000u glucose oxidase. \n Temp: 4.2C avg. Purity: 99.3%. 12 units MISSING — QA hold \n ref#QH-2024-001.", "stage": "Raw Materials Sourcing", "_timestamp": "2025-01-15T06:15:00.000Z" }
製品ドキュメント
プロセシング後、クリーンアップされたイベントは製品ドキュメントを更新します。製造の各ステージで、journey 配列に新しいエントリが追加されます。以下に示すように、カストディの完全な連鎖は 1 か所にあります。
{ "_id": "GM-005", "productName": "Continuous Glucose Monitor", "status": "in_production", "currentStage": "Enzyme Coating", "journey": [ { "stage": "Raw Materials Sourcing", "status": "completed", "location": "Shenzhen, CN", "startTime": "2025-01-15T06:15:00.000Z", "eventCount": 3 }, { "stage": "Electrode Fabrication", "status": "completed", "location": "Penang, MY", "startTime": "2025-01-16T07:00:00.000Z", "eventCount": 4 }, { "stage": "Enzyme Coating", "status": "in_progress", "location": "Penang, MY", "startTime": "2025-01-17T08:00:00.000Z", "eventCount": 1 } ] }
ソリューションのビルド
Github リポジトリの README の手順に従って、このソリューションを再現してください。
アプリケーションを実行する
次のコマンドを実行して、アプリケーションをローカルで起動します。
npm run dev
http://localhost:8080 に移動し、Start Simulation をクリックしてパイプラインを通じたイベントのプロセシングを開始します。
キーポイント
取り込みとプロセシングを分離する: ダウンストリームの負荷に関わらず、生イベントは直ちに MongoDB に取り込まれます。Atlas Stream Processing はルーティングを独立して取り扱い、取り込みレイヤーを高速でシンプルに保ちます。
Change Streams を使用して反応型 AI パイプラインをビルドする: Change Stream は、イベントが到着した瞬間に AI プロセシングをトリガーし、イベントの見落としのリスクをゼロにしてポーリングやメッセージ キューの必要を除きます。
取り込み時にはいかなるスキーマを受け入れ、出力時に構造を強制します。取り込みレイヤーは検証なしで操作します。その代わり、構造は AI クリーニングパイプラインで強制され、そこではすべてのイベントがイベントコレクションに書き込まれる前に EPCIS 2.0 に正規化されます。
最新の状態だけでなく、ジャーニーを埋め込む:すべてのステージ、ロケーション、アノマリーは単一の製品ドキュメントに存在し、コンプライアンス監査官はジョインなしで全てのカストディチェーンを1回の読み取りで検索できます。
AI ででたらめなデータを使用可能な情報に変換する: AI によるクリーニング パイプラインは、略語、入力ミス、単位の不一致、フィールドの欠落を取り扱うことができます。標準が変更された場合は、複雑な ETL コードを書き換えるのではなく、プロンプトを更新できます。
作成者
Humza Akthar, MongoDB
Javier Guajardo, MongoDB