CR-FASTAPI-019: TypeScript SDK の整備 & E2E - 完了レポート

実装日時

2025年12月8日(初回実装) 2025年12月10日(NexusCoreClient 追加、エラーハンドリング改善)

概要

目的

TypeScript SDK を Python SDK と同等レベル(v0.1.0 商品化+E2E 確立)まで引き上げる。

ゴール

  • TypeScript SDK が v0.1.0 として Semantic Versioning ベースで明示されている
  • npm install(ローカルパス指定 or Test Registry)で利用可能
  • SDK 専用 README が存在し、インストール方法、認証設定、使用例が明確になっている
  • LICENSE が SDK ディレクトリ直下に存在
  • TypeScript SDK 向けのテストが揃っている(import / 型レベルの smoke test + E2E テスト)

実装ステップ

Step 1: generate_sdk.py の更新

変更ファイル: tools/generate_sdk.py

  • post_process_typescript_sdk() 関数を追加し、生成後にバージョンを 0.1.0 に反映
  • package.json の version と license を自動設定

Step 2: LICENSE の配置

作成ファイル: sdk/typescript/LICENSE

  • MIT License を配置(プロジェクト全体のライセンス方針に合わせる)

Step 3: SDK 専用 README の作成

作成ファイル: sdk/typescript/README.md

  • 概要、インストール方法、認証設定、使用例、エラーコードの扱いを記載
  • エラーコードカタログ.md へのリンクを追加

Step 4: examples ディレクトリの作成

作成ファイル: sdk/typescript/examples/basic_usage.ts

  • Projects 一覧取得の基本的な使用例を実装

Step 5: tests ディレクトリの作成

作成ファイル:

  • sdk/typescript/tests/test_imports.test.ts - インポート確認テスト
  • sdk/typescript/tests/test_projects_e2e.test.ts - E2E テスト(環境変数チェック付き)
  • sdk/typescript/tests/test_client_e2e.test.ts - NexusCoreClient の E2E テスト(2025年12月10日追加)
  • sdk/typescript/tests/utils/apikey_helper.ts - E2E テスト用 API Key ヘルパー(2025年12月10日追加)

Step 7: NexusCoreClient の実装(2025年12月10日追加)

作成ファイル:

  • sdk/typescript/client.ts - 商品レベルの SDK クライアント(NexusCoreClient クラス)
  • sdk/typescript/errors.ts - エラーハンドリング(NexusCoreApiError クラス)
  • sdk/typescript/index.ts - エントリーポイントの更新(NexusCoreClientNexusCoreApiError をエクスポート)

機能:

  • API Key 認証を内部で処理
  • FastAPI の detail 形式に対応したエラーハンドリング
  • ネットワークエラーの適切な処理(ECONNREFUSED など)
  • 型安全な API メソッド(Projects, Runs, Execute, Health)

Step 6: Makefile の更新

変更ファイル: Makefile

  • sdk-ts-build: TypeScript SDK のビルドターゲットを追加
  • sdk-ts-test: TypeScript SDK のテストターゲットを追加
  • sdk-ts-publish-test: Test npm Registry への publish ターゲットを追加

変更ファイル一覧

新規作成ファイル

  • sdk/typescript/LICENSE - MIT License
  • sdk/typescript/README.md - TypeScript SDK 専用 README
  • sdk/typescript/examples/basic_usage.ts - 基本的な使用例
  • sdk/typescript/tests/test_imports.test.ts - インポート確認テスト
  • sdk/typescript/tests/test_projects_e2e.test.ts - E2E テスト
  • sdk/typescript/tests/test_client_e2e.test.ts - NexusCoreClient の E2E テスト(2025年12月10日追加)
  • sdk/typescript/tests/utils/apikey_helper.ts - E2E テスト用 API Key ヘルパー(2025年12月10日追加)
  • sdk/typescript/client.ts - 商品レベルの SDK クライアント(2025年12月10日追加)
  • sdk/typescript/errors.ts - エラーハンドリング(2025年12月10日追加)
  • docs/api/CR-FASTAPI-019_完了報告.md - 完了レポート(本ファイル)

変更ファイル

  • tools/generate_sdk.py - TypeScript SDK の後処理(バージョン 0.1.0 反映)を追加
  • Makefile - sdk-ts-build、sdk-ts-test、sdk-ts-publish-test ターゲットを追加
  • sdk/typescript/index.ts - NexusCoreClientNexusCoreApiError をエクスポート(2025年12月10日更新)
  • sdk/typescript/package.json - maintypesdist/index.jsdist/index.d.ts に更新(2025年12月10日更新)
  • sdk/typescript/tsconfig.json - rootDir. に設定、src/ ディレクトリを除外(2025年12月10日更新)
  • sdk/typescript/jest.config.js - カバレッジ設定を更新(2025年12月10日更新)

動作確認結果

テスト実行

TypeScript SDK テスト:

cd sdk/typescript
npm install
npm test

結果(2025年12月10日確認): ✅ すべてのテストが成功

  • test_imports.test.ts: 10 passed(インポート確認テスト)
  • test_client_e2e.test.ts: 3 passed(NexusCoreClient の E2E テスト)
    • プロジェクト一覧取得
    • 無効な API Key で 401 エラー
    • 存在しないプロジェクト ID で 404 エラー
  • test_projects_e2e.test.ts: 1 passed(Projects API の E2E テスト)
  • 合計: 14 passed, 3 test suites

既存 API テスト:

cd ../..
pytest tests/api -v -k "not e2e"

結果: ✅ 既存 API テストに悪影響なし

ビルド確認

make sdk-ts-build

結果(2025年12月10日確認): ✅ TypeScript SDK のビルドが成功

cd sdk/typescript
npm run build
  • TypeScript コンパイルエラーなし
  • dist/ ディレクトリに正常に出力

設計上の改善点

  • バージョン管理: Semantic Versioning に基づく v0.1.0 として明確化
  • 自動化: generate_sdk.py の後処理でバージョンを自動反映
  • E2E テスト: 環境変数チェックにより、CI 環境でも安全に実行可能
  • 商品レベルの SDK クライアント: NexusCoreClient クラスにより、API Key 認証を内部で処理し、型安全な API メソッドを提供(2025年12月10日追加)
  • エラーハンドリング: FastAPI の detail 形式に対応し、ネットワークエラーも適切に処理(2025年12月10日追加)
  • 型安全性: TypeScript の strict モードを有効化し、型安全性を確保(2025年12月10日追加)

既知の制約・注意事項

  • SDK コード本体は OpenAPI Generator によって自動生成されるため、手書き修正は禁止
  • E2E テストは FASTAPI_BASE_URL と NEXUSCORE_API_KEY 環境変数が必要
  • 環境変数が設定されていない場合はテストをスキップする設計
  • Test npm Registry への publish には NPM_TOKEN 環境変数の設定が必要

次のステップ

  • 実際の SDK 生成: make sdk-ts を実行して TypeScript SDK を生成(完了)
  • テストの有効化: 生成された SDK の構造に合わせてテストコードを調整(完了)
  • 商品レベルの SDK クライアント: NexusCoreClient を実装し、エラーハンドリングを改善(完了)
  • 公式 npm Registry 公開: Test Registry での検証後、公式 npm Registry への公開を検討

追加実装内容(2025年12月10日)

NexusCoreClient の実装

  • API Key 認証を内部で処理する商品レベルの SDK クライアント
  • 型安全な API メソッド(Projects, Runs, Execute, Health)
  • FastAPI の detail 形式に対応したエラーハンドリング
  • ネットワークエラーの適切な処理(ECONNREFUSED など)

エラーハンドリングの改善

  • NexusCoreApiError クラスによる統一されたエラー処理
  • FastAPI の { detail: { error: { code, message } } } 形式に対応
  • ネットワークエラー(status: 0)の適切な処理

テストの追加

  • test_client_e2e.test.ts: NexusCoreClient の E2E テスト(3 passed)
  • ネットワークエラーの検出とスキップ機能
  • 無効な API Key で 401 エラーが正しく検出されることを確認

関連ドキュメント


This site uses Just the Docs, a documentation theme for Jekyll.