diff --git a/.gitignore b/.gitignore index e69de29..9f11b75 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1 @@ +.idea/ diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 9ebc6e2..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/spec/README.md b/spec/README.md index 92d4b18..7ec9641 100644 --- a/spec/README.md +++ b/spec/README.md @@ -36,6 +36,28 @@ keruta はクラウドベースのバッチ処理システムであり、複数 * [keruta log](./log.md) - ログフォーマット、ログレベル、ログストリーミングの仕様 +### モジュール仕様 + +モジュール間の依存関係は [モジュール構成図](./module/modules.png) を参照してください。 + +* [kodel:core](./module/kodel_core.md) + - DI、エラーハンドリング、ログ管理を提供する汎用ライブラリのコアモジュール + +* [kodel:api](./module/kodel_api.md) + - API 層でのエラーハンドリング、ログ統合、DI 統合を提供 + +* [ktcp:model](./module/ktcp_model.md) + - KTCP プロトコルのデータモデル定義 + +* [ktcp:client](./module/ktcp_client.md) + - KTCP クライアント実装(プロバイダー側) + +* [ktcp:server](./module/ktcp_server.md) + - KTCP サーバー実装(タスクサーバー側) + +* [ktse](./module/ktse.md) + - Ktor WebSocket を使用した KTCP サーバーエンジン + ## 開発ガイドライン - プロトコル仕様は明確で実装可能なものとする diff --git a/spec/module/kodel_api.md b/spec/module/kodel_api.md new file mode 100644 index 0000000..2d7dc30 --- /dev/null +++ b/spec/module/kodel_api.md @@ -0,0 +1,15 @@ +# kodel:api + +## 概要 + +API 層でのエラーハンドリング、ログ統合、DI 統合を提供するモジュール。 + +## 責務 + +- API レイヤーでのエラーハンドリング +- API レイヤーでのログ統合(リクエスト/レスポンスロギング) +- Web フレームワーク向け DI 統合 + +## 依存関係 + +- `kodel:core` - 基盤機能を利用 \ No newline at end of file diff --git a/spec/module/kodel_core.md b/spec/module/kodel_core.md new file mode 100644 index 0000000..dca5f5d --- /dev/null +++ b/spec/module/kodel_core.md @@ -0,0 +1,16 @@ +# kodel:core + +## 概要 + +DI(Dependency Injection)、エラーハンドリング、ログ管理を提供する汎用ライブラリのコアモジュール。 + +## 責務 + +- DI コンテナの提供 +- 構造化エラーハンドリング +- ログ管理の基盤機能 +- 共通ユーティリティ + +## 依存関係 + +外部モジュールに依存しない \ No newline at end of file diff --git a/spec/module/ktcp_client.md b/spec/module/ktcp_client.md new file mode 100644 index 0000000..cee6c0c --- /dev/null +++ b/spec/module/ktcp_client.md @@ -0,0 +1,25 @@ +# ktcp:client + +## 概要 + +KTCP プロトコルのクライアント実装を提供するモジュール。プロバイダー側で使用される。 + +## 責務 + +- サーバーへのメッセージ送信 +- サーバーからのメッセージ受信・処理 +- 接続管理(再接続、ハートビート) +- 認証処理 + +## 主要機能 + +- タスク実行要求の受信 +- タスク状態の送信 +- ログストリーミング +- エラー通知 +- 自動再接続 +- ハートビート送信 + +## 依存関係 + +- `ktcp:model` - プロトコルメッセージモデル \ No newline at end of file diff --git a/spec/module/ktcp_model.md b/spec/module/ktcp_model.md new file mode 100644 index 0000000..d46dd27 --- /dev/null +++ b/spec/module/ktcp_model.md @@ -0,0 +1,26 @@ +# ktcp:model + +## 概要 + +KTCP(Keruta Task Client Protocol)プロトコルのデータモデルを定義するモジュール。 + +## 責務 + +- プロトコルメッセージのデータモデル定義 +- タスク状態のエンティティ定義 +- バリデーションルール定義 +- シリアライズ/デシリアライズインターフェース + +## メッセージタイプ + +KTCP プロトコルで使用される全メッセージタイプの詳細は [KTCP 仕様](../task-client-protocol.md) を参照してください。 + +主要なメッセージカテゴリ: +- タスク操作(CRUD) +- タスク実行制御 +- 認証とセッション管理 +- 監視と診断 + +## 依存関係 + +外部モジュールに依存しない \ No newline at end of file diff --git a/spec/module/ktcp_server.md b/spec/module/ktcp_server.md new file mode 100644 index 0000000..fbd1dfc --- /dev/null +++ b/spec/module/ktcp_server.md @@ -0,0 +1,27 @@ +# ktcp:server + +## 概要 + +KTCP プロトコルのサーバー実装を提供するモジュール。タスクサーバー(keruta-api)側で使用される。 + +## 責務 + +- クライアント接続管理 +- クライアントへのメッセージ送信 +- クライアントからのメッセージ受信・処理 +- 認証・認可 +- セッション管理 + +## 主要機能 + +- タスク実行要求の送信 +- タスク状態の受信 +- ログストリーミングの受信 +- エラー通知の受信 +- クライアント認証 +- ハートビート監視 +- 接続プール管理 + +## 依存関係 + +- `ktcp:model` - プロトコルメッセージモデル \ No newline at end of file diff --git a/spec/module/ktse.md b/spec/module/ktse.md new file mode 100644 index 0000000..29b1eab --- /dev/null +++ b/spec/module/ktse.md @@ -0,0 +1,37 @@ +# ktse - Keruta Task Server Engine + +## 概要 + +KTCP サーバーの WebSocket 実装を提供するモジュール。タスクサーバーで使用される WebSocket エンジン。 + +## 責務 + +- WebSocket サーバーの具体的実装 +- WebSocket 接続のライフサイクル管理 +- メッセージの送受信処理 +- 接続プーリング +- パフォーマンス最適化 + +## 主要機能 + +- WebSocket エンドポイント提供(`/ws/ktcp`) +- 双方向メッセージング +- 接続状態管理 +- メッセージのバッチ処理 +- 圧縮・最適化 +- エラーハンドリング + +## エンドポイント + +``` +ws://:/ws/ktcp +wss://:/ws/ktcp(推奨) +``` + +デフォルト: `ws://keruta-api:8080/ws/ktcp` + +## 依存関係 + +- `ktcp:server` - KTCP サーバーインターフェース +- `ktcp:model` - プロトコルメッセージモデル +- 外部: Ktor WebSocket - WebSocket 通信フレームワーク diff --git a/spec/module/modules.png b/spec/module/modules.png new file mode 100644 index 0000000..cec99b2 Binary files /dev/null and b/spec/module/modules.png differ