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

Manaba 上で消えた課題を削除する #80

Open
HosokawaR opened this issue Oct 14, 2023 · 0 comments
Open

Manaba 上で消えた課題を削除する #80

HosokawaR opened this issue Oct 14, 2023 · 0 comments

Comments

@HosokawaR
Copy link
Member

HosokawaR commented Oct 14, 2023

背景

#78 の対策の一環。

本拡張機能では Manaba の課題と各タスク管理ツール上のタスクとの紐づけを chrome.storage.sync で持っている。これは manaba 上で課題の状態が変化したとき、連携して各タスク管理ツールのタスクの状態も変更するためである。

しかし現状の処理だと manaba 上で課題そのものが消えた場合に対応ができない。
現状は manaba 上の各課題の URL を保存し、その URL をスクレイピングすることにより課題の状態を追跡している。このとき例えば「秋学期になり課題ページそのものが消えた」となると、ページにアクセスできなくなり、状態を追跡することができず、タスク管理ツール上には永遠に課題が残ることになる。

そのため Manaba 上で消えた課題を削除するための仕組みが必要になる。
ただし普通に課題にアクセスできないだけでは、ただの通信不良か課題が削除されたかの判定ができないので工夫が必要。

  • 課題が消えたことを自動的に判定する場合
    消えた課題などは「ページが削除されているか、非公開になっている可能性があります。また、リンク元の記述に誤りがあるのかもしれません。」というページになることがよく観測される。
    また course そのものが違う場合は「このページを開く権限がありません。」と表示される。
    この 2 つを自動で判定して、削除できないか。

    • 懸念としては教員の操作ミスによって一時的に非公開になってしまった可能性や、そもそも非公開になった = 課題を消して良いという条件にはならない可能性があることである。
      • 特にコース終了後に課題の遅延提出をするなどのケースを考えている
      • とはいえ現状も〆切 2 週間後を過ぎた課題は自動で紐づけが削除されるし、それでいいのかも
  • 人力で解決する場合
    発生頻度が少ないのであれば自分で紐づけを解除するとかでも十分かもしれない

設計

課題が消えたことを自動的に判定する

の方針にする。

非公開になった課題は各タスク管理ツール上でも削除されて支障がないとする。
仮に教員のミスで非公開になってしまったとしても、最悪「同期」をすれば解決できるので)

課題が削除された判定は status code が 404 かで判定する。
調べたところページ本文中に「ページが削除されているか、非公開になっている可能性があります。また、リンク元の記述に誤りがあるのかもしれません。」と表示される場合は status code が 404 になることがわかったため。この文章で判定してもいいが、文章で判定するほうが manaba の仕様変更に追従できなさそうなので、status code で判定する。

なお権限がない場合でも 404 を返すサービスが多々あるが、manaba の場合は 403 を返してくれるので 「このページを開く権限がありません。」の判別も可能。

具体的には ManabaTodoStatusnotFound を追加し

export type ManabaTodoStatus = 'todo' | 'done' | 'overdue'

upsert 時に relation から削除する。

async upsert(todo: ManabaTodo) {

このとき各タスク管理ツール上に保持された課題の扱いには以下の選択肢があるが

  1. タスクツールから削除する
  2. タスクツールの課題のステータスを「完了」にする
  3. タスクツールの課題のステータスをなにか特別なものにする

1 はいきなり消えるのは混乱のもとなのでなし
2 も「課題が消えたのに完了」なのは混乱の元だが、大抵のタスク管理ツールには「未完」「完了」の 2 値ぐらいしかないので、そうするしかないか?期限切れあつかいでもいいのかもしれない。
3 ができればベストだが、各サービスごとに事情がことなる

  1. Trello の看板ボードならそれ専用の欄にすれば自然にできそう。
  2. GitHub Projects の場合も status 欄などをこちらで用意できればできるが…少し大変?楽をするなら課題名の前に適当に「【消失】」みたいに Prefix をつけるか…?
  3. Google Task の場合はそのようなステータス欄がなさそうなので GitHub Projects みたいになりそう

あるいは relation に課題の期限も記録するようにして、manaba から最新の情報が得られなくなれば、その期限を暫定として、例の「2 週間以上前の課題は削除」の対象にしてもいいかもしれない。
ただし別の観点として「この課題は manaba には掲載されておらず、連携もされていない」ということを明示的に表現しないと混乱が生じないか?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant