受注管理
下書き作成・確定・キャンセル、一覧検索(ページング・並び替え)。確定後に変更できるのは希望納期・備考のみ。
業務システム開発ポートフォリオ
受注・在庫・入荷・出荷をつなぐ業務システム
在庫不足時の受注、入荷をきっかけにした自動再引当、Role別のアクセス制御、監査ログまでを実装しました。
開発には AI Development System(ADS)を使いました。ADSは、AIを設計・実装・Reviewなどの役割に分け、自動チェックと再検収を組み合わせて、完成までの工程を管理する開発プロセスです。ADSの進め方を見る
受注から出荷までの業務が、在庫の状態を介して連動するシステムです。一つの操作が、在庫・他の受注・監査ログへ自動的に反映されます。
出荷前の受注をキャンセルすると、引き当てていた在庫が解放され、ほかの未引当の受注へ自動で再引当されます(引当のきっかけは「受注確定」「入荷・在庫調整による増加」「キャンセルによる解放」の3つ)。
下書き作成・確定・キャンセル、一覧検索(ページング・並び替え)。確定後に変更できるのは希望納期・備考のみ。
「現在庫」と「引当済在庫」の2軸で管理し、利用可能在庫はその差として算出。受注明細単位の部分引当。
入荷登録と、理由付きの在庫調整(増加・減少)。増加時は自動再引当が起動し、結果を画面に表示。
引当が完了した受注のみを対象に、出荷先情報を記録して出荷。在庫の2軸を同時に減らす。
顧客・商品の登録・更新・無効化。商品は CSV 一括取込(1行でも誤りがあれば全体を取り消す方式)。
ユーザーとRoleの管理(初回ログイン時のパスワード変更、最後の有効な管理者の保護)。監査ログの検索・閲覧。
UIについて 本デモは業務ロジック・権限制御・データ整合性・検証を中心に実装しており、画面は最小構成です。UIは導入先のデザインシステムや既存コンポーネントに合わせて調整する想定です。
画面の入力をそのまま保存するだけでなく、在庫・受注・監査の整合をサーバー側で保証しています。
在庫3個に対して10個の注文でも、確定はエラーにしません。確保できた3個だけを引き当て、残り7個は「未引当」として受注に残します。「入荷待ち」のような別状態を増やさず、明細の未引当数量で表します。
技術補足: 引当は受注明細単位。0 ≤ 引当済数量 ≤ 数量 を常に満たす(DB制約と不変条件で保証)。

入荷を登録すると、未引当の受注へ自動で在庫が割り当てられ、全明細がそろった受注は ALLOCATED(出荷可能)に変わります。優先順位は受注の確定日時が古い順です。
技術補足: 引当処理は1か所(AllocationService)に集約し、「確定」「入荷・在庫増加」「キャンセル解放」の3つの契機から同じ処理を呼ぶ。在庫の減少調整や出荷では起動しない。

受注の状態は DRAFT → CONFIRMED → ALLOCATED → SHIPPED(出荷前ならキャンセル可)の固定の遷移だけを許可します。APIを直接呼んでも、表にない遷移は拒否します。
出荷は「在庫減少・引当解除・出荷記録・状態更新」を1トランザクションで行い、途中の失敗を残さない。
受注確定の時点で単価・金額・消費税(10%・1円未満切り捨て)を確定値として保存し、後から商品の価格を変えても確定済みの受注は変わりません。
同じ商品への同時操作でも、在庫がマイナスになったり、同じ在庫が二重に引き当てられたりしないようにしています。
在庫行は商品ID昇順で悲観ロック(デッドロック回避)、状態の同期は受注行ロックの後に再判定、マスタ更新は version による楽観ロック。20並行の混在操作で不変条件の維持を検証。
見せない情報は画面で隠すのではなく、APIのレスポンス自体に含めません。権限のない操作は、画面だけでなくAPIでも拒否します。
| Role | 主な業務 | 制限 |
|---|---|---|
営業担当SALES | 顧客・商品・在庫の参照、受注の登録・確定・キャンセル | 仕入原価はAPIレスポンスから除外。ユーザー管理・監査ログ・入出荷は不可 |
倉庫担当WAREHOUSE | 入荷・在庫調整・出荷、在庫と受注の参照 | 受注の金額項目はAPIレスポンスから除外(配送先は表示)。仕入原価も不可 |
管理部門MANAGEMENT | 顧客・商品・在庫・受注の参照、監査ログの閲覧 | ユーザー管理・入出荷は不可 |
管理者ADMIN | 全機能(ユーザー・Role管理、商品CSV取込、監査ログを含む) | 最後の有効な管理者は無効化・降格できない |



数値は、動画の実績カードと同じ検証済みデータ(OrderFlow の記録と ADS Runner の状態)から生成しています。
Project Complete は、全Featureの完了・承認の有効性・必須チェックなど、ADSで定めた完了条件を満たし、Runnerが正式に受理したことを指します。欠陥がないことや本番環境での稼働を意味するものではありません。
フォーマット・静的解析(SpotBugs)・コンパイル・単体テストとアーキテクチャテスト(ArchUnit)・統合テスト(実PostgreSQLをTestcontainersで起動)・パッケージ・秘密情報スキャン(gitleaks)・Frontendのformat / lint / 型チェック / テスト / ビルド。全PASSしない限りReviewへ進めない運用。
ADS(AI Development System)は、AIを設計・計画・実装・Reviewなどの役割に分け、自動チェックと再検収を組み合わせて、完成までの工程を管理する開発プロセスです。AI にコード生成を任せきりにするのではなく、役割と関門を決めた工程で進めました。OrderFlow(成果物)と ADS(開発プロセス)は別物です。
複数の AI / Agent を工程ごとに使い分け、実装と Review は工程・セッションを分離しました。どれか1つのツールが OrderFlow を自動で作ったのではなく、各工程の成果物(設計文書・指示書・実装報告・Review)を次の工程と開発者本人が確認しながら進めています。
設計・計画・実装・Reviewの各工程を担当。工程ごとにセッションを分け、Reviewは実装とは別のセッションで実施。
計画(Planning)工程の一部を担当。実装報告の受領、修正指示書の作成、Feedbackの分析。
要件・方針整理、開発報告の要約、実装担当への作業指示整理に使用。最終的な判断・意思決定は開発者本人が担当。
モデル名は開発時点のものです。
設計・計画・実装・レビューを別の役割として扱い、実装とレビューは必ず別のセッションで行いました。Reviewを担うAIは実装と同じベンダーのモデルのため、第三者による独立レビューではなく、工程とセッションを分離したReviewです。
Reviewは 98 回行い、うち 15 回は差し戻し(Request changes)でした。差し戻しはいずれも修正・再Reviewを経て承認されています。実装中やレビューで見つかった問題は Feedback として起票し、コードで回避せず、仕様・設計の判断を経て是正しました。終盤には並行処理時の状態同期などを是正し、正本を更新したうえで、完了済みの 23 Features すべてを最新の入力で再検収しています。
OrderFlow の開発中に実際に発生した停止・権限・再検収・検証時間などの課題は ADS 側へフィードバックし、開発期間中も ADS を更新しました。
About the developer
S.S業務システムエンジニア|Java / Spring Boot・AI活用
Java / Spring Bootを中心に、約5年にわたり業務システム開発に携わっています。要件整理・設計から実装・テスト・運用までを担当し、現在はAIを開発プロセスに組み込み、自動チェックとReviewを組み合わせた開発に取り組んでいます。
OrderFlowでは、受注・在庫・入出荷・権限制御などの業務ロジックを実装し、検証・Review・再検収を経てProject Completeまで進めました。
OrderFlowの成果物と記録から確認できる、担当した範囲です。
AIを使って速く作るだけでなく、実案件として検証できる状態で完成まで持っていくことを重視しています。
postgres:16 / eclipse-temurin:21-jdk / node:22-alpine)テスト: Backend 単体・アーキテクチャ 14 クラス / 統合 21 クラス、Frontend 20 ファイル、E2E 5 シナリオ
業務システム開発や、AIを活用した開発プロセスについてご相談いただけます。
稼働稼働開始時期・稼働日数は、案件条件に応じてご相談ください。
OrderFlowのソースコードは公開していません。コードは面談時に画面共有でご説明できます。