プロジェクトルールの更新、.gitignoreにSample-dataを追加、業務用Webアプリケーションの仕様書を新規作成

This commit is contained in:
president
2025-12-19 14:31:22 +09:00
parent 0cae0f99ce
commit bf74153533
3 changed files with 134 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
# Cursor project rules
- 回答言語: 常に日本語で応答
- コーディング: 既存のコードスタイル・命名規則に従う
- プロジェクト概要:
- 注意点(任意):
- プロジェクト概要:クレジットカードCSVデータを分類、レポートを作るWebアプリケーション
- 注意点(任意):仕様書の確認する

2
.gitignore vendored
View File

@@ -1,3 +1,5 @@
Sample-data/
# ---> Python
# Byte-compiled / optimized / DLL files
__pycache__/

130
仕様書.md Normal file
View File

@@ -0,0 +1,130 @@
あなたは業務用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可
* is_business会社経費 / 家計フラグ、NULL可
* note備考
* sourceCSV種別idemitsu 等)
* source_hash行ハッシュ
* ai_score将来用、NULL可
* human_confirmed人間確定フラグ
* 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装飾やフロントフレームワークは不要。
業務実装として堅牢・拡張可能なコードを優先する。