全体進捗: 98%(7 Phase 中 Phase 7.5 まで完了)
- package.json 設定
- TypeScript 設定
- Next.js 設定
- Tailwind CSS 設定
- Docker Compose(PostgreSQL)
- 環境変数テンプレート
- Prisma スキーマ定義
- テーブル設計
- マイグレーション設定
- Seed データ作成
- NextAuth 設定
- ログイン画面
- セッション管理
- 認証ミドルウェア
- Atomic Design コンポーネント(Button, Input, Card, Badge, Label)
- FormField(Molecule)
- Sidebar / Header(Organism)
- ダッシュボードレイアウト
- CustomerRepository(CRUD 操作)
- Customer スキーマ(Zod)
- Usecase 実装
- CreateCustomer
- UpdateCustomer
- DeleteCustomer(論理削除)
- GetCustomerById
- ListCustomers(ページネーション)
- API Route Handlers
- GET /api/customers
- POST /api/customers
- GET /api/customers/:id
- PUT /api/customers/:id
- DELETE /api/customers/:id
- 顧客一覧画面
- 顧客詳細画面
- 顧客作成フォーム
- 顧客編集フォーム
- TanStack Query 統合
- ProjectRepository(CRUD 操作)
- Project スキーマ(Zod)
- Usecase 実装
- CreateProject
- UpdateProject
- DeleteProject
- GetProjectById
- ListProjects(フィルタ・ページネーション)
- API Route Handlers
- GET /api/projects
- POST /api/projects
- GET /api/projects/:id
- PUT /api/projects/:id
- DELETE /api/projects/:id
- 案件一覧画面
- 案件詳細画面(請求書・経費一覧含む)
- 案件作成フォーム
- 案件編集フォーム
- InvoiceRepository
- InvoiceItemRepository
- Invoice スキーマ(Zod)
- Domain Service: InvoiceService
- 明細から合計金額を算出
- ステータス更新ロジック
- Usecase 実装
- CreateInvoice(明細含む)
- UpdateInvoice
- DeleteInvoice
- MarkInvoiceSent(送付済み)
- GetInvoiceById(明細・入金履歴含む)
- ListInvoices(フィルタ・ページネーション)
- API Route Handlers
- GET /api/invoices
- POST /api/invoices
- GET /api/invoices/:id
- PUT /api/invoices/:id
- DELETE /api/invoices/:id
- POST /api/invoices/:id/send
- 請求書一覧画面
- 請求書詳細画面
- 請求書作成フォーム
- 明細テーブル(動的追加・削除)
- 合計金額自動計算
- 請求書編集フォーム
- PaymentRepository
- Payment スキーマ(Zod)
- Domain Service: PaymentService
- 入金合計計算
- 自動 PAID 更新ロジック
- Usecase 実装
- RegisterPayment(入金登録 + ステータス自動更新)
- UpdatePayment
- DeletePayment(入金削除 + ステータス再計算)
- ListPaymentsByInvoice
- API Route Handlers
- POST /api/invoices/:id/payments
- GET /api/invoices/:id/payments
- PUT /api/payments/:id
- DELETE /api/payments/:id
- 入金登録フォーム(モーダル)
- 入金履歴一覧(請求書詳細内)
- 入金削除機能
- ExpenseCategoryRepository
- ExpenseCategory スキーマ(Zod)
- Usecase 実装
- CreateExpenseCategory
- UpdateExpenseCategory
- DeleteExpenseCategory
- ListExpenseCategories
- API Route Handlers
- GET /api/expense-categories
- POST /api/expense-categories
- PUT /api/expense-categories/:id
- DELETE /api/expense-categories/:id
- ExpenseRepository
- Expense スキーマ(Zod)
- Usecase 実装
- CreateExpense
- UpdateExpense
- DeleteExpense
- GetExpenseById
- ListExpenses(フィルタ・ページネーション)
- API Route Handlers
- GET /api/expenses
- POST /api/expenses
- GET /api/expenses/:id
- PUT /api/expenses/:id
- DELETE /api/expenses/:id
- 経費一覧画面
- 経費作成フォーム
- 経費編集フォーム
- 経費カテゴリ設定画面
- ReportService(集計ロジック)
- 月次売上集計(入金ベース / 請求ベース)
- 月次経費集計
- 利益計算
- 未回収金額集計
- 案件別集計
- 経費カテゴリ別集計
- Usecase 実装
- GetMonthlySummary
- GetProjectReport
- GetExpenseBreakdown
- API Route Handlers
- GET /api/reports/monthly?month=YYYY-MM
- GET /api/reports/trend?months=N
- GET /api/reports/expenses?month=YYYY-MM
- GET /api/reports/projects?month=YYYY-MM
- GET /api/reports/dashboard?month=YYYY-MM
- 月次サマリカード(売上・経費・利益・未回収)
- 月別推移グラフ(Recharts)
- 売上・経費・利益の折れ線グラフ
- 経費カテゴリ別内訳(円グラフ)
- 案件別売上ランキング(棒グラフ)
- 最近の請求書一覧
- 最近の経費一覧
- 月別レポート画面
- 案件別レポート画面
- CSV エクスポート(将来)
- ユーティリティ関数のテスト
-
formatCurrencyのテスト -
formatDateのテスト
-
- 金額計算ロジックのテスト
-
calculateItemAmount(明細金額計算) -
calculateInvoiceTotal(請求書合計) -
calculatePaidAmount(入金合計) -
calculateUnpaidAmount(未回収金額) -
isFullyPaid(入金済み判定)
-
- Repository 層のテスト
- InvoiceRepository(ステータス更新ロジック)
- PaymentRepository(入金合計計算)
- Domain Service のテスト
- ReportService(月次サマリ集計)
- その他の Domain Service テスト
- InvoiceService(明細から合計金額算出)
- PaymentService(自動 PAID 更新ロジック)
- Usecase 層のテスト
- 請求書作成 + 明細
- 入金登録 + 自動 PAID 更新
- 経費登録
- API Route Handlers のテスト
- 認証チェック
- バリデーションエラー
- CRUD 操作
- ログイン → ダッシュボード
- 請求書作成 → 入金登録 → ダッシュボード反映
目的: ユーザーが使いやすい UI を実現(数字・グラフの見やすさ重視)
- ローディング状態の表示
- スケルトンスクリーン実装(Skeleton, TableSkeleton, CardSkeleton)
- ローディングスピナー(Spinner, LoadingOverlay)
- ボタン押下時のローディング状態(Button loading prop)
- エラーハンドリング強化
- グローバルエラーバウンダリー(ErrorBoundary)
- トースト通知の実装(ToastProvider, useToast)
- TypeScript 型安全性の強化(any 型の排除、Prisma 型の適切な使用)
- エラーページの改善(404, 500)
- バリデーションメッセージの改善
- エラーメッセージの日本語化(全スキーマで実装済み)
- フォームのリアルタイムバリデーション(react-hook-form 統合済み)
- 入力フィールドのヘルプテキスト
- レスポンシブ対応
- モバイル最適化(320px〜)
- ハンバーガーメニュー実装
- ヘッダー・サイドバーのモバイル対応
- 全ページのヘッダー(テキストサイズ、ボタン配置)
- タブレット最適化
- ダッシュボードのグラフ表示調整(高さ自動調整)
- テーブルのスクロール対応(overflow-x-auto + マージン調整)
- モバイル最適化(320px〜)
- 一覧ページの削除機能
- 顧客一覧に削除ボタン追加
- 請求書一覧に削除ボタン追加
- 経費一覧に削除ボタン追加
- 案件一覧に削除ボタン追加
- 確認ダイアログの実装
- トースト通知による削除完了通知
- PDF 生成ライブラリの選定(@react-pdf/renderer)
- 請求書テンプレートのデザイン(日本語フォント対応)
- PDF ダウンロード機能の実装(請求書詳細ページ)
- 会社情報の挿入機能
- 支払期限切れの請求書検出ロジック(/api/alerts)
- ダッシュボードにアラート表示(期限切れ・期限間近)
- 期限前の通知機能(1 週間前、3 日前)
- アラート一覧表示(未払い請求書の可視化)
- CSV 生成ユーティリティ(BOM 付き、Excel 対応)
- 請求書一覧の CSV エクスポート
- 経費一覧の CSV エクスポート
- エクスポート成功時のトースト通知
- CSRF 保護(NextAuth 組み込み機能で対応済み)
- セッション管理(30 日間、JWT 方式)
- 認証ミドルウェア(全 API ルートで適用済み)
- レート制限 + セキュリティ強化
- 見積書管理
- メール送付機能
- 定期請求
- E2E テスト
- パフォーマンス最適化
- 見積書管理
- 見積書の作成・編集・削除
- 見積書から請求書への変換
- 見積書 PDF 出力
- メール送付機能
- 請求書の自動メール送信
- テンプレート管理
- 送信履歴の記録
- 定期請求(月次自動発行)
- 領収書管理
- DB クエリ最適化
- キャッシュ戦略
- ページネーション改善
- 画像最適化
- ✅ プロジェクト初期設定
- ✅ 認証システム
- 顧客管理(Backend + Frontend)
- 案件管理(Backend + Frontend)
- 請求書管理(Backend + Frontend)
- 入金管理(Backend + Frontend)
- 経費管理(Backend + Frontend)
- 基本的なダッシュボード
- レポート機能(詳細)
- グラフ表示
- 単体テスト
- 統合テスト
各 Phase の進捗率は下部の「実装進捗」テーブルを唯一の正とします。
単体テスト(Unit Tests):
- ✅
tests/unit/lib/utils.test.ts- フォーマット関数のテスト - ✅
tests/unit/lib/money/calculator.test.ts- 金額計算ロジックのテスト - ✅
tests/unit/infrastructure/repositories/invoiceRepository.test.ts- 請求書ステータス更新のテスト - ✅
tests/unit/infrastructure/repositories/paymentRepository.test.ts- 入金合計計算のテスト - ✅
tests/unit/domain/services/reportService.test.ts- レポート集計ロジックのテスト - ✅
tests/unit/domain/services/invoiceService.test.ts- 請求書明細から合計金額算出のテスト - ✅
tests/unit/domain/services/paymentService.test.ts- 自動PAID更新ロジックのテスト
統合テスト(Integration Tests):
- ✅
tests/integration/usecases/invoices.test.ts- 請求書作成・更新と明細の統合テスト - ✅
tests/integration/usecases/payments.test.ts- 入金登録と自動 PAID 更新の統合テスト - ✅
tests/integration/usecases/expenses.test.ts- 経費登録の統合テスト - ✅
tests/integration/api/customers.test.ts- API Route Handlers(認証チェック、バリデーションエラー、CRUD操作)のテスト
| Phase | 進捗 | 備考 |
|---|---|---|
| Phase 1 | 100% | 完了 |
| Phase 2 | 100% | 完了 |
| Phase 3 | 100% | 完了 |
| Phase 4 | 100% | 完了 |
| Phase 5 | 100% | 完了 |
| Phase 6 | 90% | 単体・統合テスト完了 |
| Phase 7.1 | 100% | UX 改善完了 |
| Phase 7.2 | 100% | PDF 出力完了 |
| Phase 7.3 | 100% | 支払期限アラート完了 |
| Phase 7.4 | 100% | CSV エクスポート完了 |
| Phase 7.5 | 100% | セキュリティ強化完了 |
| Phase 7.6 | 100% | ユーザー設定機能完了 |
全体進捗: 99%(Phase 1-5, Phase 7.1-7.6 完了、Phase 6 90%)
- UserSettings モデル追加(Prisma)
- 事業者情報(屋号、代表者名、住所、電話、メール)
- 銀行口座情報(銀行名、支店名、口座種別、口座番号、口座名義)
- 請求書設定(プレフィックス、消費税率、支払期限デフォルト、デフォルト備考)
- UserSettingsRepository(CRUD 操作)
- Usecase 実装
- GetSettings(存在しない場合は自動作成)
- UpdateSettings
- API Route Handlers
- GET /api/settings
- PUT /api/settings
- 設定画面実装(/settings)
- 事業者情報フォーム
- 銀行口座情報フォーム
- 請求書設定フォーム
- TanStack Query 統合
- Sidebar に設定リンク追加(既存)
- InvoicePDF コンポーネント修正
- ハードコードされた会社情報を設定から取得
- 銀行口座情報を設定から取得
- デフォルト備考を設定から取得
- PDF 生成 API 修正
- 請求書 PDF 生成時に設定情報を取得
- 設定情報を PDF コンポーネントに渡す
単体テスト(Unit Tests):
- ✅
tests/unit/lib/utils.test.ts- フォーマット関数のテスト - ✅
tests/unit/lib/money/calculator.test.ts- 金額計算ロジックのテスト - ✅
tests/unit/infrastructure/repositories/invoiceRepository.test.ts- 請求書ステータス更新のテスト - ✅
tests/unit/infrastructure/repositories/paymentRepository.test.ts- 入金合計計算のテスト - ✅
tests/unit/domain/services/reportService.test.ts- レポート集計ロジックのテスト
統合テスト(Integration Tests):
- ✅
tests/integration/usecases/invoices.test.ts- 請求書作成・更新と明細の統合テスト - ✅
tests/integration/usecases/payments.test.ts- 入金登録と自動 PAID 更新の統合テスト - ✅
tests/integration/usecases/expenses.test.ts- 経費登録の統合テスト - ✅
tests/integration/api/customers.test.ts- API Route Handlers(認証チェック、バリデーションエラー、CRUD操作)のテスト
ローディング状態:
- ✅ Spinner コンポーネント(sm/md/lg サイズ)
- ✅ LoadingOverlay コンポーネント(全画面ローディング)
- ✅ Skeleton コンポーネント(text/rectangular/circular)
- ✅ TableSkeleton・CardSkeleton(特化版)
- ✅ Button loading prop(ボタン押下時のスピナー表示)
エラーハンドリング:
- ✅ ErrorBoundary(グローバルエラー境界)
- ✅ ToastProvider(トースト通知システム、4 種類: success/error/warning/info)
- ✅ TypeScript 型安全性強化(any 型排除、Prisma 型の適切な使用)
- ✅ ビルドエラー修正(production build 成功)
レスポンシブ対応:
- ✅ モバイルファーストデザイン(320px〜対応)
- ✅ ハンバーガーメニュー(サイドバーのモバイル表示)
- ✅ タッチデバイス対応(タップエリアの最適化)
- ✅ グラフの自動リサイズ(ResponsiveContainer 活用)
- ✅ テーブルの横スクロール対応(overflow-x-auto)
- ✅ ブレークポイント対応(sm: 640px, md: 768px, lg: 1024px)
- ✅ フレキシブルレイアウト(flexbox & grid)
バリデーション:
- ✅ 日本語エラーメッセージ(全フォームで実装済み)
- ✅ react-hook-form 統合(zodResolver 使用)
- ✅ リアルタイムバリデーション(onChange/onBlur)
エラーハンドリング:
- ✅ ErrorBoundary(グローバルエラー境界)
- ✅ ToastProvider(トースト通知システム、4 種類: success/error/warning/info)
- ✅ TypeScript 型安全性強化(any 型排除、Prisma 型の適切な使用)
- ✅ ビルドエラー修正(production build 成功)