Commit Graph

80 Commits

Author SHA1 Message Date
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
06c28e8b5a oldCode: 旧LINEWORKS/Pleasanter連携コード一式を追加
express/LINEWORKS_Pleasanter/LINEWORKS_sendMessage、いずれも過去の
Express実装。Gitea移行に伴い保管。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-05 10:42:21 +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