✅ フロントエンドの役割と実装イメージ
| 機能 | 実装内容 |
|---|
| テーブル選択ドロップダウン | /models API で取得した候補(例:sale.order, res.partner)を表示 |
| CSV/Excelアップロード | ファイルパーサー(Papaparse, SheetJSなど)でJSON化 |
| インポートプレビュー | ユーザーがデータとフィールド対応を確認できる |
| 実行ボタン | /import API に JSONで POST |
💡 実際の送信データ(POST /import)
{
"model": "sale.order",
"data": [
{"name": "SO001", "amount_total": 1000},
{"name": "SO002", "amount_total": 2000}
],
"auth": {
"db": "mydb",
"user": "import_user",
"password": "****"
}
}
jsonコピーする編集する
✅ バックエンドのポイント(ImportAPI)
| 機能 | 実装内容 |
|---|
| 認証 | 固定トークン or JWT or Basic認証(K8s Secret経由) |
| モデル名の制限 | /models で選択可能モデルのみ列挙(例:ConfigMapに定義) |
| レコード作成 | OdooのXML-RPC or RESTで create するだけ(既存の汎用ロジック) |
| バリデーション | 例:必須項目チェック・不正モデル拒否などを事前処理で弾く |
✅ Kubernetesでの構成(安全で拡張可能)
| コンポーネント | 用途 | 設定管理方法 |
|---|
| ImportAPI Pod | 汎用データ取込API | Helm Chartで環境別展開 |
| ConfigMap | インポート可能モデルや制限一覧 | allowed_models: [res.partner, sale.order] |
| Odoo Pod | 既存のOdoo本体 | ClusterIPで内部通信 |
| PostgreSQL | バックエンドDB | 既存利用 |
| フロントエンド Pod | React等SPA | 外部公開 or Ingress経由 |
✅ ユーザーが安心して使える理由
| 観点 | 機能例 |
|---|
| 安全性 | モデル制限・フィールド制限・認証付きAPI |
| 操作性 | GUIでファイルアップロード+モデル選択+エラー表示 |
| 柔軟性 | 案件ごとにConfigMapやHelmで切替可能(K8s的に拡張しやすい) |
| 権限制御 | Odoo側のaccess rule / record ruleで制御される(安全) |
✅ まとめ:この構成なら「現場で使えるインポートUI」が作れる
| ユーザー操作 | システムの対応 |
|---|
| モデルを選択(例:顧客) | /models API からリスト取得 |
| CSVをアップロード | クライアントでJSON変換(列マッピング) |
| 実行ボタンを押す | /import APIでOdooに送信 → レコード登録 |
コメントを残す