iv_and/OLLAMA.md
joe 8ae6d1be62 docs: プロジェクト計画書を追加しました
Co-authored-by: aider (ollama_chat/3) <aider@aider.chat>
2026-01-16 06:00:47 +09:00

153 lines
6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# スマートフォン用 見積納品請求領収書発行システム を制作します
- flutterを使います
- 今は初期段階なので請求書だけを作ります
- 今は初期段階なのでスタンドアロンですが将来的にデータをodooとOnline時に同期する予定です
- 今はデータをローカルのsqliteで管理します
- 顧客データはスマートフォンの住所録から取り込むか貼り付けか手入力します
- 商品データは手入力しsqliteで管理します
- 値引きも商品データとしてsqliteで管理します
## プロジェクト計画(スマートフォン用 見積納品請求領収書発行システム)
---
### 1. 目的・概要
- Flutterで構築するモバイルアプリ
- 現時点では請求書(領収書)発行機能のみ
- 将来的に Odoo とオンライン同期を実装
- データはローカル SQLite に保存
- 顧客情報は電話帳からインポート/手入力
- 商品・値引き情報は手入力で SQLite に保存
---
### 2. 主要機能一覧
| 機能 | 説明 | 優先度 |
|------|------|--------|
| **請求書作成** | 顧客選択 → 商品・数量入力 → 合計・税・値引き計算 → PDF/画像生成 | ★★★★★ |
| **顧客管理** | 連絡先インポート、手入力、編集、削除 | ★★★★☆ |
| **商品管理** | 商品名・単価・値引き設定、編集、削除 | ★★★★☆ |
| **データ永続化** | SQLitesqfliteで顧客・商品・請求書履歴保存 | ★★★★★ |
| **PDF/画像出力** | `printing` / `pdf` パッケージで請求書を生成 | ★★★★☆ |
| **将来の同期** | Odoo REST API 連携認証・CRUD | ★★☆☆☆ |
| **UI/UX** | Material Design、レスポンシブ、アクセシビリティ | ★★★★★ |
---
### 3. 技術スタック
- **フロントエンド**: Flutter 3.x, Dart
- **データベース**: `sqflite` + `path_provider`
- **PDF生成**: `pdf`, `printing`
- **状態管理**: `provider`(または Riverpod
- **テスト**: `flutter_test`, `mockito`
- **CI/CD**: GitHub Actionsビルド・テスト
---
### 4. データモデルSQLite
| テーブル | カラム | 型 | 備考 |
|----------|--------|----|------|
| `customers` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
| | name | TEXT | |
| | phone | TEXT | |
| | address | TEXT | |
| | email | TEXT | |
| `products` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
| | name | TEXT | |
| | unit_price | REAL | |
| | discount | REAL | 0〜1 の割合 |
| `invoices` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
| | customer_id | INTEGER | FK |
| | date | TEXT | ISO8601 |
| | total | REAL | |
| | tax | REAL | |
| | discount_total | REAL | |
| `invoice_items` | id | INTEGER PRIMARY KEY AUTOINCREMENT | |
| | invoice_id | INTEGER | FK |
| | product_id | INTEGER | FK |
| | quantity | INTEGER | |
| | unit_price | REAL | |
| | discount | REAL | |
---
### 5. 画面設計(ワイヤーフレーム)
1. **ホーム**
- 「請求書作成」ボタン
- 「顧客一覧」ボタン
- 「商品一覧」ボタン
2. **顧客一覧**
- 検索バー
- 顧客カード(名前・電話)
- 追加ボタン(連絡先インポート/手入力)
3. **商品一覧**
- 検索バー
- 商品カード(名前・単価・値引き)
- 追加ボタン
4. **請求書作成**
- 顧客選択ドロップダウン
- 商品追加リスト(+ボタン)
- 数量入力フィールド
- 合計・税・値引き表示
- 「PDF生成」ボタン
5. **請求書プレビュー**
- PDF/画像表示
- 共有/保存ボタン
---
### 6. 開発フロー
1. **環境構築**
- Flutter SDK 3.x インストール
- `pubspec.yaml` に必要パッケージ追加
2. **データベース設計**
- `db_helper.dart` でテーブル作成・CRUD実装
3. **モデルクラス**
- `Customer`, `Product`, `Invoice`, `InvoiceItem` を作成
4. **状態管理**
- `CustomerProvider`, `ProductProvider`, `InvoiceProvider` を実装
5. **UI実装**
- 画面ごとに `StatelessWidget` / `StatefulWidget` を作成
- `ListView.builder` でデータ表示
6. **PDF生成**
- `pdf` パッケージでレイアウト設計
- `printing` でプレビュー・保存・共有
7. **テスト**
- 単体テストモデル・DB
- widget テスト(画面遷移・入力)
8. **ビルド・デプロイ**
- Android/iOS 向けビルド
- GitHub Actions で自動テスト・ビルド
---
### 7. 将来の Odoo 同期設計(ロードマップ)
- **認証**: OAuth2 / API キー
- **エンドポイント**: `/api/invoices`, `/api/customers`, `/api/products`
- **同期戦略**:
- **プッシュ**: ローカルで作成した請求書を Odoo に POST
- **プル**: Odoo から顧客・商品データを取得しローカルにマージ
- **エラーハンドリング**: ネットワーク失敗時はローカルにキュー保存
- **UI**: 「同期」ボタン、同期ステータス表示
---
### 8. 重要ポイント & リスク
- **データ整合性**: SQLite の外部キー制約を有効化
- **パフォーマンス**: 大量データ時はページング実装
- **セキュリティ**: データ暗号化(`sqflite_sqlcipher`)検討
- **ユーザー体験**: 入力補完、バリデーション、エラーメッセージ
---
### 9. 次のステップ
1. `pubspec.yaml` に必要パッケージを追加
2. `db_helper.dart` を作成しテーブルを生成
3. モデルクラスを実装
4. 画面構成を決め、最小限の UI を作成
5. PDF 生成を試作し、レイアウトを確定
---
**以上が、現在の要件に基づくプロジェクト計画です。**
次に進める際は、上記の順序でタスクを分割し、GitHub Issues で管理するとスムーズです。