Skip to content

MBOMの消費工程・標準不良率・代替部品の整合・循環検出を追加し、作業指示書を予定材料基準にする - #24

Merged
msmsrep merged 10 commits into
mainfrom
dev
Sep 23, 2026
Merged

msmsrep merged 10 commits into
mainfrom
dev

Conversation

@msmsrep

@msmsrep msmsrep commented Sep 23, 2026

Copy link
Copy Markdown
Owner

概要

MBOMの点検で見つかった5件の問題を直し、それに合わせて作業指示書・サンプル・利用者ガイドを更新する。

変更内容

  • 消費工程(Spec.md 改訂117、マイグレーション AddBomItemRoutingSequence を3プロバイダーに追加)
    • BomItem と ManufacturingOrderMaterial に RoutingSequence(工順の工程順序)を追加した。
    • これまではバックフラッシュが工程にかかわらず予定材料をすべて引いていたため、複数工程の品目で工程ごとにバックフラッシュすると部材が工程数ぶん減っていた。今回から、その作業指示の工程で使う部材だけを引く。
    • 消費工程を指定しない行は最終工程で使う扱いで、展開時にその工程順序を予定材料へ書き込んで固定する。
    • 工順に無い工程順序を指すMBOMの品目は、指図を展開できない。部材を使わない工程でのバックフラッシュは拒否する。
  • 作業指示書:部材は今のMBOMではなく指図の予定材料から出し、その工程で使うものだけを載せる。必要数量は予定材料の予定数量から出す。
  • 標準不良率(改訂118):予定数量を 原単位×指図数量÷(1-率) とし、小数6桁で切り上げる。入力できる範囲は 0〜99.99 にした。
  • 循環するMBOMの拒否(改訂119):ProductStructurePolicy.FindBomCycle で判定し、単票APIとCSV取込で同じ判定を使う。エラーには一周する経路を出す。
  • 代替部品グループの整合(改訂120):代替部品の行にはグループが必要で、1つのグループの主材料はちょうど1つにした。グループ名は前後の空白を除いて比べ、その形で保存する。
  • 監査ログ(改訂121):MBOMを改訂したときに変更前後の明細を残す。CSV取込でも親品目ごとに同じ形で残す。
  • サンプル・文書(改訂122)
    • 15_bom.csv に RoutingSequence 列を追加した。
    • サンプルの説明、利用者ガイド、CSVの列の案内と英訳、CodeMap を直した。
    • 画面写真2枚(指図の詳細・作業指示書)を撮り直した。
  • 6eb57db(オーケストレーション運用の見直し:Orchestration.md・CLAUDE.md・task-card)もこのブランチに含まれる。

MES.md: A-40-10-01/04/05、B-10-30-04、B-40-10-09

注意

  • ルールの確認(代替部品グループ・循環)は保存するときにだけ働く。既存のMBOMがルールに反していても、次にそのMBOMを保存するまでは残る。
  • 消費工程を足す前に展開した指図は、消費工程が空のまま最終工程で引く扱いになる(これまでと同じ動き)。

テスト

  • dotnet test 全緑(API 255件、画面 229件)
  • 関係する5クラス(129件)を SQL Server(LocalDB)と PostgreSQL でも実行し、すべて通った
  • scripts/I18nCheck.ps1 で取りこぼし0件
  • 利用者ガイドを Jekyll でビルドし、図5の表示を確認した
  • 画面の目視は写真撮影の範囲(指図の詳細・作業指示書)だけで行った

🤖 Generated with Claude Code

msmsrep and others added 10 commits September 23, 2026 07:53
バックフラッシュが作業指示の工程にかかわらず指図の予定材料をすべて引いていたため、
複数工程の品目で工程ごとにバックフラッシュすると部材が工程数ぶん減っていた。

- BomItem / ManufacturingOrderMaterial に RoutingSequence(消費工程=工順の工程順序)を追加。
  工順は一括置換で行が作り直されるため、IDではなく工程順序で指す
- 未指定の行は最終工程で消費する。展開時に予定材料へ最終工程の工程順序を入れて固定する
- 工順に無い工程順序を指すMBOMの品目は指図の展開で拒否する(MBOMと工順の登録順は自由なため展開時に照合)
- 消費する部材の無い工程でのバックフラッシュは拒否する
- MBOM画面・指図詳細に消費工程を表示、MBOMのCSVに RoutingSequence 列を追加
- サンプル 15_bom.csv は実績サンプルの部材投入に合わせて工程10にした
- Spec.md 改訂117、利用者ガイド(マスタ・実行・トラブル対応)を更新

MES.md: B-40-10-09(バックフラッシュ)、A-40-10-01/04(MBOM登録・付加情報)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
作業指示書が現行のMBOMを全行印刷しており、展開時に固定した予定材料(Spec.md 5.7)と
食い違い得るうえ、工程に関係なく全部材が載っていた。

- 指図の予定材料のうち、この作業指示の工程を消費工程とする行だけを出す
  (消費工程が空の行は最終工程で使う扱い。バックフラッシュと同じ規則)
- 予定材料は内外製区分を持たないため、列を代替部品グループに替える
- 利用者ガイド(実行)の指示書の説明を更新

MES.md: B-10-30-04(作業指示書)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
標準不良率は A-40-10-04(不良率などのMBOM付加情報)として入力できたが、どこにも使われていなかった。

- 予定数量を 原単位×指図数量÷(1-親品目の標準不良率) とする。不良品も部材を消費する
  (バックフラッシュは良品+不良の数で引く)ため、良品を指図数量だけ得るのに要る部材を見込む
- 割り切れない値は列の精度(小数6桁)で切り上げる(切り捨てると欠品側にずれる)
- ÷(1-率) のため標準不良率は 0〜99.99 とする(単票API・CSV・画面の入力)
- バックフラッシュの消費量は実績(良品+不良)基準のまま
- Spec.md 改訂118、利用者ガイド(マスタ)を更新

MES.md: A-40-10-04(その他MBOM関連情報)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
これまでは品目自身を子品目にする行だけを拒否しており、2段以上で一周する構成は
単票APIでもCSVでも登録できた。今の展開は1段だけなので処理は止まらないが、作れない品目の
構成になり、多段の所要量展開や逆展開を足したときに無限ループになる。

- 判定を ProductStructurePolicy.FindBomCycle に置き、単票APIとマスタCSV取込の両方から呼ぶ
- 置き換える親品目自身の既存明細は判定に入れない
- CSVは取り込んだ親品目の明細をその都度判定用に置き換え、同じファイル内の循環も捕まえる
- エラーには一周する経路を品目コードで示す
- Spec.md 改訂119、利用者ガイド(マスタ)を更新

MES.md: A-40-10-01(MBOM登録)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
グループの無い代替部品の行、主材料の無いグループ、主材料が2つ以上あるグループを登録できた。
主材料が無いとバックフラッシュ(代替部品の行は消費しない)がそのグループの部材を何も引かず、
主材料が2つ以上だと代わりになるはずの部材を両方とも原単位ぶん引く。

- 代替部品の行はグループ必須、グループの主材料はちょうど1つ(ProductStructurePolicy.CheckAlternativeGroups)
- 単票APIとマスタCSV取込の両方から同じ判定を呼ぶ
- グループ名は前後の空白を除いて比べ、その形で保存する
- 主材料を2つ並べていた既存テストを、代替部品フラグと代替理由を使う形に直した
- Spec.md 改訂120、利用者ガイド(マスタ)を更新

MES.md: A-40-10-04(その他MBOM関連情報:代替部品)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
これまでは items=件数 だけで、一括置換のため設計変更(A-40-10-05)で何を変えたか追えなかった。

- 変更前後の明細(子品目コード・原単位・内外製・代替部品グループ・代替部品フラグ・消費工程)を
  new { before, after, reason } で残す。子品目はIDでなくコードで残す
- マスタCSV取込でも親品目ごとに同じ形で残す。監査ログは書くたびに保存するため、
  取込の途中では書かず、全行の検証が通って保存した後にまとめて書く
- Spec.md 改訂121

MES.md: A-40-10-05(設計変更対応)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- L1/L2 をモデルではなく同じ Opus 5.5 の effort で分ける(Orchestration.md §3.1・§3.4 新設)
- 単価表を更新し、Sonnet 5 の単価の誤記を訂正(§2.1)
- モデル・effort はセッション途中で変えない(キャッシュがモデルごとのため。§4.2)
- タスクカードに effort 欄を追加、CLAUDE.md の要点に1行追加

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- サンプルの説明:MBOMの部材は工程10で消費すること、標準不良率による予定材料の割り増し、
  部材を使わない工程で Backflush=true にすると取り込めないこと
- 利用者ガイド:サンプルの図5の予定材料の数量を割り増し後の値に、帳票(作業指示書に載る部材)、
  用語(バックフラッシュは予定材料基準)、マスタのCSV(RoutingSequence 列)、
  部材投入の代替理由の説明(予定材料にない品目は投入できない、という既存の誤りも直す)
- CSVの列の案内(Backflush・AlternativeGroup・IsAlternative)と英訳
- CodeMap に ProductStructurePolicy の新しい判定を追記
- Spec.md 5.7節に予定材料の割り増しと消費工程の固定を追記(改訂122)

MES.md: A-40-10-01/04/05、B-10-30-04、B-40-10-09

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1行でもエラーがあると全件取り消されるため。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
作業指示書の必要数量を 原単位×計画数 で出していたため、標準不良率による割り増し(改訂118)が
抜け、指図の予定材料(例:10.152285)と食い違っていた。予定材料の予定数量を、指図数量に対する
作業指示の計画数の割合で按分して出す。

画面写真は、サンプルを取り込んだ新しいDBで完了承認まで進めて撮り直した。
- docs/assets/walkthrough/order-detail.webp:予定数量の割り増しと消費工程の列が写る
- docs/assets/intro/print-wo.webp:見出しが「この工程で使う部材(予定材料)」、代替部品グループの列
あわせて代替テキストと画像の寸法を直した。

MES.md: B-10-30-04(作業指示書)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@msmsrep
msmsrep merged commit dca5d51 into main Sep 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant