ORDER LEDGER / CLEANUP

発注台帳 二重計上の是正 — 削除実行前の最終確認

A案(今回追加した列を削除し、手入力列を正とする)の削除計画21ペアを、実行前に台帳の実データで1ペアずつ検証しました。11ペアはそのまま消して問題ありませんが、10ペアは「残す側」に金額が無い・大きく過少・品目が足りない、という状態です。このまま全部消すと約¥57,822の金額記録が台帳から消え、約¥36,214が過少計上になります。

要判断 2追認 42
削除はまだ実行していません。 回答をもらってから走らせます。Q1だけ答えてもらえれば動けます(Q2は次段の方針)。

要判断2 件

Otakeさんにしか答えが無いものだけ。ここをお願いします。

Q1

削除をどこまで走らせるか要判断

不可逆・台帳の金額に直接効く

私の考えは②です。①は¥57,822の記録消失と¥36,214の過少化を伴い、二重を消すために正しい数字を捨てることになります。③は二重¥248,223をこれ以上放置することになる。②なら実害ゼロで7割方が片付き、残りは金額を直してから消せます。金銭・不可逆なので選択肢は事前選択していません。

無回答なら 回答があるまで削除は実行しません(不可逆のため既定進行なし)

Q2

手入力とAmazonで金額が食い違う時、どちらを台帳の正とするか要判断

月次の発注金額集計の精度

実データでは手入力側が過少なパターンが目立ちます。例: 館山7/19「水 数量4」は手入力¥4,044 / Amazon実額¥16,480(単価だけ書いて数量倍していない)。麻布台7/04 ハートランドは手入力¥3,172 / 実額¥6,345(ちょうど2倍)。晴海・京都・南葉山の一部タブは日付列に金額列すら無く、数量チェックだけの運用です。

無回答なら 回答があるまで金額の書き換えはしません

追認4 件

私が決めました。違うものだけ触ってください(無操作=この通り進めます)。

A1

二重行の根因は「短縮化」より先に「ASIN照合」で潰した追認

次回以降の取り込み全部に効く

実測(7月CSV 228品目)ではASIN一致154 / fuzzy追加45 / 外れ29。台帳のASIN保有率は全体62%(麻布台100%・晴海85% ↔ 九十九里27%・館山31%)。単体テスト15項目PASS。

既存行の同定は品名のfuzzy match 0.65のみ。現場の「水」とAmazonフル名は永久に一致しない
提案既存行のASIN列/商品URLからASINを取り、名前に依存せず先に照合する。取れない時だけfuzzyに落ちる

推奨 ① この線でいい — 短縮化だけでは「水」と「い・ろ・は・す 2L PET ×8本」は一致しないので、根因は塞がらない

無回答なら この実装で運用します

A2

商品名の短縮を取り込みフェーズに組み込んだ追認

台帳の可読性・次回以降の照合

7月CSV 251品目を全件短縮(平均69.1字→22.1字)。例「サーモス シリコーン菜ばし ブラック キッチンツール KT-C001 BK」→「菜ばし / サーモス」。次回以降はマップヒットでAPIを呼びません。

提案short_names.jsonを引き、未登録ASINだけGeminiで生成して差分保存。短縮に失敗したまま--executeするとrc=5で中断(フル名を黙って台帳に入れない)

推奨 ① この線でいい — 取り込みの外に置くと「短縮を忘れたまま実行」が起きる。中に入れて失敗時は止める形にした

無回答なら この実装で運用します

A3

「未反映17日分」は誤りで、実際は2グループ ¥6,442 だけだった追認

再取り込みの工数が1/10に

判定を常設スクリプト audit_csv_vs_ledger.py にしました。「日付列があるか」ではなく中身のASIN一致率と金額で見ます。

引き継ぎには館山7/08・晴海7/06〜など21日付が未反映として並んでいた
実態CSVと台帳を機械的に突き合わせた結果、21日付のうち12日付はそもそもCSVに存在せず、残りも大半は反映済み。本当に列が無いのは 南葉山7/11(¥5,084)と 軽井沢母屋7/01(¥1,358)の2件だけ
提案この2グループだけ再取り込みする(削除の判断が付いてから)

推奨 ① この2件だけでいい — 旧リストは失敗ログのrc=0数え由来で、台帳の中身を見ていなかった

無回答なら 2件だけ再取り込みします

A4

SYLA_逗子葉山 の7/08・7/12は「一部だけ反映」で残っている追認

SYLA 1施設・¥173,000相当
実態7/08はCSV24品目¥85,570に対し台帳S列は24品目¥41,915(品目数は合うが金額が約半分)。7/12はCSV23品目¥87,395に対し台帳は5列に分かれて計¥26,157しか無い
提案Q2の答え(どちらを正とするか)が決まってから一緒に処理する

推奨 ① Q2と一緒でいい — 先に触ると金額の正本方針が決まる前に台帳を2回書き換えることになる

無回答なら Q2の答えと一緒に処理します

2 件

実装・反映済みの事後報告。読むだけで大丈夫です。

✓1

削除ペアの安全性を実行前に検証するスクリプトを常設化

verify_delete_plan.py。削除対象列と同日に残る列を行レベルで並べ、品目数・金額のズレで安全/要確認を機械判定します。日付列の右隣が金額列でないシート(晴海BR〜BU)も「金額列なし」と明示。今回の10ペアはこれで見つかりました。

推奨 ① これでいい

✓2

同じ既存行に2品目をぶつけないガードを入れた

従来は同じ行に2品目が当たると片方の数量が上書きで消えていました。埋まっていたら新規行に落とします。

推奨 ① これでいい

回答テキスト(自動生成・差分だけ出ます)

下の枠内で Ctrl+A → Ctrl+C でコピー
コピーしました