KyosukeIchikawa commited on
Commit
3ee8ccb
·
1 Parent(s): ca68396

Update design document: refine folder structure and enhance coding/testing guidelines

Browse files
Files changed (1) hide show
  1. docs/design.md +36 -11
docs/design.md CHANGED
@@ -17,7 +17,7 @@
17
  - playwright: ブラウザ自動化によるE2Eテスト
18
 
19
  ## フォルダ構成
20
- - app/ - メインアプリケーションコード
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
- - assets/ - 静的アセット(画像、音声サンプルなど)
 
 
 
36
  - data/ - 一時データ保存用
37
  - temp/ - アップロードされたファイルの一時保存
38
  - output/ - 生成された音声ファイル
 
39
  - tests/ - テストコード
40
  - data/ - テスト用データ
41
  - unit/ - ユニットテスト
42
- - integration/ - 統合テスト
43
  - e2e/ - エンドツーエンドテスト
44
- - features/ - BDDシナリオ定義
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
- - モックを使用したAPIのテスト
91
- - テスト用のサンプルPDFを用意した自動テスト
92
- - CIパイプラインでのテスト自動実行
 
 
 
 
 
 
 
 
93
 
94
  ## デプロイメント
95
- - ローカル開発環境での実行: `python app.py` または `python -m app.app`
96
- - 必要なパッケージ: requirements.txtに記載
 
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 へ自動デプロイ