master
みてるぞ 1 day ago
parent
commit
6550d06998
1 changed files with 0 additions and 287 deletions
  1. +0
    -287
      %E8%AA%B2%E9%A1%8C%E6%95%B4%E7%90%86.md

+ 0
- 287
%E8%AA%B2%E9%A1%8C%E6%95%B4%E7%90%86.md

@@ -219,22 +219,6 @@ count に q.size を使うと、includes 済み relation のロード状況次
- [ ] 履歴に URL/thumbnail 変更を残す
- [ ] UI の項目と API を一致させる
#
### 31. [P2] NicoTagsController の cursor / id エラーを 400/404 にする
**種別**: bug
**対象**
- `backend/app/controllers/nico_tags_controller.rb`
**背景 / 問題**
cursor に不正 ISO8601 が来た場合や存在しない id の更新で 500 系になりうる。外部入力なので明示的に 400/404 を返すべき。
**完了条件**
- [ ] 不正 cursor は 400
- [ ] 存在しない nico tag は 404
- [ ] エラー JSON を統一する
### 32. [P1] Material 更新時に file 未指定で既存ファイルを purge しない
@@ -265,37 +249,7 @@ URL のみ素材でも material.file.attach(file) が呼ばれる。nil attach
- [ ] file.present? の時だけ attach する
- [ ] URL-only create の request spec を追加する
### 34. [P1] Material の tag_id 一意制約を discarded_at と整合させる
**種別**: data integrity
**対象**
- `backend/app/models/material.rb`
- `backend/db/migrate/20260329034700_create_materials.rb`
**背景 / 問題**
Material は MyDiscard を使うが tag_id uniqueness が破棄済みも含んでしまう。削除後に同じタグの素材を作れない。
**完了条件**
- [ ] 有効レコードだけ一意にする生成列/部分相当 index を作る
- [ ] model validation も kept に合わせる
- [ ] discard 後の再作成 spec を追加する
### 35. [P1] Theatre の opens_at / closes_at を API で強制する
**種別**: bug / moderation
**対象**
- `backend/app/controllers/theatres_controller.rb`
- `backend/app/controllers/theatre_comments_controller.rb`
**背景 / 問題**
show/watching/next_post/comments が会場の開催期間をほぼ見ていない。閉場後も入室・コメント・進行できると運用上混乱する。
**完了条件**
- [ ] 未開場・閉場後の挙動を決める
- [ ] watching/comment/next_post で期間チェックする
- [ ] 閉場後は閲覧だけ可など仕様化する
### 36. [P1] Theatre コメントに件数上限・長さ上限・削除を入れる
@@ -315,127 +269,6 @@ show/watching/next_post/comments が会場の開催期間をほぼ見ていな
- [ ] コメント削除/非表示 API を追加する
- [ ] 削除履歴を残す
### 37. [P2] Theatre next_post の候補抽出を URL 部分一致からサイト別判定へ変える
**種別**: bug / quality
**対象**
- `backend/app/controllers/theatres_controller.rb`
- `frontend/src/components/PostEmbed.tsx`
**背景 / 問題**
next_post は nicovideo.jp / youtube.com を含む URL だけで候補にしている。watch URL 以外や youtu.be などの漏れ/誤爆が出る。
**完了条件**
- [ ] 投稿 URL から embed 対応種別を判定する service を作る
- [ ] next_post は embedable な投稿だけ選ぶ
- [ ] youtu.be 等にも対応する
### 38. [P2] Theatre のホストブラウザ依存進行をサーバ主導へ寄せる
**種別**: architecture / feature
**対象**
- `backend/app/controllers/theatres_controller.rb`
- `frontend/src/pages/theatres/TheatreDetailPage.tsx`
**背景 / 問題**
現状の自動進行はホスト側ブラウザのタイマーに依存する。ホスト端末がスリープすると会場が止まる。実験機能としてはよいが、一般公開で推すなら弱い。
**完了条件**
- [ ] サーバ側で現在投稿の終了判定を持つか決める
- [ ] 定期 job / polling / manual next の責務を整理する
- [ ] ホスト不在時の移譲ルールを明記する
### 39. [P2] Theatre 一覧・作成・編集 API/UI を追加する
**種別**: feature
**対象**
- `backend/config/routes.rb`
- `backend/app/controllers/theatres_controller.rb`
- `frontend/src/pages/theatres/*`
- `frontend/src/components/TopNav.tsx`
**背景 / 問題**
現在のトップメニューは /theatres/1 固定。複数会場や運用にはならない。
**完了条件**
- [ ] GET /theatres を作る
- [ ] POST/PATCH /theatres を作る
- [ ] 会場一覧・作成・編集画面を作る
- [ ] 権限と公開期間を設定できる
### 40. [P2] 存在しない /users/:id 導線を実装するかリンクを消す
**種別**: bug / UX
**対象**
- `frontend/src/pages/wiki/WikiHistoryPage.tsx`
- `frontend/src/pages/posts/PostHistoryPage.tsx`
- `frontend/src/pages/tags/TagHistoryPage.tsx`
- `frontend/src/components/TagDetailSidebar.tsx`
- `backend/config/routes.rb`
**背景 / 問題**
複数画面が /users/:id へリンクしているが、対応 route/page/API がない。クリックした瞬間に迷子になる。
**完了条件**
- [ ] ユーザ詳細 API/UI を実装する、またはリンクをやめる
- [ ] bot/null user の表示を統一する
- [ ] 既存 #169/#170 と統合する
### 41. [P1] ユーザ一覧・詳細・ロール変更の管理 UI を作る
**種別**: feature / admin
**対象**
- `backend/app/controllers/users_controller.rb`
- `frontend/src/pages/users/*`
**背景 / 問題**
member/admin 昇格、BAN、編集履歴確認の導線がない。一般公開前の運用装備として必須。
**完了条件**
- [ ] admin 向け users index/show を作る
- [ ] role 変更 API を作る
- [ ] BAN/解除 API を作る
- [ ] 操作履歴を残す
### 42. [P2] settings テーブルを実利用する API/UI を作る
**種別**: feature
**対象**
- `backend/db/migrate/20250227212500_create_settings.rb`
- `backend/app/models/user.rb`
- `frontend/src/pages/users/SettingPage.tsx`
**背景 / 問題**
settings テーブルはあるが、表示名/引継ぎコード以外のユーザ設定に接続されていない。
**完了条件**
- [ ] GET/PUT /settings または /users/settings を作る
- [ ] テーマ、カテゴリ色、ミュートタグ、非表示タグ、埋め込み自動再生を段階的に実装する
- [ ] 設定 key の型とバリデーションを決める
### 43. [P1] タグ別名の作成・解除・履歴表示 UI を専用化する
**種別**: feature
**対象**
- `frontend/src/pages/tags/TagDetailPage.tsx`
- `backend/app/controllers/tags_controller.rb`
- `backend/app/models/tag_name.rb`
**背景 / 問題**
現状は TagDetailPage のテキスト欄に空白区切りで aliases を突っ込む形。誤操作の破壊力が大きい。
**完了条件**
- [ ] 別名追加/解除を個別操作にする
- [ ] 別名が既存タグ/Wiki を持つ場合のエラーを丁寧に出す
- [ ] 変更履歴を見える化する
- [ ] 既存 #165 と統合する
### 44. [P2] タグ統合 UI/API を作る
@@ -455,127 +288,7 @@ Tag.merge_tags! は存在するが、運用 UI/API がない。タグ整理基
- [ ] dry-run と実行を分ける
- [ ] 統合履歴を残す
### 45. [P2] タグ上位関係の管理画面を作る
**種別**: feature
**対象**
- `backend/app/controllers/tags_controller.rb`
- `frontend/src/pages/tags/*`
**背景 / 問題**
上位タグ API はあるが管理 UI が薄い。タグ体系の骨格なのに手操作が危険。
**完了条件**
- [ ] 親候補補完つき UI を作る
- [ ] 循環検出結果を表示する
- [ ] 追加/削除を個別履歴として残す
### 46. [P2] タグ詳細ページの責務を決める
**種別**: design
**対象**
- `frontend/src/pages/tags/TagDetailPage.tsx`
- `frontend/src/components/TagDetailSidebar.tsx`
- `frontend/src/pages/wiki/WikiDetailPage.tsx`
**背景 / 問題**
タグ詳細を管理中心にするのか、Wiki を詳細ページにするのかが曖昧。両方を育てると導線が割れる。
**完了条件**
- [ ] タグ詳細と Wiki の責務表を作る
- [ ] 通常ユーザ導線と管理者導線を分ける
- [ ] TagLink の遷移先を統一する
### 47. [P2] 投稿から別投稿へのタグ・インポート機能を作る
**種別**: feature
**対象**
- `frontend/src/components/PostEditForm.tsx`
- `backend/app/controllers/posts_controller.rb`
**背景 / 問題**
類似投稿やシリーズ投稿では、既存投稿のタグをコピーして微修正したい。既存 #292 の実装候補。
**完了条件**
- [ ] 投稿 ID/URL からタグを読み込める
- [ ] nico タグと手入力タグの扱いを分ける
- [ ] 差分確認してから反映する
### 48. [P2] 投稿編集時のタグ推薦を実装する
**種別**: feature / ML-lite
**対象**
- `backend/app/models/post_similarity.rb`
- `backend/app/models/tag_similarity.rb`
- `frontend/src/components/PostEditForm.tsx`
**背景 / 問題**
post_similarities / tag_similarities があるなら、編集時に「付け忘れ候補」を出せる。既存 #168 と相性がよい。
**完了条件**
- [ ] 現在タグと類似投稿から候補タグを返す API を作る
- [ ] 候補理由を表示する
- [ ] ワンクリック追加できる
### 49. [P2] 類似度計算を差分更新できるようにする
**種別**: performance / ops
**対象**
- `backend/lib/tasks/post_similarity.rake`
- `backend/lib/tasks/tag_similarity.rake`
- `backend/app/models/post_similarity.rb`
- `backend/app/models/tag_similarity.rb`
**背景 / 問題**
類似度が全再計算前提だと、データ増加後にバッチが重くなる。タグ変更時の差分更新か、夜間全再計算の運用設計が必要。
**完了条件**
- [ ] 全再計算の所要時間を測る
- [ ] 差分更新対象を定義する
- [ ] 失敗時の再実行手順を README に書く
### 50. [P1] post_versions / tag_versions / wiki_versions の復元専用 API を作る
**種別**: feature / audit
**対象**
- `backend/app/controllers/post_versions_controller.rb`
- `backend/app/controllers/tag_versions_controller.rb`
- `backend/app/controllers/wiki_pages_controller.rb`
- `frontend/src/pages/posts/PostHistoryPage.tsx`
- `frontend/src/pages/tags/TagHistoryPage.tsx`
**背景 / 問題**
現状の復元は通常 update に過去値を投げる形。復元操作としての意味が履歴上で曖昧になる。
**完了条件**
- [ ] POST /post_versions/:id/restore 等を作る
- [ ] event_type restore を記録する
- [ ] 復元者と復元元 version_no を保存する
- [ ] UI に「この版へ戻す」を出す
### 51. [P1] 投稿・タグ・Wiki の削除/復元導線を整理する
**種別**: moderation / feature
**対象**
- `backend/app/models/my_discard.rb`
- `backend/app/controllers/*`
- `frontend/src/pages/*`
**背景 / 問題**
Discard は複数モデルに入っているが、公開 UI/API と復元導線が揃っていない。荒らし対応には削除より復元可能な非表示が重要。
**完了条件**
- [ ] 対象モデルごとの discard/restore API を決める
- [ ] 管理画面から復元できる
- [ ] 削除履歴が残る
- [ ] 一般ユーザには非表示になる
### 52. [P1] 御意見番フォームを実装する


Loading…
Cancel
Save