Kon's DX Lab - Case Study

Day 41|Python × SQLite × Streamlitで「返品問番⇔出荷データ」照合ダッシュボードを構築!

Published on 2025-05-12

🔬 Case Study Summary
Problem

(ここに課題を記述)

Result

(ここに具体的な成果を記述)


Tech & Process

(ここに採用技術とプロセスを記述) コードを詳しく見る »

こんにちは、こんです🦊
今日は返品処理の現場対応を「見える化」+「自動化」するための、Python+Streamlit製ダッシュボードを構築しました。


🧪 技術テーマ:「重たいデータ処理を、使いやすくする」

これまで、ロジレスAPIから出荷データ(10万件以上)を取得し、
返品問番と突合する仕組みをPythonスクリプトで整備してきました。

ただ、CSVやJSONのやりとりでは属人化しやすく、
誰でも見れる・使えるUI」がないと業務として定着しません。

そこで今日は、SQLiteで中間ストレージを構築し、StreamlitでUI化するところまで一気に進めました。


⚙ 技術スタックと構成

✅ ロジレス出荷データの保存形式:JSON → SQLite

  • ロジレスAPIからのデータ取得は、非同期(aiohttp + asyncio)で高速化

  • データ件数が多いため、月単位で sales_orders_shipped_2025MM.json に分割

  • その後、convert_json_to_sqlite.py で必要カラムだけ抽出し、SQLiteの logiless テーブルに変換

# 抽出フィールド例(1レコード)
{
  "受注CD": "testOrderNo1",
  "送り状番号": "testTrackingNo1",
  "支払方法": "cod",
  "出荷日": "2025-04-14 17:10:59",
  ...
}

✅ 返品問番とのJOIN:SQLiteでのインデックス付き結合

  • スプレッドシートから問番リストを取得し、returns テーブルとして保存

  • LEFT JOIN による突合処理を perform_join_and_export() にて実行

  • 出力結果はCSV化し、同時にGoogle Sheetsへバッチ更新

SELECT r.返品問番, l.*
FROM returns r
LEFT JOIN logiless l
ON r.返品問番 = l.送り状番号;

✅ スプレッドシート連携:gspread + batchUpdate に最適化

  • 従来の sheet.update_cell() は1件ずつAPIリクエストが発生 → すぐQuotaエラーに

  • 今回は values_batch_update() に完全移行し、1回で数百行の更新を実現

  • 出荷日も自動で 2025/05/12 形式に整形して記入(pandas datetime処理)

row_updates[date_col] = pd.to_datetime(date_map[tn]).strftime('%Y/%m/%d')

✅ Streamlit UI:社内用の閲覧&操作インターフェース

  • サイドバーで対象年月を指定(年/月選択式)

  • SQLiteに格納されたテーブルをプレビュー&フィルタリング可能

  • 結果はそのままCSVとしてダウンロードもOK

  • generate_inbound_csv.py もStreamlitボタンから呼び出せるように統合済


💡 今日の工夫ポイント

  • データ取得 → SQLite変換 → UI表示 → スプレッドシート反映まで、処理を明確にステップ分離

  • UI上でも「Step ①~⑤」で明示 → 非エンジニアにも操作が伝わりやすい構成に

  • Google Sheetsへの書き戻しは、背景色付き条件付き書式と組み合わせて「注意点が目に見える」状態に


🧭 明日以降のチャレンジ予定

  • 支払方法が「クレカ」の返品 → 顧客への1回限りの自動通知(管理画面をスクレイピングかメールで考え中)

  • 未返信の返品問番 → 一定日数経過でキャンセル+良品移動

  • ロジレスAPIでの入荷予定の登録処理の自動化

  • 社内運用フローをStreamlit + Notion + Slackで一貫化


📌 今日のまとめ

Pythonで処理を組むだけじゃ、使われない。
誰でも「見れる・触れる」状態を作って、はじめて業務になる。

非同期取得、SQLite変換、バッチ反映、そしてUI連携。
一つひとつは小さな技術の積み上げですが、現場の“次の一手”を自動で生むための確かな一歩になりました。

それでは、また次の実験で🦊


#返品対応DX #Python自動化 #SQLite活用 #Streamlit開発 #GoogleSheetsAPI #業務効率化 #バックオフィスDX #EC支援 #勉強記録