Commit Graph

40 Commits

Author SHA1 Message Date
Kenichiro NOGI
4b14d992af feat: get-voice-mailに取得範囲フラグ追加、n8nワークフローを1件ずつループ処理化
大量ファイル処理時のn8nメモリ枯渇対策として、SplitInBatches(1件ずつ)で
SSHダウンロード→base64化→プリザンター登録を直列化(n8n側、API経由で反映済み)。
Webhookに?range=today|week|allを追加、app-portal側にも選択UIを実装。
2026-09-19 11:43:21 +09:00
Kenichiro NOGI
6c9893c24b fix: get-voice-mailにpackage-lock.json追加
npm ci実行にlockfile必須のため、Dokployビルドがexit code 1で失敗していた。
2026-09-19 11:10:05 +09:00
Kenichiro NOGI
76700845fe feat: get-voice-mail app-portalキッカー追加、app-portal UIをBootstrap化
get-voice-mailはn8n Webhookへの中継専用アプリ(SCP取得・プリザンター書込はn8n側で実施)。
app-portalはBootstrap 5導入で見た目を刷新(カード/モーダル/トースト化)。
dokploy-webapp SKILLはGitea統合(NodeSrv→ken_nogi)後の設定変更を反映。
2026-09-19 11:06:02 +09:00
Kenichiro NOGI
bdec81838e docs: 計画書のテスト数見積もりを実測値(5ファイル32テスト)に修正 2026-09-05 18:52:49 +09:00
Kenichiro NOGI
c03a2376ca feat: 社員マスタ(504412)照合ロジック(メール整合性チェック・フリガナ補完)を追加 2026-09-05 18:50:21 +09:00
Kenichiro NOGI
1b8018da6e README更新: 全ワークフローのn8nデプロイ完了・フォルダ作成を記録
HC-SUB(7ノード)を既存id XRqcykbG2LuAjGG2へ上書き、HC-WP(5ノード)
を既存id swXfpoDtwZDT3Hwkへ上書き、HC-WA(14ノード)を新規id
0i0Ze3Gq0Waof3Faで作成、いずれもactive化してコントローラーが
直接実行(HTTP 200)。n8nフォルダ「健康診断ワークフロー」
(hOx8WKrdOucllbcU)も作成済み。3ワークフローのフォルダ移動は
transfer APIの制約(別プロジェクト専用+active解除の副作用)により
ユーザーがUIで手動実施する運用に。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:49:04 +09:00
Kenichiro NOGI
c1b62d19b4 fix(hc-wa-lineworks-response): alwaysOutputDataをノードトップレベルへ移動
n8nのINode仕様ではalwaysOutputDataはparameters内でなくノード
オブジェクト直下のプロパティ。前回の修正でparameters内に置いて
しまい効果が無かった(0件マッチ時に後続Codeノードが実行されない
問題が未解決のままだった)ため、正しい位置へ移動。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:40:59 +09:00
Kenichiro NOGI
3c8b98e48a fix(hc-wa-lineworks-response): レビュー指摘3件を修正
- ノード3: $input.first()を$('Webhook').first()に修正し、署名検証が
  常に失敗する致命的バグ(誤ったノードのJSONを参照していた)を解消
- ノード4: Data Table GetにalwaysOutputData:trueを追加し、0件ヒット時に
  後続の異常系ハンドリングが起動しない問題を解消
- ノード5: Processが見つからない場合の三項演算子フォールバックを
  廃止し、旧実装通り明示的にthrowするよう変更(黙って即実行させない)
2026-09-05 18:37:42 +09:00
Kenichiro NOGI
530607203a 計画書サンプルコードの$input.first()バグを修正(Task11再構築で発見)
署名検証Codeノードの直前がWebhookでなくData Table(設定値一括取得)
になったため、裸のinput.first()だとconfig行を拾ってしまい常に
署名検証失敗になるバグだった。$('Webhook').first()に修正。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:35:44 +09:00
Kenichiro NOGI
83d568a493 feat(healthcheck-survey-bot): HC-WAワークフローを60ノードから14ノードへ全面リビルド
分岐ロジック・Pleasanter/LINEWORKS API呼び出しをCodeノードへ集約する新ルールに
合わせて再構築。IF/JWT/Execute Workflow/Data Tableは専用ノードのまま維持しつつ、
業務ロジックは4つのCodeノードに集約した。デプロイ・n8n API呼び出しは未実施。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:29:30 +09:00
Kenichiro NOGI
c8ce15385a refactor: HC-WPの設定値取得をfilter付きGetから一括取得+Codeフィルタに変更
n8nワークフロー構築の基本ルール(Data Table利用最小限)に合わせ、
HEALTHCHECK_WP_API_KEYの取得方法をfilters付き単一キーGetから
returnAll:trueの一括取得+Codeノード内find()に変更。ノード数は
5のまま変わらず。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:17:37 +09:00
Kenichiro NOGI
33057b8dab docs: README記述をToken取得ボディ修正後の実装に合わせて更新 2026-09-05 18:16:14 +09:00
Kenichiro NOGI
df0c836573 fix(healthcheck-survey-bot): LINEWORKS token交換のhttpRequestボディ指定を修正
URLSearchParamsを.toString()した上でjson:trueを併用すると
Content-Typeがapplication/jsonに上書きされうる不整合があり、
LINEWORKSアクセストークン取得が失敗する恐れがあったため、
生のURLSearchParamsをbodyに渡しjson:trueと手動Content-Typeを除去。
レスポンスはtypeofで文字列/オブジェクトを判定しJSON.parseする形に変更。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:13:43 +09:00
Kenichiro NOGI
675cf4a321 refactor: HC-SUBワークフローを7ノード構成にリビルド
新プロジェクトルール(Data Table最小限・Code集約)に合わせ、旧19ノード版
(個別キーごとのData Table Get×7、HTTP Requestノード×6)を廃止。
設定値一括取得→Pleasanter照会・選択肢組み立て→JWTクレーム組み立て→
Sign JWT→アクセストークン取得・LINEWORKS送信→状態更新の7ノードに集約。
デプロイは行わず、ローカルJSON作成・検証のみ(コントローラーが同一ID
XRqcykbG2LuAjGG2へPUTする想定)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:07:15 +09:00
Kenichiro NOGI
935e58e384 計画書Task9-11をCodeノード集約方式に全面改訂(基本ルール反映)
ユーザー指示により、n8nワークフロー構築の基本ルールを確定:
(1)Data Table利用は最小限(config値取得は1回のreturnAll取得+
Codeノードでフィルタ、複数のGetノードを並べない)、(2)入口は
Webhook+Codeでノード数を抑える、(3)外部システムへのHTTP
Requestノードは使ってよい(Codeノード内this.helpers.httpRequest
への無理な集約は不要)。JWT署名・Data Table読み書きのみ専用
ノードを維持。

これによりHC-SUB 19→7ノード、HC-WA 60→11ノード目安に再設計。
Task11で発生した「認証チェーンを分岐ごとに複製」問題も、
Codeノード1つに分岐ロジックを集約することで解消。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 18:02:26 +09:00
Kenichiro NOGI
3dccdefdcb fix(hc-wa-lineworks-response): 認証チェーンの分岐前無条件実行と暗黙ハングを解消
Botマスタ取得/JWTクレーム組み立て/Sign JWT/アクセストークン取得をSwitch分岐前の
トランクから外し、直接LINEWORKS API呼び出しを行う4箇所(追加案内送信/日付エラー
送信/ファイル未着送信/LINEWORKSファイルダウンロード)それぞれの直前に複製配置。
待機状態取得0件時とSwitch未一致時に無応答でハングする経路には、明示的な
エラーRespond to Webhookへ誘導するIFノード/フォールバック出力を追加した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 17:49:02 +09:00
Kenichiro NOGI
8c8d748a07 feat: HC-WAワークフロー(LINEWORKS応答受信)を追加
LINE WORKSからの応答を受ける唯一のWebhook受信口(45ノード)をローカルJSONとして作成。
awaitInput(none/date/file)3分岐のSwitchで、既存プロセス選択・日付入力・ファイル添付の
各応答パターンをHC-SUB(Task 9)へ橋渡しする。秘密値はすべてworkflow_config_values経由の
Data Table参照。デプロイ・activateはコントローラー側で別途実施(本コミットはローカル定義のみ)。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 15:48:02 +09:00
Kenichiro NOGI
ac27659061 feat: HC-WPワークフロー(Statusプッシュ通知)を追加
サブエージェントがJSON構築とセルフレビューを実施(実キーAPIコール
がAuto Modeの分類器にブロックされたためデプロイ未実施)。デプロイ・
active化はコントローラーが直接実行(workflow id swXfpoDtwZDT3Hwk)。
秘密情報はworkflow_config_valuesから参照、ハードコードなし。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 15:34:03 +09:00
Kenichiro NOGI
4c11e4b868 fix(healthcheck-survey-bot): IF processId existsの参照バグを修正
HEALTHCHECK_SITE_ID取得(Data Table Get)の直後で$json.processIdを直接参照
していたため、上流フィールドが置き換えられ常にundefinedと評価され、
Process実行分岐が発火しない不具合を修正。他ノードと同様に
$('Execute Workflow Trigger').item.json.processIdを参照するよう変更し、
n8n(id: XRqcykbG2LuAjGG2)へ再デプロイ済み。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 15:18:51 +09:00
Kenichiro NOGI
90d057aac9 feat: HC-SUBワークフロー(プロセス実行+案内送信)を追加
WP・WAから共通利用するExecute Workflow Triggerサブワークフローを実装。
秘密値・SiteId等はすべてworkflow_config_values(bNkadTyDgDepYx2p)から
Data Tableノード経由で取得し式参照、ハードコードなし。デプロイ・active化
まで実施、実行テスト(LINEWORKS実送信)は次段階でユーザー確認後に実施する。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 15:11:30 +09:00
Kenichiro NOGI
fa0e0f4faf 計画書Task9-12を秘密情報のworkflow_config_values参照方式に修正
ユーザー指摘により、n8nワークフロー内の秘密情報(Pleasanter
ApiKey、LINEWORKS Client Secret等)をCodeノードに直接ハードコード
する設計(旧計画)から、org-master-sync系ワークフローが実際に
使っている方式(既存n8n Data Table「workflow_config_values」
id:bNkadTyDgDepYx2pから各キーをDataTableノードで都度取得し、
式で参照する)へ全面的に修正した。

あわせて健康診断管理用の新規設定値6件をworkflow_config_valuesへ
実際に登録済み: LW_BOT_CLIENT_ID/LW_BOT_CLIENT_SECRET/
LW_BOT_SERVICE_ACCOUNT(LINEWORKS通知送信ワークフローと同じBot
認証情報)、HEALTHCHECK_SITE_ID(508971)、
LINEWORKS_BOT_MASTER_SITE_ID(484184)、HEALTHCHECK_DATA_TABLE_ID
(jqMDa2YZTI4f0iQ7)。HEALTHCHECK_WP_API_KEY(WP Webhook認証用に
新規生成)も追加登録済み。LINEWORKS_BOT_SECRET(署名検証用)は
値未確定のためキーの参照方法のみ計画に反映し、値はTask11着手時に
別途登録する。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:59:56 +09:00
Kenichiro NOGI
231ae739eb 計画書をTask8の実結果(updatedAt列非対応)に合わせて修正
n8n Data Tableはupdatedatを予約システム列名として拒否するため
7列構成になった(Task8実施結果)。Task9のDataTable upsert記述
からupdatedAtへの言及を削除し、作成済みテーブルid(jqMDa2YZTI4f0iQ7)
を明記した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:47:49 +09:00
Kenichiro NOGI
ba474f998d docs: healthcheck_bot_state Data Table作成結果を記録 2026-09-05 14:45:13 +09:00
Kenichiro NOGI
8ecef72c18 feat: n8n Public API操作用の共通スクリプトを追加 2026-09-05 14:41:11 +09:00
Kenichiro NOGI
66f31d5dee feat: LINEWORKS Webhook署名検証ロジックを追加 2026-09-05 14:37:44 +09:00
Kenichiro NOGI
20396f465d feat: Process抽出・回答照合・追加入力判定ロジックを追加 2026-09-05 14:35:08 +09:00
Kenichiro NOGI
0405c3a089 feat: ツールチップ文言のプレースホルダー置換ロジックを追加 2026-09-05 14:32:42 +09:00
Kenichiro NOGI
16732f0ab0 計画書サンプルコードの和暦計算バグを修正(Task3実装で発見)
ERA_INFO[era] + eraYear - 1 は令和6年を2023年に誤変換するバグ
だった(正しくはeraYear単純加算で2024年)。Task3実装者が実装時に
発見・修正し、reviewerも正しさを検証済み。計画書のサンプルコード
側も今後の参照者のため同じ修正を反映。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:31:43 +09:00
Kenichiro NOGI
3573d1b78f feat: 日付パースロジックを追加 2026-09-05 14:29:08 +09:00
Kenichiro NOGI
0bee14f18c Task2完了: Process入力検証タブのJSON構造を実機実績から確認
508971への新規テストProcess追加なしで、既存本番プロジェクト
「実行予算WF申請」(SiteId 376872)の取得済みprocesses.jsonに
入力検証タブの実例があり、そこから構造(ValidateInputs配列、
各要素{Id, ColumnName, Required})を確認できた。508971への
書き込みが不要になったため、Task2の内容と手順を計画書側も
実態に合わせて修正。Task5のサンプルコード内のキー名も
Validations→ValidateInputsへ修正。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:27:09 +09:00
Kenichiro NOGI
8c8cb332bb feat: healthcheck-survey-botプロジェクト雛形を追加 2026-09-05 14:14:34 +09:00
Kenichiro NOGI
08a0b87dcf 実装計画にTask13(社員マスタ504412照合ロジック)を追加
メールアドレス整合性チェック・フリガナ補完の判定/補完ロジックを
TDDで実装するタスクを追加。実行タイミング(保存時/定期バッチ/
手動)は未確定のため、呼び出しトリガーは意図的にスコープ外とし、
決まり次第別タスクとして追加する方針を明記した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 14:04:06 +09:00
Kenichiro NOGI
bee42dc56d 実装計画に504412連携は別タスク扱いである旨を明記
Bot対話フロー(HC-SUB/WP/WA)の実装計画と、社員マスタ(504412)に
よるメールアドレス整合性チェック・フリガナ補完は別軸のタスクと
して切り離すことをGlobal Constraintsに追記。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 13:59:14 +09:00
Kenichiro NOGI
5fa82fda43 設計書に504412利用目的(メール整合性チェック・フリガナ補完)を具体化
Bot対話フローとは独立した補助機能として8章に新設。504412の
列構成(Class011=ユーザID, Class036=PLメールアドレス,
Class003/004=姓名カナ)を明記し、508971のメールアドレス整合性
チェックとClassD(フリガナ)補完の参照先として使う設計にした。
2章の記述は重複を避け8章への参照に整理。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 13:58:28 +09:00
Kenichiro NOGI
64e8b8d011 設計書に社員マスタ(504412)の裏付け利用先を追記
508971自体の入力値だけでは社員属性の信頼性が不十分な場合の
裏付け手段として、org-master-syncが同期している社員・組織
マスタ管理テーブル(SiteId 504412)を参照できる旨を明記。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 13:56:16 +09:00
Kenichiro NOGI
3b904e6214 健康診断管理LINEWORKS連携の実装計画を追加
設計書(2026-09-05-healthcheck-lineworks-survey-n8n-design.md)を基に、
12タスクの実装計画を作成。純粋ロジック(日付パース/プレースホルダー
置換/Process抽出/署名検証)はNode.jsでTDD、n8nワークフロー構築は
既存のLINEWORKS通知送信ワークフロー(JWT署名→トークン取得→Bot API
送信)とdataTableノードの実機パターンを踏襲する形で具体化した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 11:25:45 +09:00
Kenichiro NOGI
2939487c4f 健康診断管理LINEWORKS連携設計をプロセス機能流用型に全面改訂
ヒアリングで判明した実際のフロー(日程通知→了承/変更→受診確認→
結果受取り)がステータス駆動の対話型であり、単純な順次質問アンケート
ではないと判明。LINE WORKS Bot APIに「トークを開いた」検知イベントが
存在しない制約も踏まえ、プッシュ型通知+フォールバック応答方式に変更。
フロー定義用の新規マスタは作らず、プリザンター標準のProcess機能
(現在の状況/変更後の状況/ツールチップ/入力検証タブ)をそのまま
定義source として使う設計に切り替えた。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 10:57:20 +09:00
Kenichiro NOGI
5abf932fa6 docs(org-master-sync): n8n production移行の設計メモを追加
模倣(Mock)Users/Depts/Groupsテーブルの設計意図と実態乖離、
staging/production分離、config値修正、①③④④-1④-2④-3の
標準API化(models/groups/{id}/update等の実機検証結果込み)を記録。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 10:40:17 +09:00
Kenichiro NOGI
8e8bbcde6e 健康診断管理LINEWORKSアンケートn8n化の設計書を追加
Express実装(ケアセブン向け)をn8nへ作り直すにあたり、健康診断管理
プロジェクト固有の要件(508971へ統合、既存Bot/Usersマスタ流用、
n8n Data Tableでのセッション管理)を反映した設計をbrainstormingで
まとめた。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 10:30:00 +09:00
Kenichiro NOGI
ce58cb4be4 初回コミット: dev配下(NodeSrv/Pleasanter等)をGitea管理下に統合
GitHub(nextgroup2706/ken_nogi)は今後使わず自社Gitea運用に切替え。
NodeSrvは旧リポジトリの履歴を破棄しファイルのみ統合(Dokploy用サービスアカウントは
別途mygit-admin/NodeSrv.gitに履歴あり)。notepmエクスポート(12GB)とPleasanter
インストーラzip(208MB)はサイズが大きいため.gitignoreで除外。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-04 15:37:06 +09:00