ディスクから復元された古い「チェック中…」は嘘なので、6つの... ノート

ディスクから復元された古い「チェック中…」は嘘なので、6つのストアのうち1つにファイルがありません。

Notifio は、賃貸物件検索ページを監視し、新しいリスティングをユーザーに通知するように設計されたデスクトップアプリケーションです。このアプリケーションは、それぞれ独自のライフサイクルルールを持つ 6 つの異なるアプリケーション状態を管理します。これらのルールは、各状態が何を表すかという根本的な問いから導き出されます。検索、メール、ライセンスなどの構成設定は config.json に保存され、すべての操作で永続化されます。検索ページのベースラインはディスクに保存されますが、アプリケーションの再起動後は信頼されず、次回のチェック時に再評価されます。最近の発見は finds.json に保存され、アプリケーションの再起動や検索の再設定に耐えるように設計されており、重要な履歴として機能します。返信台帳は ledger/replies.ndjson に保存され、送信済みメッセージを追跡し、クラッシュ後のデータ整合性を確保するために追記専用となっており、コンパクションによってその成長が処理されます。アップグレード権限は entitlement.json に保存され、その有効性を示す鮮度フラグが含まれています。検索実行ごとのライブ状態は、現在のチェックとステータスを追跡しており、古い情報が表示されるのを避けるために、意図的にメモリ内にのみ保持されます。このメモリ内状態は非常に重要です。クラッシュ後にこれを永続化すると、アプリケーションの現在の活動が誤って表示されてしまいます。停止ボタンは、説明された実行が終了したため、このライブ状態をクリアします。このライブ状態への変更は、レンダラーを圧倒しないように、エミットされる前に統合されます。各検索のページベースラインは、リスト内での位置ではなく、URL のハッシュによって識別され、リスト編集に関連するバグを防ぎます。ベースラインの経過時間は、ファイルの最終更新タイムスタンプによって決定され、別途 lastCheckedAt フィールドの必要性をなくします。発見情報と返信台帳は、それらに関連しないアクションによって削除されてはならない履歴です。発見履歴は、検索ごとのスナップショットとは別に保持されます。なぜなら、検索の再設定を行うと、貴重な履歴データが消去されてしまうからです。返信台帳の追記専用性質とコンパクションは、クラッシュ安全性を提供し、メッセージ追跡を処理します。最後に、各状態のライフサイクルは、その根本的な目的、つまりユーザーの意図、発生したイベント、外部世界の情報、または一時的なリアルタイムデータによって決定されます。