Temporalを使ったドキュメント検証ポータル(temporal-request-docs-example)
概要
このリポジトリは「Document Verification Portal」を題材に、Temporalを使った耐久的ワークフローと、FastAPI + Vue.jsによるフロント/バックエンドの連携を示すサンプル実装です。ユーザーが提出した身分証明書をAI(Google Gemini)で一次判定し、その結果を人間が確認・承認する「ヒューマンインザループ」型のワークフローを持ちます。Temporalによりワークフローの状態やタイムアウト、再試行などが安全に管理され、実運用で必要な耐障害性や可観測性の取り扱い方を学べる構成になっています。
リポジトリの統計情報
- スター数: 1
- フォーク数: 0
- ウォッチャー数: 1
- コミット数: 3
- ファイル数: 9
- メインの言語: HTML
主な特徴
- Temporalを用いた耐久的で可観測なワークフロー実装例
- FastAPIによるバックエンドAPIとTemporalのワーカー連携
- Vue.jsベースのシンプルなフロントエンド(ドキュメント提出UI)
- Google Gemini AIを組み合わせた自動判定+人間レビューのハイブリッド検証
技術的なポイント
本プロジェクトの要点は「Temporalによるワークフローオーケストレーション」と「人間の介入を含む長時間にわたる処理の取り扱い」にあります。Temporalはワークフローの状態をサーバー側で永続化し、アクティビティ(外部呼び出しやサイドエフェクト)を安全に再実行できるため、AI判定のAPI呼び出しや人間のレビュー待ちなど、失敗や中断が発生しやすい処理を堅牢に扱えます。activities.pyにはワーカー側で実行されるアクティビティが実装され、main.pyはワーカー/ワークフローの起動やTemporalクライアントの初期化を担う想定です。FastAPIはRESTエンドポイントを提供してフロントエンドからドキュメント提出やステータス取得を受け付け、ワークフローの開始やシグナル送信を行います。Vue.jsのindex.htmlはユーザーインターフェースを担い、アップロードやレビュー結果の表示、レビュー担当者への通知などのフローを実演します。さらに、AI判定(Google Gemini)との連携部分では、モデルからのスコアをワークフローに取り込み、閾値による自動承認/要レビューの分岐や、レビューのためのタスク作成とタイムアウト設定が重要となります。設計上は、アクティビティの冪等性、適切なタイムアウトと再試行ポリシー、シグナル/クエリによる外部イベント処理がポイントです。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file(不要ファイルや環境依存ファイルの除外設定)
- README.md: file(プロジェクト説明、セットアップや使い方の概要)
- activities.py: file(Temporalワーカーで実行されるアクティビティ群/AI呼び出しや通知処理等)
- index.html: file(Vue.jsを用いたシンプルなフロントエンドのエントリ)
- main.py: file(ワーカー/Temporalクライアント起動、API連携等のエントリポイント)
…他 4 ファイル(設定や依存関係定義、テンプレートなどが含まれる想定)
まとめ
Temporalを軸にAI判定と人手レビューを組み合わせる実装例として学びやすいリポジトリです。(約50字)
リポジトリ情報:
- 名前: temporal-request-docs-example
- 説明: 説明なし
- スター数: 1
- 言語: HTML
- URL: https://github.com/josemiguel/temporal-request-docs-example
- オーナー: josemiguel
- アバター: https://avatars.githubusercontent.com/u/646317?v=4
READMEの抜粋:
Document Verification Portal
A durable document verification system built with Temporal, FastAPI, and Vue.js. This application demonstrates human-in-the-loop workflows where users submit identity documents that are validated using Google Gemini AI.