n8n へ送る機能の使い方と通信の決まりを文書に追加

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-13 06:24:08 +09:00
co-authored by Claude Opus 5.5
parent c37622fdba
commit 929f702cc6
2 changed files with 47 additions and 7 deletions
+32 -4
View File
@@ -6,8 +6,8 @@ Claude Code の **タスク(セッション)ごとのチャットのやり
「いつ何を頼んで、返事が来るまで何秒かかって、その作業が何分続いたか」を表にします。
追加ライブラリなし(Python 3.9+ の標準ライブラリのみ)。
外部への通信は **[Redmine へ起票](#redmine-へ起票)** を使ったときだけです。それ以外は
ローカルの jsonl を読むだけで、どこにも接続しません。
外部への通信は **[Redmine へ起票](#redmine-へ起票)** と **[n8n へ送る](#n8n-へ送る)** を使ったときだけです。
それ以外はローカルの jsonl を読むだけで、どこにも接続しません。
## 起動
@@ -34,6 +34,7 @@ python chktime.py
| `--dir` | `~/.claude/projects` | ログの置き場所 |
| `--interval` | 2.0 | ログ更新を見に行く間隔(秒)。自動追従の反応速度 |
| `--redmine-config` | `redmine.json` | Redmine 連携の設定ファイル |
| `--n8n-config` | `n8n.json` | n8n 連携の設定ファイル |
| `--no-browser` | – | ブラウザを自動で開かない |
## 画面
@@ -112,7 +113,7 @@ python chktime.py
## Redmine へ起票
ヘッダの **Redmine へ起票** で、作業の記録を Redmine のチケットにまとめて登録できます。
**このアプリで唯一、外部へ通信する機能**です。使わなければ一切接続しません。
外部へ通信する機能です(ほかに [n8n へ送る](#n8n-へ送る) があります)。使わなければ一切接続しません。
### 準備
@@ -141,6 +142,30 @@ git 履歴のまとめ方は **日ごと / 日 × 種別(`feat:` `fix:` `docs:
- 起票は 1 件ずつ間隔を空けて流すので、**数十件だと数分かかります**。進捗と結果(チケット番号/失敗理由)はダイアログに出ます。実行中もダイアログは閉じられます。
- Redmine は**作成時の状態指定を無視する**ため、状態を指定した場合は作成直後に更新をもう 1 回投げて付け直します(1 件あたり 2 回アクセスします)。
## n8n へ送る
右ペインの **n8n へ送る** タブで、Claude のセッションから作った「作業区間」を
n8n の work-tracker(`work_log`)に送れます。手で作業開始・終了を記録しなくても済むようにするための機能です。
- **作業区間**: 同じセッションの中で、応答が終わってから次の発言までの空きが 30 分未満ならつなぎ、
30 分以上で区切ります。5 分未満の区間は出しません(どちらも接続設定で変更可)。
まだ応答中・ログ更新から 30 分以内の最後の区間は「進行中」で、送れません。
一晩中動かし続けたセッションは 1 つの長い区間になるので、送る前に時間を確かめてください。
- **続きのセッション**: 会話を続けると前の履歴が新しいセッションのファイルに同じ時刻のまま写されます。
開始時刻が同じ区間は写しとみなし、いちばん後まで続いているものだけを出します。
- **タスク名**: 初期値は `[作業フォルダ名] セッションのタイトル`。「選ぶ」で Redmine のチケットを検索して選ぶと
`[Redmine のプロジェクト名] #番号 題名` になり、work-tracker の Redmine 工数同期とガントの実績に載ります。
決めた名前はセッションごとにブラウザが覚え、同じセッションの他の区間にも入ります(切り替え可)。
- **重なり**: すでに work_log にある記録や、一覧の他の区間と時間が重なる区間には印が付き、最初は送らない状態です。
- **二重登録の防止**: 区間ごとの `source`(`chktime:<セッションID>:<開始時刻>`)を work_log に保存し、
n8n 側で同じ `source` は追加しません。送信済みの区間は選べません。
ただし 2 つの画面から同時に送ると二重に入ることがあります(確認と追加が一度の処理ではないため)。
- **時刻**: 送るときはブラウザの値を使わず、サーバーがログから区間を計算し直します。
- **設定**: `n8n.json`(git 管理外。`--n8n-config` で場所を変更可)。タブの「接続設定」からも変えられます。
`{"url": "https://n8n.yfox.jp", "token": "<合言葉>", "verifySsl": false, "gapMinutes": 30, "minMinutes": 5}`
合言葉は n8n の Header Auth 認証情報(ヘッダー `X-WT-Token`)と同じ値。画面とログには出しません。
- 送り先は n8n のワークフロー `work-tracker--import`(`/webhook/wt-import-rows` と `/webhook/wt-import`)。
## 解析の仕様(ざっくり)
- ターンの起点は「人間の発言」。ツール実行結果・システム挿入・サブエージェントの発言は起点にしません。
@@ -153,9 +178,12 @@ git 履歴のまとめ方は **日ごと / 日 × 種別(`feat:` `fix:` `docs:
## ファイル
```
chktime.py サーバ + jsonl 解析 + Redmine 連携
chktime.py サーバ + jsonl 解析 + Redmine 連携 + n8n 連携
web/index.html 画面
web/app.js 表示ロジック
web/n8n.js 「n8n へ送る」タブ
web/style.css スタイル
redmine.json Redmine 連携の設定(APIキーを含む。git 管理外・自動生成)
n8n.json n8n 連携の設定(合言葉を含む。git 管理外)
tests/ unittest(python -m unittest discover -s tests -v)
```