Conversation
…ith SQLAlchemy Co-authored-by: notfolder <20558197+notfolder@users.noreply.github.com>
notfolder
left a comment
There was a problem hiding this comment.
全体的にtaskモデルのみにして単純化、レポジトリ無しで単純な DBアクセスロジッククラスを作って
|
|
||
| ### 2.1 アーキテクチャ設計 | ||
|
|
||
| #### 2.1.1 レイヤー構成 |
There was a problem hiding this comment.
出来るだけ簡素に実装して下さい。3層でなくても良く、tasksのテーブルクラス1ファイルだけで読みやすく実装出来ませんか?
There was a problem hiding this comment.
1ファイル(db/task_db.py)にTaskモデルとTaskDBクラスをまとめる構成に変更しました (5504583)。
|
|
||
| #### 現在のデータベース構成 | ||
| - **タスク情報DB**: SQLite(`contexts/tasks.db`) | ||
| - **メッセージ履歴**: JSONLファイル(`messages.jsonl`、`current.jsonl`) |
| - 接続URLの構築とバリデーションを行う | ||
|
|
||
| **設定項目**: | ||
| | 環境変数名 | config.yaml キー | 説明 | デフォルト値 | |
|
|
||
| ### 2.3 モデル設計 | ||
|
|
||
| #### 2.3.1 Baseクラス(db/models/base.py) |
There was a problem hiding this comment.
DBモデルは一つのファイルにまとめて、taskテーブルだけで良い
taskの操作をするロジッククラスを一つ用意して使う設計にして
There was a problem hiding this comment.
db/task_db.py 1ファイルにTaskモデルとTaskDBロジッククラスをまとめる構成に変更しました (5504583)。
| | ix_tasks_user | user | ユーザー別検索の高速化 | | ||
| | ix_tasks_task_source_owner_repo | task_source, owner, repo | リポジトリ別検索の高速化 | | ||
|
|
||
| ### 2.4 リポジトリ設計 |
There was a problem hiding this comment.
リポジトリパターンを廃止し、TaskDBロジッククラスに変更しました (5504583)。
| - ファイルパスは `context_storage.base_dir` と `database.sqlite.path` から構築する | ||
|
|
||
| ### 4.2 段階的移行 | ||
| 以下の手順で段階的に移行を進めることを推奨する: |
| | test_db_config.py | db/config.py | 設定読み込みのテスト | | ||
| | test_db_connection.py | db/connection.py | 接続管理のテスト | | ||
| | test_task_model.py | db/models/task.py | Taskモデルのテスト | | ||
| | test_task_repository.py | db/repositories/task_repository.py | TaskRepositoryのテスト | |
| ### 7.1 バックアップ | ||
| PostgreSQLの標準ツール(pg_dump)を使用したバックアップ手順を提供する。 | ||
|
|
||
| ### 7.2 モニタリング |
| ### 7.3 セキュリティ | ||
| 以下のセキュリティ対策を実施する: | ||
| - パスワードは環境変数で管理する(設定ファイルには記載しない) | ||
| - SSL接続を推奨する |
|
|
||
| --- | ||
|
|
||
| ## 9. リスクと対策 |
|
@copilot 全体的にtaskモデルのみにして単純化、レポジトリ無しで単純な DBアクセスロジッククラスを作って |
… class Co-authored-by: notfolder <20558197+notfolder@users.noreply.github.com>
| |-----------|------|--------|------| | ||
| | create_task | task_data: dict | Task | 新規タスクを作成する | | ||
| | get_task | uuid: str | Task または None | UUIDでタスクを取得する | | ||
| | update_task | uuid: str, updates: dict | bool | タスクを更新する | |
There was a problem hiding this comment.
更新用 DBtaskオブジェクトを受け取るので良くない?
他のupdateは不要では?
There was a problem hiding this comment.
update系メソッドを廃止し、save_task(db_task: DBTask)でDBTaskオブジェクトを受け取って保存する方式に変更しました (c24a844)。
| | owner | String(255) | VARCHAR(255) | NOT NULL | リポジトリオーナー | | ||
| | repo | String(255) | VARCHAR(255) | NOT NULL | リポジトリ名 | | ||
| | task_type | String(50) | VARCHAR(50) | NOT NULL | タスクタイプ | | ||
| | task_id | String(50) | VARCHAR(50) | NOT NULL | タスクID | |
There was a problem hiding this comment.
これを機にtaskkeyをjsonから各フィールドに分解したい
githubとgitlabの違いとissueと mergerequestの違いを吸収できる構成を検討して。無理がなさそうなら、分解したフィールドにDBのスキーマを変えて。
無理がありそうなら、task_keyをjsonbにして
There was a problem hiding this comment.
task_keyを各フィールドに分解しました (c24a844)。GitHub/GitLab、Issue/PullRequest/MergeRequestの違いを吸収できる構成:
task_source: github/gitlabtask_type: issue/pull_request/merge_requestowner,repo: GitHub用(GitLabはNULL)project_id: GitLab用(GitHubはNULL)number: タスク番号
|
|
||
| ### 2.2 task_db.py の設計 | ||
|
|
||
| #### 2.2.1 Task モデル |
There was a problem hiding this comment.
Taskオブジェクトと区別するため、 DBTaskとして下さい
| | ix_tasks_created_at | created_at | 作成日時順ソートの高速化 | | ||
| | ix_tasks_user | user | ユーザー別検索の高速化 | | ||
|
|
||
| #### 2.2.2 TaskDB クラス |
| | メソッド名 | 引数 | 戻り値 | 説明 | | ||
| |-----------|------|--------|------| | ||
| | create_task | task_data: dict | Task | 新規タスクを作成する | | ||
| | get_task | uuid: str | Task または None | UUIDでタスクを取得する | |
There was a problem hiding this comment.
get_task_by_key(task_key: TaskKey)メソッドを追加しました (c24a844)。
…_key fields Co-authored-by: notfolder <20558197+notfolder@users.noreply.github.com>
設計書を更新しました (c24a844)。
|
| | task_type | String(50) | VARCHAR(50) | NOT NULL | タスクタイプ(issue/pull_request/merge_request) | | ||
| | owner | String(255) | VARCHAR(255) | NULL可 | GitHubリポジトリオーナー | | ||
| | repo | String(255) | VARCHAR(255) | NULL可 | GitHubリポジトリ名 | | ||
| | project_id | String(255) | VARCHAR(255) | NULL可 | GitLabプロジェクトID | |
|
|
||
| | メソッド名 | 引数 | 戻り値 | 説明 | | ||
| |-----------|------|--------|------| | ||
| | create_task | task_data: dict | DBTask | 新規タスクを作成する | |
There was a problem hiding this comment.
タスク作成とともに DBに新しいタスクレコードをinsertする旨明記
taskオブジェクト版もあった方が良い
There was a problem hiding this comment.
create_taskの説明を「新規タスクを作成し、DBにINSERTする」に変更し、create_task_from_task(task: Task)メソッドを追加しました (746f7bf)。
| |--------------|------|------| | ||
| | test_task_db.py | db/task_db.py | TaskDBManagerクラスのテスト | | ||
|
|
||
| ### 5.2 テスト用データベース |
…ve test chapter Co-authored-by: notfolder <20558197+notfolder@users.noreply.github.com>
Original prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.