ProManage
食品加工業向け販売管理システム。Odoo 17 をバックエンドに据えつつ完全に隠蔽し、専用 Web UI を通じて仕入・加工・販売を一貫管理します。
特長
- Odoo 完全隠蔽 — 利用者は Odoo の管理画面に触れることなく、専用 UI ですべての業務を遂行
- 食品加工に特化 — 原材料ロット → 加工ロット → 製品ロットの完全トレーサビリティ(順方向・逆方向追跡)
- エンドツーエンド — 仕入・在庫・加工(BOM/製造指図)・販売(受注/出荷/請求)まで一貫フロー
- ロールベース権限 — 管理者 / 営業 / 現場作業者の 3 ロール
アーキテクチャ
┌─────────────────────────────────────────────────────┐
│ Frontend (React SPA) │
│ Vite + TypeScript + Tailwind CSS + react-router │
│ Port: 5173 │
└──────────────┬──────────────────────────┬────────────┘
│ HTTP (axios) │
▼ ▼
┌──────────────────────────────────────────────────────┐
│ API Server (Express + TypeScript) │
│ Port: 3001 │
│ JWT 認証 / ルーティング / XML-RPC ブリッジ │
└──────────────┬──────────────────────────┬─────────────┘
│ XML-RPC │
▼ ▼
┌──────────────────────┐ ┌──────────────────────────┐
│ Odoo 17 │ │ PostgreSQL 15 │
│ Port: 8069 │ │ Port: 5432 │
│ (Docker) │ │ (Docker) │
└──────────────────────┘ └──────────────────────────┘
レイヤー構成
| レイヤー |
技術スタック |
役割 |
| Frontend |
React 18 + Vite + TypeScript |
専用 Web UI |
| API |
Express + TypeScript + JWT |
REST API + Odoo XML-RPC ブリッジ |
| ERP Backend |
Odoo 17 (Docker) |
業務ロジック・データ永続化 |
| Database |
PostgreSQL 15 (Docker) |
データ保存 |
主要ディレクトリ
├── api/ Express API サーバー
│ ├── src/
│ │ ├── routes/ ルーティング(14ファイル, 46エンドポイント)
│ │ ├── services/ Odoo XML-RPC サービス(10ファイル, 51関数)
│ │ ├── middleware/ 認証・権限ミドルウェア
│ │ ├── types/ 型定義
│ │ └── index.ts エントリポイント
│ └── tests/
├── web/ React フロントエンド
│ ├── src/
│ │ ├── pages/ ページコンポーネント(29ファイル)
│ │ ├── components/ UI コンポーネント(Layout, DataTable)
│ │ ├── contexts/ AuthContext(JWT 認証状態管理)
│ │ ├── api/ axios クライアント
│ │ └── types/ 型定義
│ └── vite.config.ts
├── odoo/ Odoo 設定・カスタムアドオン
├── docker-compose.yml Odoo + PostgreSQL
└── .planning/ プロジェクト管理ドキュメント
API エンドポイント
認証 (/api/auth)
| Method |
Path |
説明 |
| POST |
/login |
ログイン(JWT 発行) |
| GET |
/me |
現在のユーザー情報 |
仕入管理
| Method |
Path |
説明 |
| GET/POST |
/api/partners |
仕入先 一覧/作成 |
| GET/PUT |
/api/partners/:id |
仕入先 詳細/更新 |
| GET/POST/PUT |
/api/purchase-orders |
発注 CRUD |
| POST |
/api/purchase-orders/:id/confirm |
発注確定 |
| GET/POST |
/api/receipts |
入庫一覧/作成 |
| POST |
/api/receipts/:id/validate |
入庫確定 |
| POST |
/api/receipts/lots |
ロット作成 |
在庫管理
| Method |
Path |
説明 |
| GET |
/api/inventory/quants |
在庫数量一覧 |
| GET |
/api/inventory/summary |
在庫サマリー |
| POST |
/api/inventory/adjustments |
棚卸登録 |
加工管理
| Method |
Path |
説明 |
| GET/POST |
/api/processing/boms |
BOM/レシピ CRUD |
| GET/POST |
/api/processing/productions |
製造指図 CRUD |
| POST |
/api/processing/productions/:id/confirm |
指図確定 |
| POST |
/api/processing/productions/:id/start |
指図開始 |
| POST |
/api/processing/productions/:id/finish |
指図完了(ロット登録) |
| GET |
/api/processing/trace/forward/:lotId |
ロット順追跡 |
| GET |
/api/processing/trace/backward/:lotId |
ロット逆追跡 |
販売管理
| Method |
Path |
説明 |
| GET/POST |
/api/customers |
顧客 CRUD |
| GET/POST |
/api/sales/sales-orders |
受注 CRUD |
| POST |
/api/sales/sales-orders/:id/confirm |
受注確定 |
| GET |
/api/sales/sales-orders/:id/pdf |
PDF 出力 |
| GET/POST |
/api/shipments |
出荷管理 |
| POST |
/api/shipments/:id/deliver |
出荷確定 |
| GET/POST |
/api/invoices |
請求書管理 |
| POST |
/api/invoices/:id/pay |
入金登録 |
システム
| Method |
Path |
説明 |
| GET |
/api/health |
ヘルスチェック |
| GET/PUT |
/api/config |
システム設定 |
開発環境
前提条件
- Node.js 18+
- Docker & Docker Compose
セットアップ
# 1. Odoo + PostgreSQL 起動
docker compose up -d
# 2. API サーバー起動
cd api
cp ../.env.example .env # 初回のみ
npm install
npm run dev
# 3. フロントエンド起動(別ターミナル)
cd web
npm install
npm run dev
起動確認
curl http://localhost:3001/api/health
# → {"status":"ok","odoo":"connected","timestamp":"..."}
ブラウザで http://localhost:5173 にアクセスし、admin / admin でログイン。
ログイン認証情報
| ロール |
ログイン |
パスワード |
| 管理者 |
admin |
admin |
| 営業 |
sales |
sales |
| 現場作業者 |
worker |
worker |
v1 実装要件(19要件 全完了)
| フェーズ |
要件 |
完了 |
| Phase 1: 基盤・認証 |
ログイン/ロール権限 |
✓ |
| Phase 2: 仕入管理 |
仕入先/原材料/発注/入庫/ロット登録 |
✓ |
| Phase 3: 在庫管理 |
在庫照会/棚卸 |
✓ |
| Phase 4: 加工管理 |
BOM/製造指図/実績登録/トレーサビリティ |
✓ |
| Phase 5: 販売管理 |
顧客/見積/受注/出荷 |
✓ |
| Phase 6: 請求・完了 |
請求書/入金/ダッシュボード |
✓ |
技術スタック
| カテゴリ |
技術 |
| フロントエンド |
React 18, TypeScript, Vite, react-router-dom v6, axios |
| バックエンド |
Express, TypeScript, xmlrpc, jsonwebtoken |
| ERP |
Odoo 17 (Docker), PostgreSQL 15 (Docker) |
| 開発ツール |
tsx (TypeScript Execute), Vitest, Supertest |
ライセンス
プロプライエタリ。社内利用専用。
ProManage v1 — 2026-06