作業記録


2026-08-08 ~ 2026-08-21(14日間) / 厚木事業所・メルシーダイキ・運転日報 / a.norizuki@gmail.com
目次

本期間の前半(8/8〜8/16)は厚木事業所がお盆休みで稼働がなく、本番データが動かない作業(調査・設計・検証)が中心。稼働再開は 8/17(月)で、出荷予定・配車・投入実績の3系統すべてで一致している。コミットは zsystem.jp 28件+tokyo-express.net 1件。8/21 時点で本番未反映のものは、運転日報の「作業開始1分丸め」1件(別作業と競合のため保留)。

1. ellio/shearplan シャーリング予定表 多工程(多丁取り)と機種マスタ

2026-08-11 完了列・翌日への持ち越し・多工程の候補出し分けデプロイ済

commit a00db05(コミットは8/7、デプロイは8/11)

2026-08-18 工程会議資料取込で区分(K/O)を補うデプロイ済

commit 7a2fa4a 現場からの不具合報告に対応。取込時に区分が欠落する経路を補完した。

2026-08-20 成り品がまだ無いものも候補に出すデプロイ済

commit 06d80ee 中板(成り品)が未生成の受注も候補に出し、先に組み込めるようにした。

2026-08-21 優先度を単一機種から工程チェーンへ(最大4工程)デプロイ済

commit 9991e83 コード6本+schema系3本を scp、DB移行 alter_shearMachine_chain.sql 投入済み。

★DB移行とコードは必ず同時に出すこと。 S→S0 の変換だけ先に流すと旧 validMachine() に S0 が無く、該当シートが開けない・該当行が候補から黙って消える。実際に数十分その状態になった。

なお ellio/scheduler/index.php も同じ列を読む(shearRank() がチェーンをそのままラベルにするため4工程だと長くなる)。data-machine は書くだけで誰も読まないので動作影響なし。

2026-08-11 出荷予定の突合を受注NO-行NOに直すデプロイ済

commit 58a541a 第3セグメントが印刷NOではないと確定したことによる修正(詳細は3章)。

2. ellio/scheduler スケジューラの現物取り込みと出荷予定トレイ

横軸=日時/縦軸=機種(L1 L2 C RG G0 G2 G3 S0 S8 S10)のSVGガント。NOTES.md が「最終目的」と書いているシャーリングスケジューラの2024年版プロトタイプにあたる。

2026-08-11 サーバー現物の取り込み(ベースライン)整備

commit f0a2994 ローカルには存在せず /Users/zadmin/Sites/ellio/scheduler/ が真実源だった。rsync で取得し、手を入れる前の状態をコミットして基準にした。

2026-08-11 コート予約システムから流用した残骸を削除デプロイ済

commit ae117f5 / 6387660 17:34 デプロイ。4ファイル名指しの scp(全ツリー rsync は無関係な未コミット変更を巻き込むため使わない)。送信前にサーバー側 md5 がベースラインと4/4一致することを確認し、送信後も md5 4/4一致・chmod 644・index.php.spellbak と resources/ の無傷を確認した。

2026-08-13 出荷予定トレイを実装(表示のみ)デプロイ済

commit e4c880e 候補38件を出荷日順に表示し、能力超過の12件を赤表示。ドラッグでの割付は無効(未実装)。

2026-08-11 データが2025年で止まっていることの確認調査

テーブル用途最終データ
TimeLineIndex予定セル(readTimeline)2025-03-31(17,326行)
shearingLogDetailシャーリング実績(getActualData)2025-04-01(C=7,993行/RG=5,262行)
tasklog の LINEPROC1/2印刷ライン投入実績(getActualLine)稼働中(2026-08-07まで)

=今日の日付で開くと印刷ラインのレーンしか描画されない。さらに TimeLineIndex に書き込む口はアプリ内に存在しない(書き込み役だったはずの registreserve/updatereserve は実体の無い switch case で、上記で削除した)。この画面を復活させるのか shearplan 側へ寄せるのかは判断待ち。

残件:実績バークリックで dispActualInput 未定義で落ちる/検索タブ不動作/割付登録未実装。

3. 出荷予定データ(shippingschedule)の調査

2026-08-11 に本番DBで実測。scheduler の出荷予定トレイ設計のための調査。

2026-08-11 ★orderno の第3セグメントは「出荷指示明細の通し番号」調査

2026-08-11 出荷予定の素性と先行日数調査

4. ellio/printschedule 印刷進行予定表 新様式(通板数・コメント・納入日)対応

2026-08-19 新様式対応パーサーを併設デプロイ済実物未検証

commit d1ad53e ellio/printschedule/printschedule.js を scp(md5一致・644確認)。

背景:㈱DNPエリオ 生産管理部から連絡指示書 No.26-001(2026-08-18発行)。進行予定表に「通板数」「コメント」「納入日」が追加され、鋼板についてのみ自動表示される(アルミ・ステン・クレリオは対象外)。実施日は 2026-08-24 以降の発行分から、完全反映には1週間ほどのズレがあり、しばらく新旧が混在する。

現状調査(改修前)

方針(ユーザー承認済み):現行 storeLine()(V1)は1行も触らず温存し、新様式用 storeLineV2() を併設。貼付テキスト全体に「通板」があるかで様式を自動判定して振り分けるため、利用者の操作は不要。通板数は feedingqty へ自動取込するが、空欄行では送信自体をしないので既存の手入力値を潰さない。コメント・納入日・保護P は格納先未定のため当面DBには書かず、位置ズレ防止のためパースだけ行いログに出す。

実装の要点:storeLineV2() の読み方を「n番目固定」から「素材KBで前後分割+注文サイズを右端アンカーに右から確定」へ変更した。理由は (1) コメントは自由文でスペースを含み得るため位置固定では原理的に読めない、(2) 鋼板のみ通板数が付く=同一ファイル内でも行ごとに列数が変わる、の2点。前半のトークン数 3個=通板数あり/2個=なし で吸収し、後半は 区分(K/O) → 梱包C → 納入日(m/d) → 保護P の順に右から確定する。

検証:実物の新様式PDFが未着のため、連絡指示書の添付サンプル9行から合成データを作り、ローカルに node のテストハーネスを作って確認(サーバー・DBには一切触れていない)。V1×旧様式=従来どおり/V2×新様式(鋼板)=通板数を正しく取得/V2×アルミ(通板数なし)=feedingqty未送信/V2×コメント入り(スペース含む)=OK/V2×梱包Cなし=OK/V2×旧様式=正しく読める。

★デプロイ後の確認が必須。 本番稼働はしているが、新様式の実物PDFで一度も動かしていない。2026-08-24 以降に実物を受け取ったら、取込画面のログで「【様式】新様式(V2) 通板数あり」と各行の読み取り結果(特に通板数・梱包C・区分)を必ず1度目視確認すること。それまでは旧様式のまま V1 が動くだけで影響はない。

未決事項:コメント・納入日の格納先(businessRawdata へのカラム追加は保留方針が継続中)。保護P は filmtype 列が既存だが ellio/film/ の需要側連携と絡むため別途判断。

5. ellio/shearspec シャーリング寸法指定書

2026-08-19 多丁取りの切断図を記号表記(W/L/D+凡例)にデプロイ済

commit 50273f6 shearspec.js と edit.php(JSキャッシュ対策で ?v=20260807j→?v=20260819a)を scp。

指示:丁数が増えると図の中の寸法記入が小さくなるため、原本と同じく図の中は記号(W/L/D)だけにし、実際の値は図の右の凡例へ出したい。

「3丁取り以上」というご要望に対し、自動判定では6丁の例は切り替わらない点は報告済み。閾値を丁数基準へ変える場合は判定式1行の変更で済む。

2026-08-20 対角線の寸法表示を枠外へ逃がすデプロイ済

commit 3876230 → b8fb650 → 2aaa071 → 56ce9d1(4段階で調整)

本番との md5 照合により、上記4件が本番反映済みであることを確認済み(8/21 時点)。

6. ellio/dispatch・dispatchmng ドライバー/運送会社の候補選択化

2026-08-16 入荷受付のドライバー・運送会社を候補選択にデプロイ済

commit 8cde954

なぜ:carrierMaster は 1車番=1ドライバー固定だが、実運用では同じ車に別の人が乗る。マスタの氏名がそのまま実績に記録されていた。

実データが示したこと(調査)

実装

踏んだ不具合:車番を打ち直してマスタ未登録に落ちる経路に初期化が無く、前の車の会社・ドライバーが残っていた。lookupCarrierAndRender の miss 分岐に setCompanyName('')、applyCarrier に clearManualFields() を追加して解消。

2026-08-17 配車情報を「会社→車番→ドライバー」の順に選ぶ方式へデプロイ済

commit ec1ea92(事務所側 dispatchmng)

2026-08-17 打刻中の再編集ダイアログも候補選択にデプロイ済

commit 8ae8d78 / cc3a5a4

7. ellio/film 保護フィルム在庫 テスト入荷のロールバック

2026-08-08 テスト入力した③入荷(パレット割付)15件を痕跡ごと削除DB作業

8. letip/salesreport 売上実績表 メモ行・CSVダウンロード

2026-08-10 営業マン用の「メモ」行を追加(1日単位・自由文)デプロイ済

commit ece22f2 / b11261f / 784ca8c(+1eddd5f は 2026-06-08 分の取りこぼしコミット)

2026-08-12 CSVダウンロードを全体・店舗の画面でもデプロイ済

commit bcbbd2f / 029a5cf 営業マン選択時のみだったダウンロードボタンを、全体・店舗の画面にも出した。

9. letip TZ4「回収の単位数が0」の調査

2026-08-14 調査完了・対処は判断待ち調査判断待ち

発端:宮原康さん・2026年7月23日の回収(「手すり/メルシー/回収/23日」ダイアログ)でバディーⅠ本体が −0 と表示される。

結論:Zシステムのバグではなく、TZ4 の元データが0。

範囲(2026-04以降。z_deliveries は 2026-04-15 以降しかない点に注意):金額0の回収明細は292行。うち「同商品コードが他で金額を持つ」116行を証拠の強さで分類すると、強3行(同じ人・同じ個体で納品時に金額あり)/中52行/弱61行。

★中・弱の単位数合計を「欠落額」として外に出さないこと。 回収時0が正当なケース(貸与終了済み・無償添付)が混じり、同じ商品コードでも個体で単価が違う実例がある(ガートル台 1500と500)。
ベンダー報告に向くのはもう一つの形:回収レコードの全明細が0 が22件(43行)、うち19件は本来金額が付く品目を含む。宮原様のレコードはまさにこれ(4明細すべて0)。散発的な行単位の0より再現性を追いやすい。

判断待ち:表示側で補うか。 z_product_types.unit_point(単位数マスタ)はZにも来ており z_munits.org_product_type_id から引ける(id 590 バディーⅠ ノーマルタイプ=330)。金額0の292行のうち83行が unit_point>0 で埋まる(25,460単位)。ただし置き換えには使えない:マスタに単位数があるのは 9,684商品中1,699のみで、金額ありの818行で subtotal/10 == unit_point が一致するのは265行だけ、524行はマスタ側が0。「金額0のときだけマスタで補う」フォールバックなら成立するが、TZ4・請求と数字が乖離する。未実装・ユーザー判断待ち。

別件:納品側クエリは dd.result_cd = 1 で絞るが、回収側は result_cd も direction_cd も絞っていない。実データは 回収=1/0 が1090行・0/1 が20行、納品=1/1 が1299行・1/0 が403行と極性が逆に見える。列コメント未設定で意味を確定できず、20行の扱いは要確認。

再現・調査の道具一式は ~/Downloads/tz4回収金額0_調査20260814/ に README 同梱で保存(letip_query.php/tz4_query.php=TZ4はIP制限のため zsystem.jp 上で実行/一覧CSV生成)。

10. letip/packreserve 書き込み元不明データの調査

2026-08-13 ★packreserve は実質的に空振りしている(対応見送り)調査

照合順序の作業(11章)からインデックス要否の検討として派生した調査。

副産物として「書き込み元不明ならバイナリログを見る」を手順化した(mysqlbinlog --start-datetime=… /var/mysql/mysql-bin.0003NN。zadmin は admin グループなので sudo 不要。1GB/日で9世代程度、秒単位で絞れば十分速い。接続元ホストは記録されない)。

11. zsystem 照合順序(collation)の統一とインデックス

2026-08-12 ellio の orderno 系5列を utf8_general_ci → utf8_bin に統一実施済

commit c97ab16

★letip は未対応で、ellio より深刻(2026-08-12 調査)。同じ手順で調べた結果、結合キーの非-bin 列が約105個、しかも latin1 / sjis / general_ci / unicode_ci の4種混在。特に文字セット違い(sjis vs utf8)はインデックスが possible_keys にすら出ない:pack.packno = packlogindex.packno(36,181,751行 / 2.2GB)が type=ALL, possible_keys=NULL。実害の代表は letip/raw/index.php:484 の履歴検索が3,618万行フルスキャン。対応時期の相談が必要。

12. zsystem サーバー メモリ枯渇とSSHタイムアウトの調査

2026-08-14 原因特定と Spotlight(mds) の恒久停止調査対処済

実機は Mac mini Mid 2010 / メモリ4GB / 2コア / Mac OS X Server 10.6.8。調査時点で連続稼働141日。

★調査で SSH を連打すると失敗するため、リトライは「MARKER_OK を grep して成否判定」する形で書くこと(2>&1 するとエラー文字列が出力に混ざり、単純な非空判定だと1回目で誤って抜ける)。

13. tokyo-express drive/report 運転日報 帰庫後作業・退勤時刻・1分丸め

2026-08-20 帰庫後作業の記録と退勤時刻の見直しデプロイ済

commit 16657a3 対象は drive/index.php のみ。

背景:当初は最終拠点の出発(帰庫登録)で業務終了=アプリ終了だったが、有料道路の入力忘れが多発したため帰庫後もアプリを終了せず退勤ボタンを押せるようにした。しかし運転日報には帰庫後の作業を表す行がなく、その時間が「待機」に落ちていた。

調査(詳細は ~/Downloads/運転日報_退勤時刻調査_20260819.txt)

仕様:退勤時刻=最後の業務入力時刻。帰庫登録の後に有料道路・給油・備考が入力されたら「帰庫後作業」行を1本作る(到着時刻=帰庫登録時刻で固定/出発時刻=最後の入力時刻で上書き更新)。recalc() は sitename=='休憩' 以外を作業時間に加算するので集計側の改修は不要。

実装:calcWorkTime()/touchPostArrivalWork()/setCourseEndTime() を追加し、writeTollway/writeSlip/writeMemo/writePhotoMemo から呼ぶ。writeLogout は endTime を上書きしない。帰庫登録前の入力では何もしない。

検証:本番テーブルは読むだけにし、複製した zztest_* に対してテスト。実ファイルから関数を抽出しテーブル名だけ差し替えるハーネスを作成し、PHP側23件PASS/JS側47件PASS/FAIL 0。実データ4便で 拘束=運転+作業+休憩+待機 の恒等式が成立し、運転時間・休憩時間は不変であることを確認(2171 拘束08:03→07:42・待機00:21→00:00 ほか)。

デプロイ:本番の drive/index.php・drivesheet.js・drivesheet.html を md5 照合した結果、5/28 のコース変更機能は既にデプロイ済みで git だけが遅れている状態だった=本番に入る差分は今回の変更のみ。走行中の便を避けて 2026-08-20 06:00 に実行予約し、06:03 完了(事前md5確認 → 転送 → 照合 → 本番 php -l OK)。スクリプトは md5照合・退避・失敗時の自動切り戻し付き。

★事故:テストハーネスのテーブル名置換漏れで、本番 truckCourse id=2171 の endTime/totalTime を 15:57/08:03 → 15:36/07:42 に更新してしまった。2026-08-20 ユーザー判断により復旧せずそのままとした(結果的に今回の新仕様で出る値と同一のため実務上の不整合はない)。ハーネスには置換漏れ(FROM/UPDATE/INTO/JOIN + 本番テーブル名)を検出する安全弁を追加済み。

デプロイスクリプトで踏んだ点2件:(1) zsh は bash と違いクォートしない変数を単語分割しないため ssh $SSHOPT が全体で1引数になり publickey 認証に失敗する(配列+"${SSHOPT[@]}" に修正)。(2) tokyo-express.net への ssh が時々 No route to host で瞬断するため、接続失敗(255)とリモートコマンドの失敗を区別してリトライする rssh()/rscp() を追加(接続不能では切り戻さない)。

2026-08-21 作業開始時刻の1分丸め未デプロイ・判断待ち

要望:到着をタップしてから作業開始をタップするまでに分を跨ぐと、作業開始が到着の1分後になる。この1分は作業時間にも運転時間にも入らず待機の端数として残る。差が1分なら作業開始を到着時刻に合わせてほしい(報告例:2026-08-17 Z4 栃木夜便 2174 ⑥小山 到着02:16/作業開始02:17 → 待機00:01)。

原因:report/index.php の作業時間=出発 −(作業開始があればそれ、なければ到着)、運転時間=次の到着 − 前の出発。つまり「到着〜作業開始」の区間はどちらにも属さず、拘束時間の残差=待機に落ちる。以前「原因未調査」としていた待機1分の端数はこれだった。

実装:snapWorkStartTime($arrivalTime,$workStartTime) を追加(差がちょうど1分なら到着時刻を返す。0時跨ぎは mod 1440。未着・空・逆順は何もしない)。writeDeparture() の書き込み前に丸める(作業開始はクライアントの localStorage に保持され、出発タップ時に初めてサーバーへ届くため)。

検証:境界値12件(差0/1/2分・23分・0時跨ぎ・逆順・未着・空・不正時刻)全PASS。report.js の recalc を実ファイルから抽出し 2174 の本番実データで比較:変更前 拘束09:17/運転05:57/作業02:23/休憩00:56/待機00:01(画面と完全一致)→ 変更後 作業02:24/待機00:00。運転・休憩・拘束は不変。

影響範囲:2026-04-01 以降の 到着→作業開始 の差の分布は 0分3,152件/1分20件/2分3件/3分2件/4分1件/5分8件。丸め対象は1分の20件のみ。既存データへの遡及適用はしていない。

★デプロイ不可の状態:別セッション(Mac mini)が 2026-08-21 13:49〜13:52 に drive/ と report/ をリファクタ中。drive/postwork.php が新設され HHMM2V/calcWorkTime/courseID2name/帰庫後作業の処理が移動、drive/index.php と report/index.php の双方から require_once されている。本番の drive/ に postwork.php は存在しないため、drive/index.php を単独でデプロイすると fatal error になり運転日報の登録画面が全面停止する。今回の変更だけを切り出してコミットすることもできない。→ ユーザー判断待ち。

2026-08-21 8月実績の作業開始時刻を1分丸めでデータ修正(本番DB)DB作業

前提の発見:管理用CSVの「差異」は truckCourse に保存済みの集計値から計算しており(totalTime − totalDriveTime − totalWorkTime − totalRestTime)、レコードから再計算していない。つまり workStartTime を直すだけでは画面は1行も変わらず、集計値 totalWorkTime も併せて更新する必要がある。

14. 未解決事項・判断待ち・既知の挙動

14-1. 判断待ち

件状態
運転日報「作業開始1分丸め」のデプロイ実装・検証済み。別セッションのリファクタ(drive/postwork.php 新設)と競合しており単独デプロイ不可。切り出し方をご判断いただきたい
TZ4 回収の単位数0 を表示側で補うかマスタ unit_point で83行は埋まるが、TZ4・請求と数字が乖離する。未実装
letip の照合順序(結合キー約105列・4種混在)未着手。3,618万行の履歴検索が全表走査。対応時期の相談が必要
printschedule の「コメント」「納入日」の格納先businessRawdata へのカラム追加は保留方針が継続中。保護P は filmtype 列と film 側連携の絡みで別途判断
scheduler(2024年版プロトタイプ)の扱い予定データが2025年で停止し書き込み口も無い。復活させるか shearplan に寄せるか

14-2. デプロイ済みだが未検証

14-3. 本番データに残っている影響

14-4. 既知の挙動・積み残し

15. 検証手法(再利用可能なもの)

16. 付録:コミット一覧

zsystem.jp(28件)

#日時ハッシュ件名
108-10 17:461eddd5fsalesreport: 地図エリアと罫線の作り直し(2026-06-08 分の取りこぼし)
208-10 17:46ece22f2salesreport: 営業マン用の「メモ」行を追加(1日単位・自由文)
308-10 17:56b11261fsalesreport: メモ本文の太字をやめる
408-10 23:10784ca8csalesreport: メモ行の上の罫線を 2px の区切り線にする
508-11 16:51f0a2994ellio/scheduler: サーバー現物をそのまま取り込み(ベースライン)
608-11 17:19ae117f5ellio/scheduler: コート予約システムから流用した残骸を削除
708-11 17:246387660ellio/scheduler: changeMode() に未配線であることの注意書き
808-11 23:3558a541ashearplan: 出荷予定の突合を受注NO-行NOに直す
908-12 00:35c34d7c7dispatchmng: 出荷側 orderno 第3セグメントの誤った列コメントを訂正
1008-12 17:36bcbbd2fsalesreport: 営業マン選択時に CSV ダウンロードボタンを出す
1108-12 17:50029a5cfsalesreport: CSV ダウンロードを全体・店舗の画面でも使えるように
1208-12 21:27c97ab16ellio: orderno 系5列を utf8_general_ci → utf8_bin に統一
1308-13 02:33e4c880eellio/scheduler: 出荷予定トレイを実装(表示のみ)
1408-13 02:38927b409shearplan: NOTES.md 第9章(完了・持ち越し・多工程・出荷予定の突合)
1508-16 18:498cde954ellio/dispatch: 入荷受付のドライバー・運送会社を候補選択に変更
1608-17 03:06ec1ea92ellio/dispatchmng: 配車情報を「会社→車番→ドライバー」の順に
1708-17 22:498ae8d78ellio/dispatch: 打刻中の再編集ダイアログも候補選択に
1808-17 23:18cc3a5a4ellio/dispatch: 会社・ドライバーのピッカーを他ダイアログより前面に
1908-18 23:317a2fa4ashearplan: 工程会議資料取込で区分(K/O)を補う(現場報告の不具合)
2008-19 15:17d1ad53eellio/printschedule: 新様式対応パーサーを併設
2108-19 15:18875fd0bworklog: printschedule 新様式対応の記録
2208-19 15:3250273f6ellio/shearspec: 多丁取りの切断図を記号表記(W/L/D+凡例)に
2308-20 02:2606d80eeshearplan: 成り品がまだ無いものも候補に出し、組込を可能にする
2408-20 16:313876230ellio/shearspec: 対角線を枠の右下へずらし、補助線で元の角と結ぶ
2508-20 16:35b8fb650ellio/shearspec: 対角線のずらす向きを法線にして補助線を直角に
2608-20 16:412aaa071ellio/shearspec: ずらし量を対角線長に対する割合にする
2708-20 17:0056ce9d1ellio/shearspec: ずらし量に「小さい方の成分」の下限を入れる
2808-21 22:379991e83shearplan: 優先度を単一機種から工程チェーンへ(最大4工程)

tokyo-express.net(1件)

#日時ハッシュ件名
108-20 06:0416657a3drive/: 帰庫後の入力を「帰庫後作業」行として記録し、退勤時刻を最後の業務入力時刻に

コミットを伴わない作業:ellio/film のテスト入荷ロールバック(8/8・DB作業)/出荷予定データの調査(8/11)/packreserve の調査と idx_packno 追加(8/13)/TZ4 回収単位数0の調査(8/14)/zsystem サーバーのメモリ調査と mds 停止(8/14)/運転日報 8月実績のデータ修正(8/21)。

作成日:2026-08-21 / 対象:2026-08-08 〜 2026-08-21