FACTUAL ACTIVITY RECORD · 実際の作業をもとにした活動記録
Codex Thread treeのlocal同期基盤をつくる
選択したrootからThread・Turn・公開可能Messageを読み、冪等な取込と再送を実装する
目的
後続の管理画面や公開表示を、推測したworkspace構造ではなく、実際に同期したCodexの会話構造から組み立てる必要があった。対象は選択したroot sessionとその配下に限定し、表示可能な会話だけをlocal databaseへ欠落・重複なく保存することを目指した。
実装
database migrationへdevice、environment、receipt、Thread、Turn、Messageを追加した。api.connector_ingest_v1はdevice認証、冪等key、FIFO、payload整合性を検査し、一つのtransactionで取込を確定する。
同期serviceにread-onlyのApp Server client、Thread reader、正規化処理を置き、公開可能なuser/agent Messageだけを抽出した。送信前のpayloadはSQLite outboxへ保存し、先頭から再送するsync-root経路を実装した。
図を描画しています…
確認したこと
確認結果
Fixture、database contract、unit testでroot/child/grandchild、冪等性、順序、再送、atomic failureを確認した。
実データでは選択した2つのrootからThread 2件、Turn 10件、Message 39件を同期し、対象外sessionとdummy会話がないことを確認した。
選択したrootにはchild/grandchildが存在しなかったため、実データ上の親子relationは未確認であり、fixtureとtestでの確認に留まった。
完了とした根拠
選択rootだけをread-onlyで取得し、公開可能Messageを冪等かつ再送可能な経路でlocal databaseへ保存できたことを完了条件とした。