Commit ·
3ee8ccb
1
Parent(s): ca68396
Update design document: refine folder structure and enhance coding/testing guidelines
Browse files- docs/design.md +36 -11
docs/design.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
| 17 |
- playwright: ブラウザ自動化によるE2Eテスト
|
| 18 |
|
| 19 |
## フォルダ構成
|
| 20 |
-
-
|
| 21 |
- components/ - Gradioコンポーネント
|
| 22 |
- audio_generator.py - 音声生成機能
|
| 23 |
- file_uploader.py - ファイル処理機能
|
|
@@ -32,19 +32,22 @@
|
|
| 32 |
- common_podcast_utils.j2 - 共通のポッドキャスト生成ユーティリティ
|
| 33 |
- paper_to_podcast.j2 - 論文解説用テンプレート
|
| 34 |
- section_by_section.j2 - セクションごとの詳細解説用テンプレート
|
| 35 |
-
-
|
|
|
|
|
|
|
|
|
|
| 36 |
- data/ - 一時データ保存用
|
| 37 |
- temp/ - アップロードされたファイルの一時保存
|
| 38 |
- output/ - 生成された音声ファイル
|
|
|
|
| 39 |
- tests/ - テストコード
|
| 40 |
- data/ - テスト用データ
|
| 41 |
- unit/ - ユニットテスト
|
| 42 |
-
- integration/ - 統合テスト
|
| 43 |
- e2e/ - エンドツーエンドテスト
|
| 44 |
-
|
| 45 |
-
- steps/ - BDDステップ実装
|
| 46 |
- docs/ - ドキュメント
|
| 47 |
- voicevox_core/ - VOICEVOXコアライブラリとモデル
|
|
|
|
| 48 |
|
| 49 |
## 機能要件
|
| 50 |
1. ファイルアップロード機能
|
|
@@ -76,23 +79,45 @@
|
|
| 76 |
|
| 77 |
## コーディング規則
|
| 78 |
- PEP 8準拠のPythonコード
|
|
|
|
|
|
|
| 79 |
- 型ヒントの積極的な活用(mypy対応)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 80 |
- 関数・クラスには適切なドキュメンテーション(docstring)を付ける
|
|
|
|
| 81 |
- 例外処理の適切な実装
|
| 82 |
- 長いテキスト処理のチャンク分割処理
|
| 83 |
- 音声ファイル生成時のFFmpeg活用
|
| 84 |
- ソースコード内のメッセージ・ログは全て英語で記述する
|
| 85 |
- ドキュメント(README.md, design.md等)は日本語のまま維持する
|
|
|
|
| 86 |
|
| 87 |
## テスト規則
|
| 88 |
- BDDフレームワーク(pytest-bdd)を使用したE2Eテスト
|
| 89 |
-
-
|
| 90 |
-
-
|
| 91 |
-
- テスト
|
| 92 |
-
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 93 |
|
| 94 |
## デプロイメント
|
| 95 |
-
- ローカル開発環境での実行: `python app.py` または `python -m
|
| 96 |
-
-
|
|
|
|
| 97 |
- VOICEVOX Core: `make download-voicevox-core` でセットアップ
|
|
|
|
| 98 |
- OpenAI API / Google Gemini API: APIキー設定が必要
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
- playwright: ブラウザ自動化によるE2Eテスト
|
| 18 |
|
| 19 |
## フォルダ構成
|
| 20 |
+
- yomitalk/ - メインアプリケーションコード
|
| 21 |
- components/ - Gradioコンポーネント
|
| 22 |
- audio_generator.py - 音声生成機能
|
| 23 |
- file_uploader.py - ファイル処理機能
|
|
|
|
| 32 |
- common_podcast_utils.j2 - 共通のポッドキャスト生成ユーティリティ
|
| 33 |
- paper_to_podcast.j2 - 論文解説用テンプレート
|
| 34 |
- section_by_section.j2 - セクションごとの詳細解説用テンプレート
|
| 35 |
+
- app.py - ルートレベルのエントリーポイント
|
| 36 |
+
- assets/ - 静的アセット
|
| 37 |
+
- images/ - 画像ファイル
|
| 38 |
+
- favicon.ico - ファビコン
|
| 39 |
- data/ - 一時データ保存用
|
| 40 |
- temp/ - アップロードされたファイルの一時保存
|
| 41 |
- output/ - 生成された音声ファイル
|
| 42 |
+
- logs/ - ログファイル保存用
|
| 43 |
- tests/ - テストコード
|
| 44 |
- data/ - テスト用データ
|
| 45 |
- unit/ - ユニットテスト
|
|
|
|
| 46 |
- e2e/ - エンドツーエンドテスト
|
| 47 |
+
- utils/ - テスト用ユーティリティ
|
|
|
|
| 48 |
- docs/ - ドキュメント
|
| 49 |
- voicevox_core/ - VOICEVOXコアライブラリとモデル
|
| 50 |
+
- scripts/ - 開発用スクリプト
|
| 51 |
|
| 52 |
## 機能要件
|
| 53 |
1. ファイルアップロード機能
|
|
|
|
| 79 |
|
| 80 |
## コーディング規則
|
| 81 |
- PEP 8準拠のPythonコード
|
| 82 |
+
- black、isort、flake8による自動フォーマットとリンティング
|
| 83 |
+
- pre-commitフックによる自動検証
|
| 84 |
- 型ヒントの積極的な活用(mypy対応)
|
| 85 |
+
- 新規ファイルでは厳格な型チェックを適用
|
| 86 |
+
- 既存コードにも段階的に型アノテーションを追加
|
| 87 |
+
- テスト駆動開発(TDD)の実践
|
| 88 |
+
- トランクベース開発(main branchへの直接コミット)
|
| 89 |
+
- 小さな変更単位での開発と統合
|
| 90 |
- 関数・クラスには適切なドキュメンテーション(docstring)を付ける
|
| 91 |
+
- コードレビューとCI通過を統合の条件とする
|
| 92 |
- 例外処理の適切な実装
|
| 93 |
- 長いテキスト処理のチャンク分割処理
|
| 94 |
- 音声ファイル生成時のFFmpeg活用
|
| 95 |
- ソースコード内のメッセージ・ログは全て英語で記述する
|
| 96 |
- ドキュメント(README.md, design.md等)は日本語のまま維持する
|
| 97 |
+
- カスタムトークンやprintステートメントの検出と警告
|
| 98 |
|
| 99 |
## テスト規則
|
| 100 |
- BDDフレームワーク(pytest-bdd)を使用したE2Eテスト
|
| 101 |
+
- テストシナリオは `tests/e2e/features/` ディレクトリに `.feature` ファイルとして記述
|
| 102 |
+
- ステップ実装は `tests/e2e/features/steps/` ディレクトリに配置
|
| 103 |
+
- Playwrightによるブラウザテスト
|
| 104 |
+
- ユニットテストによる各コンポーネントの個別検証
|
| 105 |
+
- テストファイルは `tests/unit/` ディレクトリに配置
|
| 106 |
+
- 各クラス・モジュールごとに独立したテストファイルを作成
|
| 107 |
+
- モックを使用したAPIのテスト(OpenAI API、Gemini API)
|
| 108 |
+
- テスト用のサンプルPDFおよびテキストデータを用意した自動テスト
|
| 109 |
+
- GitHubワークフローによるCI自動実行
|
| 110 |
+
- 静的解析(pre-commit)
|
| 111 |
+
- E2Eテストの自動実行
|
| 112 |
+
- 自動デプロイ(Hugging Faceへ)
|
| 113 |
|
| 114 |
## デプロイメント
|
| 115 |
+
- ローカル開発環境での実行: `python app.py` または `python -m yomitalk.app`
|
| 116 |
+
- セットアップ: `make setup` コマンドで環境構築
|
| 117 |
+
- 必要なパッケージ: requirements.txtに記載(requirements.inから生成)
|
| 118 |
- VOICEVOX Core: `make download-voicevox-core` でセットアップ
|
| 119 |
+
- VOICEVOXのライセンス規約に同意する必要あり
|
| 120 |
- OpenAI API / Google Gemini API: APIキー設定が必要
|
| 121 |
+
- Docker: `Dockerfile` を使用してコンテナ化可能
|
| 122 |
+
- CI/CD: GitHub Actions による自動テスト・デプロイ
|
| 123 |
+
- Hugging Face Spaces へ自動デプロイ
|