Commit Graph

64 Commits

Author SHA1 Message Date
Kenichiro NOGI
ccd1fa3947 docs: マニュアル画像挿入用のスクリーンショット撮影テスト計画を追加 2026-09-11 18:55:12 +09:00
Kenichiro NOGI
57104c9e67 docs: 健康診断Bot運用マニュアル(管理担当者向け)を新仕様ベースで再作成 2026-09-11 18:53:45 +09:00
Kenichiro NOGI
74f6215c2e docs: DescriptionB列のLabelText変更(健康診断内容)を記録 2026-09-11 18:44:59 +09:00
Kenichiro NOGI
b09c32a6c9 docs: 未対応事項3件(テストPDF削除/文言修正2件)の対応完了を記録 2026-09-11 18:39:32 +09:00
Kenichiro NOGI
e111d1405d docs: パターンC/HC-WP実機テスト結果とDescriptionB構造変更を記録 2026-09-11 18:31:48 +09:00
Kenichiro NOGI
5dc5056ad8 docs: 「担当者に連絡」文言修正(総務・契約関連窓口URL)を記録 2026-09-11 18:08:48 +09:00
Kenichiro NOGI
44ee8781a9 docs: Botトークフロー再設計の実装完了を記録 2026-09-11 18:02:17 +09:00
Kenichiro NOGI
db25941158 feat: 508971へ自分手配Process用の反映スクリプトを追加 2026-09-11 16:08:40 +09:00
Kenichiro NOGI
3e51710d9f feat: Get方式のISO8601日付文字列をyyyy/mm/dd表記に正規化、未設定日付(1899-12-30)は空欄化
NormalizeGetValueを追加し、getRecordsDataToSheetの値格納時に適用。
オブジェクト値の空欄化処理もこの関数に統合。
2026-09-11 14:30:01 +09:00
Kenichiro NOGI
cb01653d77 feat: runExportFlow/runGetFlowにAPI通信・書込処理の区間計測(Timer)を追加
Export方式の処理時間がGet方式より長い件を調査するため計測を追加。
結果、ボトルネックはAPI通信側(サーバー処理)でパース・書込処理ではないと判明したため、今後の検証用に計測コードは残す。
2026-09-11 14:26:56 +09:00
Kenichiro NOGI
81c9f67331 feat: D7切替を廃止しExport/Get両方を毎回実行、出力先をtableId+E/Gシートに分離
D7による方式切替をやめ、run()実行のたびにExport方式・Get方式を両方実行するよう変更。
Export結果は tableId&"E" シート、Get結果は tableId&"G" シートへ別々に保存。
両シートが分かれたため、Get→Export切替時のヘッダ残留対策(既存テーブル削除)は不要になり削除。
処理時間はD4〜D6に両方式合計で記録。
2026-09-11 14:20:30 +09:00
Kenichiro NOGI
2192c9718f fix: Sorter表をH:I列からJ:K列に移動しFilter表との隣接によるテーブル自動結合を回避
F2:G2(Filter表)とH2:I2(Sorter表)が隣接していたため、ListObjects.Add実行時にExcelが1つの連続テーブルとして扱い「テーブルは他のテーブルと重ねることはできません」エラーが発生。間に1列(I列)空くよう配置変更。
2026-09-11 14:04:20 +09:00
Kenichiro NOGI
d4a6b5c12a fix: getRecordsDataToSheetのrec変数をDictionary型に変更しByRef型不一致を解消
FlattenRecord(record As Dictionary)へVariant型変数をByRef渡ししていたためVBEでコンパイルエラー発生。呼び出し側の変数型をDictionaryに合わせて修正。
2026-09-11 14:01:42 +09:00
Kenichiro NOGI
243ecb1b4b fix: run()のエラーハンドリング・失敗検知とGet→Export切替時のヘッダ残留・配列値クラッシュを修正
最終レビューで指摘されたImportant4件に対応:
- run()にエラーハンドラを追加し、失敗時もCalculation/ScreenUpdatingを確実に復元
- runExportFlow/runGetFlowをBoolean化し、データ取得失敗をD3に反映
- Get方式実行後のExport方式実行でヘッダが残留する問題を、既存テーブル削除で解消
- getRecordsDataToSheetでオブジェクト値(JSON配列等)による実行時エラーを回避
2026-09-11 13:50:06 +09:00
Kenichiro NOGI
fabee98ea1 feat: Filter表・Sorter表を自動作成するSetupFilterSorterTablesを追加 2026-09-11 13:37:17 +09:00
Kenichiro NOGI
2454478c65 feat: run()をExport/Get分岐フロー化し処理時間計測(D4-D6)を追加 2026-09-11 13:34:35 +09:00
Kenichiro NOGI
96133b8929 feat: Get方式のレコードをテーブルに書き込むgetRecordsDataToSheetを追加 2026-09-11 13:30:34 +09:00
Kenichiro NOGI
167e2ba5d9 feat: ClassHash等のネスト構造を展開するFlattenRecordを追加 2026-09-11 13:27:26 +09:00
Kenichiro NOGI
d3d844d441 feat: Get API(api-record-get-multi)でレコードを取得するgetRecordsDataを追加 2026-09-11 13:25:01 +09:00
Kenichiro NOGI
adfd140d9b feat: exportCSVDataがBuildViewFromSheetでFilter/Sorterを組み立てるよう変更 2026-09-11 13:21:40 +09:00
Kenichiro NOGI
b8ef165fdf feat: Filter/Sorter表からViewパラメータを組み立てるBuildViewFromSheetを追加 2026-09-11 13:18:03 +09:00
Kenichiro NOGI
4dc4b0cc1d feat: 取得方式(D7)を読み込むfetchMethod変数を追加 2026-09-11 13:12:33 +09:00
Kenichiro NOGI
ee1448504c docs: Filter/Sorter対応・API仕様訂正をspecに反映
PleasanterのGet API仕様(PageSizeはクライアント指定不可、Response.Dataが直接配列、ClassHash等のネスト構造)を公式マニュアルで確認し訂正。
併せてFilter/Sorter条件をシート上の表で指定できる機能をExport/Get共通で追加する設計に更新。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 11:14:24 +09:00
Kenichiro NOGI
6f33339d43 docs: Export/Get方式切替の設計書を追加
Pleasanter Export APIとGet API(api-record-get-multi)の処理時間比較機能の設計をまとめた。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-11 11:02:14 +09:00
Kenichiro NOGI
95f2acba85 健康診断管理Botトークフロー再設計の実装計画を追加
パターンA(受診日時)・パターンB(受診結果確認、新規)の実装タスクと、
508971実データ1件を使い回す実機トークテスト手順(巻き戻しスクリプト込み)を明記。
2026-09-10 14:21:51 +09:00
Kenichiro NOGI
bd6a605539 健康診断管理システムのn8nワークフロー設計ドキュメントとPleasanter操作スクリプトを追加
n8nに構築済みのHC-SUB/HC-WP/HC-WAワークフロー設計・実装計画・エクスポートJSONを
Pleasanter/健康診断管理/docs/n8n/に集約管理。508971/513156のColumns/Styles/Summaries
反映用ワンショットスクリプトも合わせて追加。worktree-healthcheck-survey-botブランチを
mainへfast-forward mergeし、.claude/worktrees/はgit管理対象外に追加。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-06 09:02:14 +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