Commit Graph

103 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
4b8498ba2d chore: callRestApiのデバッグログをコメントアウト(削除せず必要時に復活できるよう保持)
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 19:09:58 +09:00
Kenichiro NOGI
0544365276 fix: テーブル書込みをDataBodyRangeプロパティに依存しない実装に全面変更
DataBodyRangeは、直前と同一サイズへのResizeだけでなくヘッダ+1データ行という特定サイズへのResizeでも
内部状態が更新されずNothingのままになるケースがあり、tempRows経由の2段階Resizeでも解消しなかった。
根本対応として、exportCSVDataToSheet/getRecordsDataToSheet/exportCSVDataToExistingTableの3関数で
DataBodyRangeを一切使わず、tbl.Range(ヘッダ含む全体範囲)から直接Offset/Resizeで計算したRangeに
クリア・書き込みを行う方式に統一。調査用デバッグログも整理した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 19:07:02 +09:00
Kenichiro NOGI
97f371db3f debug: D3セルの状態メッセージをイミディエイトウィンドウにも出力
処理開始/完了/失敗のD3表示内容を[D3]プレフィックス付きでDebug.Printし、フリーズ調査時にログだけで状態を追えるようにした。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 19:01:48 +09:00
Kenichiro NOGI
49ef4c5358 fix: テーブルResizeでヘッダのみ(1行)への一時縮小がExcelにエラーとして拒否される問題を修正
前回のDataBodyRange Nothing対策で「一旦ヘッダ行のみにリサイズ」する方式にしたところ、
「テーブルには1行以上のデータが必要」という理由でExcel側にResize自体を拒否されるケースがあった。
現在の行数・目的の行数のいずれとも確実に異なる一時サイズ(rows.count+現在行数+1等)を経由する方式に変更し、
常に1行以上のデータ行を含んだ状態でリサイズすることで回避。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 19:01:05 +09:00
Kenichiro NOGI
e879b0f584 feat: runExportFlowにもGet方式と同じFilter/Sorter条件を適用
exportCSVDataのOptional viewObj引数にBuildViewFromSheet()の結果を渡すことで、
FilterTable/SorterTableの絞り込み・並び替え条件がExport方式にも反映されるようにした。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:57:06 +09:00
Kenichiro NOGI
a60244b7b0 fix: テーブルResize時にDataBodyRangeがNothingのままになる問題を修正
Excelのテーブル(ListObject)は、直前と同一サイズへのResizeを行うとDataBodyRangeの内部状態が更新されないことがあり、
データ行数が変わらない場合(前回0件クリア後に1件だけ取得した場合など)にDataBodyRange.Value代入が効かず、
テーブルにデータが書き込まれない不具合があった。
exportCSVDataToSheet/getRecordsDataToSheet/exportCSVDataToExistingTableの3箇所で、
一旦ヘッダ行のみにリサイズしてから目的のサイズにリサイズし直すことで回避。
調査用の詳細デバッグログ([DEBUG] records.count等)も合わせて追加。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:56:37 +09:00
Kenichiro NOGI
67b9f8c0f8 fix: Export/Get方式とも0件取得時にテーブルのデータ部分をクリアするよう修正
従来は0件時にMsgBoxを出して即終了し、テーブルの前回データがそのまま残ってしまっていた。
runGetFlowはrecords.count=0でもgetRecordsDataToSheetを呼ぶよう変更し、getRecordsDataToSheet/exportCSVDataToSheetは0件時にMsgBoxを出さずヘッダを維持したままDataBodyRangeだけクリアするよう修正。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:44:42 +09:00
Kenichiro NOGI
06340cdb7b debug: レスポンスステータス・本文全文を出力するデバッグコードを追加
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:39:03 +09:00
Kenichiro NOGI
7745fc6858 debug: リクエストボディ出力ログを再度復活
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:38:05 +09:00
Kenichiro NOGI
413de865f0 fix: 入力チェックの名前付き範囲を「物件状況」から正しい「選択状況」に修正
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:34:10 +09:00
Kenichiro NOGI
51e1e166d4 chore: リクエストボディのデバッグログを削除
Filter/Sorter動作確認が完了したため撤去。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:31:17 +09:00
Kenichiro NOGI
b9150c0461 fix: 選択営業所/物件状況チェックの型不一致エラー(実行時エラー13)を解消
Range(...).Valueが配列やエラー値を返すケースでTrimが型不一致エラーになっていた。
Cells(1,1)で単一セル値を取得し、IsErrorチェック+CStrで文字列化してから判定するよう修正。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:29:48 +09:00
Kenichiro NOGI
bc03b2d47b feat: run()実行前に「選択営業所」「物件状況」の入力チェックを追加
名前付き範囲が空欄の場合はアラート表示して処理中断する。runSalesOfficeExportには適用しない。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:28:09 +09:00
Kenichiro NOGI
d7a8457114 fix: exportCSVDataToSheetが既存テーブルでもヘッダ行を毎回CSVの最新列構成で更新するよう修正
従来は新規テーブル作成時のみヘッダを設定し、既存テーブルがある場合はヘッダを書き換えていなかったため、
Pleasanter側で列の追加・削除・並び替えが起きるとヘッダラベルとデータ列がズレる問題があった。
getRecordsDataToSheet(Get方式)と同様、テーブルの有無に関わらず毎回CSVの1行目でヘッダを上書きするよう変更。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 18:12:31 +09:00
Kenichiro NOGI
13cad20ead fix: exportCSVDataToExistingTableをシート名指定からテーブル名検索(FindListObjectByName)に変更
「営業所」テーブルがどのシートにあってもブック全体から見つけられるよう、既存のFindListObjectByNameを再利用する方式に統一。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:02:27 +09:00
Kenichiro NOGI
6dc6ede9a9 fix: 営業所マスタExportを既存テーブルへの上書き専用に変更、新規シート・テーブル作成を廃止
exportCSVDataToSheetはtargetSheetと同名のテーブルを探す仕様のため、実際のテーブル名が一致せず新規シート・テーブルが作られてしまっていた。
exportCSVDataToExistingTableを新規追加し、テーブル名を問わず「営業所」シート上の既存テーブル(1つ目)に直接上書きする方式に変更。シート・テーブルが存在しない場合は新規作成せずエラー表示のみ。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 10:01:00 +09:00
Kenichiro NOGI
e455fe0a21 feat: runSalesOfficeExportにNumA昇順のソート条件を固定で追加
exportCSVDataにOptionalなviewObj引数を追加し、営業所Export専用にColumnSorterHash(NumA:asc)を渡すよう変更。
既存のrunExportFlowはviewObj省略のためViewなしのまま、既存動作に影響なし。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 09:58:00 +09:00
Kenichiro NOGI
70d9eb974b feat: 営業所マスタ(96243)Export専用の独立Sub runSalesOfficeExportを追加
既存run()とは別の独立エントリポイント。テーブルID 96243をExport方式(ExportId=1)で全件取得し「営業所」シートの既存テーブルを更新する。
Filter/Sorterは使わない。exportCSVDataToSheetが既存テーブルのヘッダを書き換えずデータ部分のみ更新する仕様をそのまま利用し、CSVのヘッダ行は自動的に捨てられる。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 09:56:02 +09:00
Kenichiro NOGI
631e66242f fix: FilterTable/SorterTableを基本情報シート限定でなく全シートから名前で検索するよう修正
defaultSh(基本情報シート)固定で探していたため、ユーザーが別シートにテーブルを配置した際にBuildViewFromSheetが見つけられずViewが常に空になっていた。
FindListObjectByNameを追加し、ブック内の全シートを走査してテーブル名で検索するよう変更。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 09:48:41 +09:00
Kenichiro NOGI
d83d74afdc debug: リクエストボディ出力ログを復活
検証がまだ終わっていない段階で削除してしまったため復活。Filter/Sorter動作確認が完了するまで残す。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 09:44:38 +09:00
Kenichiro NOGI
1eb1a7dc87 fix: BuildViewFromSheetをセル座標指定からテーブル名(FilterTable/SorterTable)参照に変更
Filter表・Sorter表の配置をユーザーが移動したところ、固定セル座標(F3/J3)読み取りのため条件が反映されずViewが空になっていた。
ListObjects("FilterTable")/("SorterTable")をテーブル名で取得し、1列目=項目名・2列目=値/昇降順という列位置ベースで読むよう変更。テーブルをシート上のどこに配置しても動作する。
デバッグ用に追加していたリクエストボディ出力ログも削除。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-14 09:43:27 +09:00
Kenichiro NOGI
3bfdf3b73e fix: Filter値をJSON配列文字列(["値"])として渡すよう修正
Pleasanter ColumnFilterHashは選択肢項目の値をJSON配列文字列で受け取る仕様のため、単純な値のままでは条件が無視され全件返っていた。単一値を1要素配列にラップして解消。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-13 18:33:10 +09:00
Kenichiro NOGI
460b540997 feat: Filter/Sorter条件をGet方式のみに適用、Export方式からは除外
exportCSVDataのBuildViewFromSheet呼び出しを削除。Export方式は常に全件取得、Get方式のみ基本情報シートのFilter表・Sorter表を反映する。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-13 18:09:07 +09:00
Kenichiro NOGI
a423b5fd6f docs: Process4のValidateInputsが無くてもServerScript+条件タブで入力漏れが構造的に防げることを確認
CheckC(日程情報入力済)がServerScriptにより3項目全入力時のみtrueになり、
Process4の条件タブがCheckC=true限定のため、Process5実行時点で入力漏れは起きない。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:57:02 +09:00
Kenichiro NOGI
99d4bb1b34 fix: Num047列がProcess4「検査機関確定」用に既存予約されていたのに気づかず衝突、Num048へ分離
Process19用カウンタ追加時に「空き番号」と誤認して既存予約と衝突していた。
Num047を本来の用途(検査機関確定)へ戻し、診断書再提出依頼はNum048を
新規追加して分離。両サイトで実機確認済み。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:53:58 +09:00
Kenichiro NOGI
44a08c2753 fix: 508971の既存12件でClassZ・ClassD未入力を発見、504412から補完してファイル名歯抜けを解消
実施年度エリア・フリガナが空のまま運用すると、診断書PDFファイル名や
通知文が歯抜けになる不具合を事前に発見。社員マスタから姓・名カナを
照合して全件補完した。必須化はユーザー側で後日設定する方針。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:48:26 +09:00
Kenichiro NOGI
326307ad0e feat: Process19「診断書再提出依頼」にNum047カウンタ列を追加、集計テーブルへも反映
既存17Processと同じパターンでカウンタ列・DataChanges・Summaries設定を
508971/513156両サイトへ追加し、実機でフラグ立ちと集計テーブルへの
反映を確認した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:37:42 +09:00
Kenichiro NOGI
70492700e7 docs: HC-DOC-TIMEOUT重複バグ修正の再検証完了を記録
修正反映後の実行履歴でtargetsが正しく1件になることを確認、実機でも
1通のみ届くことを確認した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:32:21 +09:00
Kenichiro NOGI
f9e85a29f5 fix: HC-DOC-TIMEOUT実機テストでn8n Data Tableノードの重複返却バグを発見・修正
returnAll:trueで取得した行が45件重複して返る不具合を確認。複数resultIdを
forループで個別処理する設計だったため実害リスクがあり、resultIdでの
ユニーク化を追加した。他ワークフローは最初の1件のみ参照または集約する
設計のため影響なしと確認。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 17:13:52 +09:00
Kenichiro NOGI
5e7bcb64be fix: HC-REMINDER実機テストでDate004列欠如と⑥文言バグを発見・修正、②③⑥⑦全パターン確認完了
⑦日程未確定の催促が実装当初から一度も動作していなかった根本原因(Date004列が
508971に未定義)を特定し、列追加+EditorColumnHash配置で解消。⑥再検査催促の
文言も⑦と同じ導線修正漏れがあったため合わせて修正。n8nコンテナのタイムゾーン
(Asia/Tokyo)も確認し、Schedule Triggerの発火時刻に問題がないことを確認した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 16:20:23 +09:00
Kenichiro NOGI
21b1593344 docs: Process→HC-WP通知の自動連携を実機確認、$btn未定義バグとCORSブロックの修正を記録
Pleasanter画面のボタンクリックのみでLINEWORKS通知が届くことを確認。
これまで挙げていた最優先の未実装課題(手動Webhook操作が必要な状態)が解消した。

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-12 15:41:20 +09:00
Kenichiro NOGI
88351e4165 feat: Process実行→HC-WP通知の連携をクライアントスクリプトから自動化、実行ログのコメント記録を追加
これまで担当者がPleasanter画面でProcess実行した後、別途n8n Webhookを
手動で叩く必要があった。プロセス実行スクリプトのOnClickへWebhook自動POSTを
追加し、通知失敗時はプロセス実行自体を中断するようにした。あわせて
全Process実行時にコメント欄へ実行者・プロセス名を自動記録する。
2026-09-12 15:24:19 +09:00
Kenichiro NOGI
bbf43f6097 docs: 診断書再提出依頼プロセス(4-7)・Status=410再提出対応・ファイル名規則をマニュアルへ反映
md本体と撮影済みスクリーンショットを使ったPPTX版(30枚)の両方を更新。
2026-09-12 14:58:47 +09:00
Kenichiro NOGI
4575f14d22 feat: 診断書PDFファイル名規則変更・JST対応、Status=410でのPDF再提出対応、担当者からの再提出依頼プロセス(Id19)を追加
撮影完了後にファイル名の可読性・再提出フローの欠如が判明し追加実装。
ファイル名を内部ID直書きから表示名ベースの命名規則に変更しJSTタイムスタンプ化、
診断書保存後もBot対話から再提出できるようメニュー条件を拡張、
担当者が能動的に再提出を促すHC-WP通知(Process19)を新設。いずれも実機確認済み。
2026-09-12 14:51:23 +09:00
Kenichiro NOGI
3bccc4d1b9 docs: 撮影テスト完了・追加バグ4件(過去日付バリデーション欠如/文字化け/テストデータ不整合/CONTACT_MESSAGE巻き戻り)の発見・修正を記録
マニュアル用スクリーンショット撮影を全ケース実施完了(計50枚)。並行して発見した
過去日付が確定できてしまう不具合の修正、文字化け修正、担当者連絡文言の巻き戻り
修正をHC-WAへ反映し、いずれも実機再検証済み。
2026-09-12 14:08:53 +09:00
Kenichiro NOGI
7af3f5ff84 fix: 待機状態中の固定メニュー「健康診断について」再選択で日付パースに誤って落ちるバグを修正
schedule_confirm等の待機状態中に固定メニューを再タップすると、
承諾/自分手配/受診日時の変更いずれにも一致せず自由入力の日付パースに
フォールバックしてしまい無関係なエラーが返っていた。担当者に連絡・
キャンセルワードと同様、待機状態を横断してメニュー表示へ戻す処理を追加。
2026-09-12 09:09:19 +09:00
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