開発・テスト
セットアップ
bash
go mod downloadローカル実行
bash
go run ./cmd/serverDISCORD_PUBLIC_KEY を未設定のままにすると署名検証がスキップされるため、実際のDiscordからのWebhookなしに curl で POST / を叩いて挙動を確認できます。ただし Google Sheets への書き込みが発生する経路(打刻系のハンドラ)を試す場合は、有効な SPREADSHEET_ID とサービスアカウント認証情報が必要です。
テスト
bash
go test ./...現状、以下にユニット・統合テストがあります。
internal/httpserver— Echoルーティングを通したPOST /の実挙動(ping応答など)internal/keymanager— 時刻・日付パース、Sheetsのスキャンロジック(貸出状況判定・最新イベント検索)の純粋関数部分、.env書き戻し、アラートストアのCRUD
Sheets APIやDiscord APIへの実際のネットワーク呼び出しはテスト対象にしていません。ネットワーク呼び出しの手前にあるロジック(例: findBorrowStatusInLogRows や findMostRecentLogRow)は、APIレスポンスの形([][]any)をそのまま受け取る純粋関数として切り出されており、モックなしでテストできます。
Lint / フォーマット
bash
gofmt -l .
go vet ./...ドキュメントサイト(VitePress)の開発
bash
npm install
npm run docs:devhttp://localhost:5173 でホットリロード付きプレビューが開きます。ページは docs/ 配下の Markdown ファイルです。ナビゲーション・サイドバーの構成は docs/.vitepress/config.ts で管理しています。
新しいページを追加したら、docs/.vitepress/config.ts の sidebar にもリンクを追加してください。