Skip to content

Latest commit

 

History

History
104 lines (80 loc) · 6.34 KB

File metadata and controls

104 lines (80 loc) · 6.34 KB

ToDo(タスク・ルール)

Claude Code に頼みたいことのメモと、守らせたい共通ルールを 1 か所で持つ層。 もとは cc-tasks という別のアプリだったが、メモを溜めて後から引くという点で notes と同じことを二重に持って いたので、こちらへ寄せた。

画面は管理画面の 1 面(/admin/todo)。実装は app/views/todo.py、 ドメイン層は app/tasks.py

専用のテーブルを持たない

タスクもルールも chiezo_memory の文書 1 件で、種別・状態・所属はタグで表す。 おかげでスキーマの変更が 1 つも要らず、task タグを付けたメモが そのままタスクとして並ぶ

概念 表現
タスク tag task の文書
状態 未着手 状態のタグが無い(既定)
状態 着手中 / 完了 tag 着手中 / 完了
「直すのが大変そう」の印 tag 難所(状態とは別軸)
タスクの所属 プロジェクト名のタグ(リポジトリ名をそのまま使う既存の慣習に乗る)
プロジェクト 設定の置き場(chiezo_settings)の1 件に、全部を JSON でまとめて持つ
プロジェクトのアーカイブ その JSON の archived
ルール tag rule の文書。本文が Markdown
ルールの無効 tag 無効

外に出す面を持たない

Chiezo は安全なネットワークの中からしか触らせない。 ポートを外へ開かないこと。

以前は、やること層だけを Google のログイン付きで外へ公開する別プロセス (chiezo-tasks / 7015)を立てられるようにしていた。本体(7010)を公開すると 次のものが一緒に外へ出てしまうので、面をプロセスごと分けるという考え方だった:

公開した場合
POST /v1/ai/complete サーバー側の鍵で AI を叩ける
POST /v1/media/image|audio|video|speech 生成が走る。課金に直結
/admin 数時間かかる取り込みを起動できる
DELETE /v1/chiezo_memory/{doc_id} メモを消せる

この分け方はやめて、外に出す面ごと畳んだ。理由は 2 つ:

  • 守る面が 1 つでも外にあると、守りを持ち続けることになる。 認証・CSRF・ レート制限・リダイレクト URI の許可リスト・セッションの置き場は、どれも 「外に出しているから要るもの」で、出さないなら丸ごと要らない
  • 画面の作りが 2 系統あった。 管理画面はサーバーで組んだ HTML、やること層は ビルドの要る SPA(Vue + PWA)。同じサーバーの中で操作の見た目も配り方も違い、 直すたびにどちらの流儀かを思い出す必要があった

畳むときに落としたものが 2 つある。メモの一覧 —— 短期記憶は記憶の面 (/admin/memory)とブラウズ画面(/search/chiezo_memory/...)で読める。 見比べ —— 管理画面に同じものがある(/admin/media)。

画面(/admin/todo)

1 画面に全部出す。 タスク・完了・プロジェクト・ルール・書き出しを縦に並べ、 行き来は頭の目次だけで済ませる。タスクとルールは同じ日に触るもので、画面を分けると 「ルールを直してからタスクを流す」のたびに読み込み直しになる。

  • JS はインラインの confirm まで(管理画面の流儀)。開閉は <details>、 並び替えはドラッグではなく ↑↓ のフォーム。確認を出すのは取り消せない操作にだけ
  • 一覧の行を開くと、そこで編集できる。 読むだけの行と編集の画面を分けない
  • 書いたら押した場所へ戻る(303 + #アンカー)。断られた理由は ?error= で 帯に出す —— ドメイン層は HTTPException を投げるので、素通しすると画面の 代わりに JSON が出る
  • ✳ を押すと Claude Code が開く。 タスクのタイトルと本文をプリフィルし、 プロジェクトの GitHub リポジトリと規約リポジトリをセッションに含める (app/views/todo.pyclaude_code_url)。この層の主目的がこれ
  • 完了は畳んである。 見に来るのは「あれは片付いたか」を確かめるときだけ

持ち出しと取り込み

DB を失っても打ち直さずに戻せるようにするためのもの。書き出したものが そのまま読み込みの入力なので、テキストで手元に置いておけば控えになる。

  • 書き出すのは未完了のタスクと、その入れ物(プロジェクトの名前・説明・リポジトリ)
  • 完了タスク・並び順・アーカイブ状態は入らない —— 戻したいのは待ち行列であって、画面の状態ではないため
  • 取り込みは冪等((プロジェクト名, タイトル)で照合して飛ばす)。 入れ替えも追加も、先に「下見」で何が入るかを出す

ルールも同じ形で往復できる。「まとめて表示」で出る 1 本の Markdown を貼り付ければ 戻せる(## 見出し で区切る)。無効にしてあるルールは連結に載らないので、 移したいなら書き出す前に一時的に有効へ戻すこと。

todo から task への移行

タスクを表すタグは task。以前は todo だったが、あれは「あとでやる」くらいの 意味で普通のメモにも付くので、タスクの基準にするとメモがタスクに化ける。

移行を流さないと、それまでのタスクが画面から消える(基準が task タグになるため)。

python scripts/migrate_todo_to_task.py --notes-dir data/notes          # 下見
python scripts/migrate_todo_to_task.py --notes-dir data/notes --apply  # 実行

--apply を付けるまで何も書き換えない。書き込むので chiezo-app は止めてから 実行すること。何度流しても同じ結果になる(todo を持ち、まだ task を持たない ものだけが対象)。自動では流さない —— 移行後に付けた todo(普通のメモの つもりのもの)まで巻き込むわけにいかないため。