Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

タグ機能 #881

Open
mazrean opened this issue May 8, 2022 · 1 comment
Open

タグ機能 #881

mazrean opened this issue May 8, 2022 · 1 comment
Labels
enhancement New feature or request ready
Milestone

Comments

@mazrean
Copy link
Member

mazrean commented May 8, 2022

v2のmdより。

  • 管理者はロックできる
  • 作成・削除は誰でもできる
  • 特定のタグがついたアンケートはトップページに表示

目的はアンケート数が増えたことで低下しつつある、過去のアンケートの検索性能向上。

@mazrean mazrean added enhancement New feature or request v2 labels May 8, 2022
@FujishigeTemma FujishigeTemma added this to the v2.0.0 milestone May 8, 2022
@MotoyaAsahina
Copy link
Member

MotoyaAsahina commented May 11, 2022

仕様

  • アンケートにタグが付けられる
  • 使用目的
    • 検索時のフィルターに使用する
  • タグの付加とデタッチは誰でも可能
  • タグの追加は誰でも可能
    • 性善説運用+定期的に整理する
  • タグの削除はアプリケーション管理者のみ可能
  • 半角英数、日本語(絵文字など特殊文字を除く)
    • DBにtoLowerCaseしたカラムを持ち、検索時に利用する
  • 一括付け外し

メモ

  • 誰でもアンケートの情報ページで追加、削除できる
    • 古いアンケートにもタグを付けられる
  • タグ追加のエンドポイント
    • 誰でもタグを追加できるようにするのでタグ追加のエンドポイントは必要
      • リクエストはタグをIDで指定するか、タグの文字列をそのまま渡すか(→タグの管理)
      • IDを指定する場合は、新しいタグを作成するときに「作成してIDが返される→そのIDを追加」という2段階が必要(クライアントは2つのAPIを叩くことはあるか→アンケート作成時にアンケート作成とそれぞれの質問作成でAPIを叩いているからある)
      • 名前を直接指定する場合は、tagテーブルを持つ場合は存在しなければ追加ができる→tagテーブルでIDを持つ意味がなくなる
      • リクエストは文字列で行なって、tag_mapsテーブルへは外部キーでIDを保存する?
      • リクエストのJSONでIDを指定するか文字列を指定するか検討
  • 管理者は作成画面、編集画面でタグの付加とロックができる
    • tag_mapsテーブルにlocked(bool)列
  • アンケートが持っているタグの管理
    • tag_mapsテーブル
      • ID, questionnaireID, tagID, locked
  • タグ(種類)の管理
    • tagsテーブルを作るかどうか
      • タグをIDとnameで管理してIDを外部キーにする
      • タグがname以外の要素を持つなら必須
      • (GitHubみたいなタグの色→いらないと思う)
    • tagsテーブルを作らないとどうか
      • tag_mapsテーブルでアンケートIDに対してタグの文字列をそのまま指定
      • デメリット:タグ一覧がテーブルとして存在しない
  • タグの種類
    • ブログのように誰でも増やせるようにするか
      • デメリット:タグの数が肥大化
      • 似たようなタグが作成される
      • 新しいタグを追加した時のリクエストについて検討
    • knoQのように追加できないようにするか
      • デメリット:自由度が減る
      • 最初に用意するタグを考える
  • タグは順序を持たない
    • 名前順とかで並べる
  • タグでアンケートの絞り込み
  • タグに使える文字の検討
  • 特定のタグがついたアンケートはトップページに表示(?)

API

POST /questionnaires/{questionnaireID}/tags

{
  "name (or ID)": "SysAd",
  "locked": true
}
  • ↑IDの場合、新しいタグ追加はタグ登録のAPIを叩いて、返ってきたIDでこれを叩く2段階必要?
  • 既についているがロックされていないタグをロックするには"locked": trueでPOST
    • 管理者でないユーザーがアンケートの情報ページでタグを追加する場合は"locked": falseをつける必要がある
    • ロックはエンドポイント分けた方が良い?

DELETE /questionnaires/{questionnaireID}/tags/{tagID} or tagName

  • (or DELETE /tag-maps/{tagMapID})
  • ロックされているかどうかを確認

GET /questionnaires/{questionnaireID}

Tag{ID, name, locked} or TagMap{ID, tagID, name, locked}リストを返すように

@FujishigeTemma FujishigeTemma added help wanted Extra attention is needed ready and removed help wanted Extra attention is needed labels May 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request ready
Projects
None yet
Development

No branches or pull requests

3 participants