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)。
1 画面に全部出す。 タスク・完了・プロジェクト・ルール・書き出しを縦に並べ、 行き来は頭の目次だけで済ませる。タスクとルールは同じ日に触るもので、画面を分けると 「ルールを直してからタスクを流す」のたびに読み込み直しになる。
- JS はインラインの
confirmまで(管理画面の流儀)。開閉は<details>、 並び替えはドラッグではなく ↑↓ のフォーム。確認を出すのは取り消せない操作にだけ - 一覧の行を開くと、そこで編集できる。 読むだけの行と編集の画面を分けない
- 書いたら押した場所へ戻る(303 +
#アンカー)。断られた理由は?error=で 帯に出す —— ドメイン層はHTTPExceptionを投げるので、素通しすると画面の 代わりに JSON が出る - ✳ を押すと Claude Code が開く。 タスクのタイトルと本文をプリフィルし、
プロジェクトの GitHub リポジトリと規約リポジトリをセッションに含める
(
app/views/todo.pyのclaude_code_url)。この層の主目的がこれ - 完了は畳んである。 見に来るのは「あれは片付いたか」を確かめるときだけ
DB を失っても打ち直さずに戻せるようにするためのもの。書き出したものが そのまま読み込みの入力なので、テキストで手元に置いておけば控えになる。
- 書き出すのは未完了のタスクと、その入れ物(プロジェクトの名前・説明・リポジトリ)
- 完了タスク・並び順・アーカイブ状態は入らない —— 戻したいのは待ち行列であって、画面の状態ではないため
- 取り込みは冪等((プロジェクト名, タイトル)で照合して飛ばす)。 入れ替えも追加も、先に「下見」で何が入るかを出す
ルールも同じ形で往復できる。「まとめて表示」で出る 1 本の Markdown を貼り付ければ
戻せる(## 見出し で区切る)。無効にしてあるルールは連結に載らないので、
移したいなら書き出す前に一時的に有効へ戻すこと。
タスクを表すタグは 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(普通のメモの
つもりのもの)まで巻き込むわけにいかないため。