<aside>

</aside>

システム全体像

構成案

シーケンス図

sequenceDiagram
    participant User
    participant Slack
    participant RailsAPI
    participant DB
    participant Next.js

    User ->> Slack: /study_start:コマンド送信
    Slack ->> RailsAPI: コマンドをPOST
    RailsAPI ->> DB: 開始した時間を保存
    RailsAPI -->> Slack: 「@〇〇さんが開始しました」メッセージ返信

    User ->> Slack: /study_end:コマンド送信
    Slack ->> RailsAPI: コマンドをPOST
    RailsAPI ->> DB: 終了した時間を保存
    RailsAPI -->> Slack: 「@〇〇さんが終了しました!所要時間: XX分YY秒」返信

    User ->> Slack: /study_report_期間:期間指定コマンド送信
    Slack ->> RailsAPI: コマンドをPOST
    RailsAPI ->> DB: 指定期間のレコード取得
    DB -->> RailsAPI: レコードデータ返却
    RailsAPI -->> Slack: 「合計研究時間: XX時間YY分」返信
    
    User ->> Next.js: 時間指定リクエスト
    Next.js -->> RailsAPI: APIリクエスト
    RailsAPI ->> DB: リクエストで指定されたレコードを取得
    DB -->> RailsAPI: レコードデータを返却
    RailsAPI ->> Next.js: 整形したデータを返却
    Next.js -->> User:フロントに表示
    

		

ER図

erDiagram
 users ||--o{study_records : has_many
 users {
	 int id PK
	 string name
	 string slack_id
	 datetime created_at
	 datetime updated_at
 }
 
 study_records {
 int id PK
 int user_id
 datetime start_time
 datetime end_time
 datetime created_at
 datetime updated_at
 }

image.png

image.png