📝

会話記録機能の基本設計書

2024/01/17に公開

HAKUSHI設計書

HAKUSHIの説明

https://hakushi.biz/
というキャラクター駆動型モチベーション管理サービスを作っております。
基本設計書を作ってみたので、メモがてらzennに残しておこうと思います。

会話記録の基本設計

会話記録機能概要

現在のworkスペース機能において、キャラクターがjsにベタがされた定型文が表示されるだけだったが、それをL⚪︎NEの会話機能と同等にするために、会話が記録されるようにしたい。

ユーザーからの発言パターン

  • 再生ボタンをおした時に、「【タイトル】を始めます」という発言をする
  • えんぴつボタンをおした時に、「【本日作業したタイトルのカンマ区切り】をやりました」という発言をする

ユーザーが受け取るパターン

  • 登録しているキャラクターから、えんぴつボタンを押下時に、「ねぎらいの言葉」が保存される。
  • 初回時、登録されているメッセージが空だった場合、登録しているキャラクターの固定文章が登録される
    例: 「やっほー」「今日からよろしくね。」

労いの言葉について

労いの言葉は、現在1日に一回えんぴつボタン押下時に表示される日付に対応した言葉を流用する。

固定文章について

キャラクターごとに、コードベタ書きで管理する。

テーブル設計

WorkPlaceMessages

  • message_id
  • user_id
  • sender_user_id
  • message_content
  • create_at
  • update_at

API設計

現代段階では、削除機能、修正機能はつけない。
status_codeはHTTPレスポンスに準拠すること

WorkPlaceMessagesCreate

メッセージを作成するエンドポイント

  • Endpoint: /api/work-place-messages
  • Method: POST
  • Request:
    {
      "user_id": "ユーザーID",
      "sender_user_id": "送信者ユーザーID",
      "message_content": "メッセージ内容",
      "work_finish": bool,
    }
    
  • Response:
    {
      "status_code": 201,
      "message": {
          "message_id": "生成されたメッセージID",
          "user_id": "ユーザーID",
          "sender_user_id": "送信者ユーザーID",
          "message_content": "メッセージ内容",
          "create_at": "作成日時",
          "update_at": "更新日時"
      }
    }
    

WorkPlaceMessagesGet

メッセージを取得するエンドポイント

  • Endpoint: /api/work-place-messages
  • Method: GET
  • Request:
    {
      "user_id": "ユーザーID"
    }
    
  • Response:
    {
      "status_code": 200,
      "messages": [
        {
          "message_id": "メッセージID",
          "user_id": "ユーザーID",
          "sender_user_id": "送信者ユーザーID",
          "message_content": "メッセージ内容",
          "create_at": "作成日時",
          "update_at": "更新日時"
        },
        ...
      ]
    }
    

シナリオフロー

  1. ユーザーがアクセスした際に、Vueのcreateメソッドで/api/work-place-messagesのエンドポイントにGETリクエストします。

    • status_codeが200であれば、フロントエンドで描画を行います。
    • それ以外の場合は、エラーメッセージを表示し、ユーザーをHOMEページにリダイレクトします。
  2. ユーザーが再生ボタンを押すと、以下のアクションが発生します。

    • 「【現在選択しているタイトル】を始めます。」というメッセージ内容で、work_finishパラメータをfalseに設定して、/api/work-place-messagesのエンドポイントにPOSTリクエストします。
  3. ユーザーがえんぴつボタンを押すと、以下のアクションが発生します。

    • 「【本日作業したタイトルのカンマ区切り】をやりました」というメッセージ内容で、work_finishパラメータをtrueに設定して、/api/work-place-messagesのエンドポイントにPOSTリクエストします。
GitHubで編集を提案

Discussion