Web開発
Show HN: ResolveHQ – Cloudflare Workers, D1, R2, および Queues 上に構築されたヘルプデスク
Show HN: ResolveHQ – A Helpdesk Built on Cloudflare Workers, D1, R2 and Queues (github.com)
要約
ResolveHQは、小規模サポートチーム向けのCloudflareネイティブでセルフホスト可能なヘルプデスクです。テナント分離された顧客、チケット、担当者、ステータス、優先度、タグ、全文検索を備えた共有受信トレイを実行できます。Cloudflareの各種サービスを活用し、メール処理、ファイル添付、AI支援応答、レポート機能などを提供します。
全文翻訳
ResolveHQ
ResolveHQは、小規模サポートチーム向けのCloudflareネイティブでセルフホスト可能なヘルプデスクです。
できること
テナントごとに分離された顧客、チケット、担当者、ステータス、優先度、タグ、全文検索を備えた共有受信トレイを実行できます。オーナーとしてサインアップし、チームメイトを招待し、組織を横断するワークスペーススイッチャーでオーナー/管理者/エージェントのロールを管理します。RFC 5322に従ってメールをスレッド化し、チケット間の件名のなりすましに耐性を持たせます。Cloudflare Email Routing経由でメールを受信し、Resend経由で送信します。配信ステータス、リトライ、冪等性のあるWebフックを備えています。送信返信には、リンクされた添付ファイルが含まれ、デッドレターキューは耐久性があり回復可能なレコードにドレインされます。検証および承認されたR2アップロードを通じて、チケットにファイルを添付します。保存された返信、内部メモ、AIでドラフトされた応答(オプトイン)、および楽観的バージョン競合処理を備えた応答性の高い3ペインの受信トレイで、より速く返信します。パスワードのリセットと招待の受け入れは、チケットメールと同じプロバイダーシームを介して送信されるシステムメールで行います。ナレッジベースの記事から公開ヘルプセンターを公開し、ドラフトはチームに非公開で保持します。レポートでボリュームと応答速度を追跡し、任意のウィンドウをCSVにエクスポートし、ルールベースの自動化でトリアージを自動化します。アプリ内での担当者への割り当てと顧客からの返信を通知し、ライトモードまたはダークモードで快適に作業します。顧客に関するすべての情報をJSONとしてエクスポートするか、キューに入れられたメールをキャンセルする耐久性があり再開可能なワークフローで削除します。自動回復: 5分ごとのcronジョブが停止したメールジョブをリトライし、ステージングデータと孤立したデータをクリーンアップします。ワークスペースごとにAI支援を制御します。管理者が設定で有効にするまでオフになり、その場合にのみチケットの会話がOpenAIに送信されます。TICKET_RETENTION_DAYS(例: 365)を設定すると、スケジュールされたスイープが、その期間より古い解決済みおよびクローズされたチケットを(添付ファイルを含めて)永続的に削除します。
インターフェース
ワークスペースは、Slack風のナス紺のサイドバー、セルフホストされたLatoタイポグラフィ、Lucideアイコン、Radix UIプリミティブを使用しています。テーマ対応のコントロールとステータスカラーは、ライトおよびダークワークスペースをサポートします。モバイルでは、ボトムナビゲーションとキーボードアクセシブルなワークスペースドロワーにより、すべての宛先が利用可能になり、チケット列は件名の読みやすさを維持するように適応します。Cmd/Ctrl+Kでページ間をジャンプします。サイドバーのドックには、通知、テーマ切り替え、アカウントアクションが含まれています。
仕組み
ResolveHQは、お客様のアカウントで単一のCloudflare Workerとして実行されます。Honoは、REST APIとReactアプリケーションの両方を提供します。Cloudflare D1はチケットと顧客を保持し、Cloudflare R2は添付ファイルを保持し、Cloudflare Queuesは送受信メールジョブを運びます。Cloudflare Email Routingは受信メールをWorkerに配信し、Resendは送信メールを送信します。チケットと添付ファイルはお客様のCloudflareアカウントに保存され、送信メールの内容はResendを通過します。
費用はいくらですか?
ResolveHQは、小規模なデプロイメントの場合、Cloudflareの無料プランで実行できます。ただし、Workers、D1、R2、Queues、Cron Triggers、およびEmail Routingの現在の制限を超えないことが条件です。CPU負荷の高い認証やメール解析にはWorkers Paidが必要になる場合があります。デプロイメントをベンチマークしてください。QueuesはWorkers Freeで利用可能です。R2はアカウントの有効化と請求設定が別途必要です。Resendは、独自の制限内で送信メールを処理します。無料プランの監査を参照してください。
デプロイ
開始する最も簡単な方法は、上記の「Deploy to Cloudflare」ボタンを使用することです。必要なもの:
Cloudflareアカウント。Workers FreeはQueuesをサポートします。R2は別途有効化してください。
Email Routingを設定するためのCloudflare上のドメイン。
オプションで、送信メールを送信するための検証済み送信ドメインを持つResendアカウント。
デプロイ後、ResolveHQのURLを開き、オーナーとしてサインアップします。オプションでサポートメールを指定すると、それがデフォルトの受信トレイになります。Cloudflareダッシュボードで、そのアドレスをデプロイされたWorkerに送信するEmail Routingルールを追加し、テストメールを送信して受信トレイに届くことを確認してください。デプロイフローがプロビジョニングするもの、必要な設定、初回実行セットアップ、および手動デプロイについては、デプロイガイドを参照してください。
ローカル開発
npm install
cp .dev.vars.local.example .dev.vars
npm run db:migrate:local
npm run db:seed:local
npm run dev
Viteアプリケーションはhttp://localhost:5173で実行され、/apiはhttp://localhost:8787のWranglerにプロキシされます。
ドキュメンテーション
デプロイと設定
アーキテクチャ
セキュリティ
オプション設定
AI支援: OPENAI_API_KEY(およびオプションでOPENAI_MODEL、デフォルトはgpt-4o-mini)をWorkerシークレットとして設定すると、AIが利用可能になります。各ワークスペースは設定でオプトインする必要があります。キーがない場合、機能は非表示のままになり、AI呼び出しは行われません。
保持期間: TICKET_RETENTION_DAYSをWorker変数として設定すると、解決済みおよびクローズされたチケット(添付ファイルを含む)が指定日数経過後に自動的に削除されます。未設定の場合は、何も自動削除されません。
未実装
多言語インターフェースとアプリ外の通知(メールダイジェスト)。
ライセンス
LICENSEを参照してください。