Files
Card-data-sorting/仕様書.md

4.5 KiB
Raw Permalink Blame History

あなたは業務用Webアプリケーションを実装するPython/Djangoエンジニアです。 以下の仕様を満たすDjangoアプリケーションの設計および実装を行ってください。

目的

クレジットカード明細CSVを取り込み、 「会社経費」と「家計」を人間が確認・編集しながら分離管理できるWebアプリを構築する。

将来的なCSVブランド追加・軽量機械学習導入を前提とするが、 現時点ではルール+人間確定を主軸とする。


技術スタック

  • Python 3.x
  • Django
  • PostgreSQL
  • フロントエンドはHTML + 最小限のJavaScriptDrag & Drop
  • PDF生成は HTML → PDFWeasyPrint想定

CSV仕様現状

  • 出光クレジットカードCSVを第一対応とする

  • CSV内には以下2種類の行が混在する

    • ヘッダ行(カード名称・支払日・請求額など)
    • 明細行(利用日・利用先・金額)
  • 行ごとに列数が異なる

  • ブランド判定はヘッダ文言で行う

  • 今後ブランド追加を想定し、CSVパーサは分離設計とする


アーキテクチャ要件

CSV処理

  1. CSVファイルをDrag & Dropでアップロード
  2. 文字コードを自動判定
  3. CSV内容からブランド種別を判定
  4. ブランド別パーサで明細を抽出
  5. 正規化したデータを共通expensesテーブルへ投入
  6. 行単位でハッシュを生成し、二重登録を防止する

データベース設計

expenses経費明細

  • id
  • use_date日付
  • description利用先・摘要
  • amount金額
  • store_id店舗区分、NULL可
  • expense_category_id経費区分、NULL可
  • owner_typecompany/personal/pending
  • note備考
  • sourceCSV種別idemitsu 等)
  • source_hash行ハッシュ
  • ai_score将来用、NULL可
  • human_confirmed人間確定フラグ
  • is_canceled取り消しフラグ
  • created_at / updated_at

UNIQUE(source, source_hash)

マスタ

  • stores本店・支店
  • expense_categories材料費・消耗品費など

画面仕様

1. CSV取込画面

  • Drag & Drop対応
  • 取込件数・重複件数を表示

2. 明細編集画面(最重要)

  • 明細一覧テーブル表示

  • 編集可能項目:

    • 店舗区分select
    • 経費区分select
    • 家計 / 経費フラグ
    • 備考
  • 金額・日付は原則readonly

  • 1行単位でAJAX保存

3. 月次レポート画面

  • 年月指定
  • 店舗別合計
  • 経費区分別合計
  • 未分類件数の警告表示

4. PDF出力

  • 月次レポートと同一HTMLをPDF化
  • A4縦、印刷可能レイアウト

設計思想・制約

  • CSV取り込み時点では自動判断しない
  • 人間が一度確定したデータを教師データとして将来活用可能にする
  • Pythonの軽量機械学習scikit-learn想定を後から追加できる構成にする
  • ロジックはViewに書かず、service層に分離する

成果物

  • Djangoプロジェクト構成案
  • models.py
  • CSVパーサ構成
  • views.py / services.py の役割分離
  • 主要HTMLテンプレート骨格で可
  • 集計クエリ例
  • PDF生成コード例

過剰なUI装飾やフロントフレームワークは不要。 業務実装として堅牢・拡張可能なコードを優先する。


サブスク判定ルール案(暫定)

候補リスト(利用先文字列 + 金額)

  •    480 -> 事務用品費、ウェザーニュース
  •    150 -> 事務用品費、iCloud 追加Disk
  •    1200 -> 未設定、アップルニュージック
  • ABEMAプレミアム 1080 -> 未設定、個人の娯楽
  •    3305 -> 事務用品費、GPT
  • エックスサ−バ−/M 2200 ->  通信費               //文字の揺らぎ 下と同じ
  • エックスサ-バ-/M 2200 -> 通信費、Nextcloud運営VPS
  • お名前.com ドメインサービス 268/270 -> 通信費、ドメインサービス
  • お名前.comレンタルサ−バ− 2153 -> 通信費、レンタルサーバー(価格変動あり/表記揺れあり)
  • お名前.comレンタルサ-バ- 2612 -> 通信費、レンタルサーバー(価格変動あり/表記揺れあり)
  • アット・ニフティ 5361 -> (要確認)