初期機能検討

#1
by terapyon - opened

機能一覧

Store

Search

  • 条件をフィルタできる(レポジトリ、日付の範囲)・・(2)
  • 文字列で検索

モデルなど

  • Embedding: "intfloat/multilingual-e5-large"
  • LLM: 検索のみなので利用なし。使うとしたらOpen AI GPT-3.5-turbo
  • ベクトルDB: Qdrant Cloud

詳細部

メタデータ (1)

  • id
  • title
  • created_at
  • user
  • url
  • labels_
  • type_: issue / comment
  • comment_id: None / str

検索フィルタ (2)

  • レポジトリ: select
  • 日付範囲: 2015年1月から(現在までってできるかな?)
  • commentを含むか?

できれば作りたい

  • 複数レポジトリへの対応
  • レポジトリ選択は静的なリスト(レポジトリを増やすたびにappのデプロイが必要)

未実装・将来検討

  • ユーザ名のリストを取得して検索フィルタに追加。別DBを準備?
  • ラベルで検索フィルタ。別DBを準備?

わいわい。

$ gh-cli-issues --verbose --disable-cache --repository cocoa-mhlw/cocoa
$ jq . cocoa-issues.json | more
{
  "body": "現状はNotta.aiで書き起こしたそのまま。色々調整しないといけないとか、どこに置くかは後で考えるとして、ひとまず編集できる
ようにしておく。\r\n\r\n## Issue 番号 / Issue ID\r\n\r\n- #1168\r\n",
  "comments": 0,
  "comments_": [],
  "created_at": "2022-10-28 09:02:55+00:00",
  "html_url": "https://github.com/cocoa-mhlw/cocoa/pull/1197",
  "labels_": [
    "documentation"
  ],
  "number": 1197,
  "title": "COCOA公開Webミーティングスクリプト",
  "user.login": "keiji"
}
{
  "body": "## その機能リクエストは何らかの問題に関連しますか / Is your feature request related to a problem?\r\n\r\n報道にあると
り、COCOAの総括については行政として進めていくのだけど、オープンソースコミュニティを担当している自分としても、きちんと総括したいで
すね。\r\n\r\n - [x] コード品質\r\n - [x] 開発状況の可視化\r\n - [x] IssueやDiscussionの取り回し\r\n - [x] Pull Request取り込みの
ハンドリング\r\n - [x] HER-SYS\r\n - [x] そもそも「接触確認アプリ」というジャンルで技術的な質問に絞るのは難しいのではないか\r\n -
 [x] ベータ版の運用\r\n -  ~~ロードマップの提示~~ これは.......",
  "comments": 14,
  "comments_": [
    {
      "body": "上から順とか言うといつまで経っても書き終わらなさそうなので、書けるものから書いていこう。\r\n\r\n## IssueやDiscussi
onの取り回し\r\n\r\n対応する人が居る(そう、ぼくです)と....",
      "created_at": "2022-09-15 10:48:03+00:00",
      "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1247928149",
      "id": 1247928149,
      "user.login": "keiji"
    },
    {
      "body": "## 開発状況の可視化\r\n\r\nこれは少しうまくいった部類に入ると思います。\r\n\r\n現在、COCOAの開発チーム(委託事業社
に所属する開発者)は、コードに関してすべてGitHub上で作業をしています。\r\n\r\nぼくが関与を始めた当初、委託事業者の人たちはInterna
lなリポジトリで開発を進めていました。GitHubはリリース時にコー...",
      "created_at": "2022-09-15 14:03:40+00:00",
      "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1248147723",
      "id": 1248147723,
      "user.login": "keiji"
    },
  ],
  "created_at": "2022-08-18 06:15:06+00:00",
  "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1113",
  "labels_": [
    "bug",
    "help wanted",
    "in progress",
    "welcome-contribution"
  ],
  "number": 1113,
  "title": "[Android] 接触情報が正常に表示されない場合がある",
  "user.login": "keiji"
}
....

上記のようなJSON担っている。

JSONの構造を再確認

{
  "body": "",
  "comments": 14,
  "created_at": "2022-08-18 06:15:06+00:00",
  "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1113",
  "labels_": [],
  "number": 1113,
  "title": "[Android] 接触情報が正常に表示されない場合がある",
  "user.login": "keiji"
  "comments_": [
    {
      "body": "",
      "created_at": "2022-09-15 10:48:03+00:00",
      "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1247928149",
      "id": 1247928149,
      "user.login": "keiji"
    },
    {
      "body": "",
      "created_at": "2022-09-15 14:03:40+00:00",
      "html_url": "https://github.com/cocoa-mhlw/cocoa/issues/1144#issuecomment-1248147723",
      "id": 1248147723,
      "user.login": "keiji"
    },
  ],
}

metadataの構造

欲しい物

  • repo_name: "cocoa": str
  • id: number / id: int
  • title: title / 親(issue)title: str
  • created_at: created_at: datetime?? or int ??
  • user: "user.login": str
  • url: "html_url": str
  • labels_: labels_: list ?? <<< ここは再検討必要リストで持っていいのか?
  • type_: issue / comment: str
metadata = {
    "repo_name": "cocoa",
    "id": 0,
    "title": "",
    "created_at": ~datetime()~ int,
    "user": "",
    "url": "",
    "labels_": [],
    "type_": "",
}

データ型の確認

https://qdrant.tech/documentation/concepts/payload/#payload-types

  • Integer
  • Keyword (文字列または文字列のリスト)

datetime型はない模様
Unix timeを使うしかないか。
https://github.com/orgs/qdrant/discussions/43#discussioncomment-911581

GradioにDate pickerがまだない??
https://github.com/gradio-app/gradio/issues/2029

Gradioをやめて、streamlitに移行しようかな?
学習コストがかかるけど、そっちも調べてみよう。

時間の計算

>>> from dateutil.parser import parse
>>> dt = parse('2022-10-28 09:02:55+00:00')
>>> dt
datetime.datetime(2022, 10, 28, 9, 2, 55, tzinfo=tzutc())
>>> dt_int = int(dt.timestamp())
>>> dt_int
1666947775
>>> datetime.fromtimestamp(dt_int)
datetime.datetime(2022, 10, 28, 18, 2, 55)

日本時間になってしまうのは問題ないのか?別途検討する。

タイムゾーンを保持しているなら別にあとでなんとでもなる。

UTCのUnixタイムをintにしてDB保存しているが、クエリの時に日本時間でクエリすると、9時間の差が出ると思うので考慮が必要だと思った。

デモとしては完成したのでタスクは閉じる。 #5 で継続開発する。

terapyon changed discussion status to closed

Sign up or log in to comment