Skip to content

代表リポジトリを本人が選べるピン留め機能を追加(pinnedReposGo)#176

Merged
kojira merged 1 commit into
mainfrom
claude/ranking-feature-bug-a8nq2k
Jul 14, 2026
Merged

代表リポジトリを本人が選べるピン留め機能を追加(pinnedReposGo)#176
kojira merged 1 commit into
mainfrom
claude/ranking-feature-bug-a8nq2k

Conversation

@kojira

@kojira kojira commented Jul 14, 2026

Copy link
Copy Markdown
Member

概要

公開プロフィールの代表リポジトリ(現在はスター上位4件の自動選出)を、本人が指定した最大6件に置き換えられるようにします(GitHub本家のピン留め相当)。未設定なら従来どおり自動選出。

変更内容

バックエンド

  • app/functions-go/pinned_repos.go 新規POST pinnedReposGo {github_id, repos:[...]}(Bearer必須)
    • 本人確認は既存より厳格: IDトークンUIDと auth_user_uid(registerGoがログイン毎に維持)の一致を必須。不一致・未設定は403で書き込みなし
    • 保存する各リポジトリを GET /repos/{screen_name}/{name} で検証(存在+owner一致)し、GitHubの実値(stars等)を保存 — クライアント申告値は使わない(スター数の詐称防止)
    • 名前形式チェック・重複除去・最大6件。空配列=ピン解除
  • github_stats.gopinned_repos があれば top_repos を本人順で置き換え、top_repos_source: "pinned"|"stars" を追加。6hキャッシュとは独立に毎回反映(公開ページはCDNの失効後、最大1時間で追従)

フロントエンド

  • RepoPicker.vue 新規 — 候補一覧はブラウザから直接GitHub公開APIで取得(CORS可・低頻度)。名前絞り込み+選択順の番号バッジ+上限6でチェック無効化+「おまかせ(スター上位)に戻す」
  • GithubStats.vueeditable prop(マイページのみ)。「📌 選ぶ」ボタン→ピッカー。保存成功は即時反映、ピン解除時はキャッシュバスター付き再取得。見出しは「📌 ピン留めリポジトリ」/「代表リポジトリ」を自動切替
  • dashboard/index.vueeditable + github-id を渡す

配信・デプロイ

  • dev/prod 両ワークフローに pinnedReposGo 追加(GitHub検証用にOAuth資格情報を注入)

検証

  • ユニット: 名前バリデーション(不正形式/7件超過/重複除去/空許可)
  • エミュレータ統合(モックGitHub): 保存(順序保持+実値検証)→githubStatsGo反映(source=pinned)→解除でstarsに復帰 / UID不一致403・auth_user_uid未設定403・存在しないリポ/owner不一致は書き込みなし
  • yarn generate 成功、ヘッドレスハーネスでピッカーUI(初期選択の番号・上限disable・絞り込み)確認

🤖 Generated with Claude Code

https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU


Generated by Claude Code

公開プロフィールの代表リポジトリ(スター上位の自動選出)を、
本人が指定した最大6件(選択順)に置き換えられるようにする。

- 保存: pinnedReposGo(POST)。IDトークンUIDとauth_user_uidの一致を
  必須にする厳格な本人確認(403)。各リポジトリはGitHub APIで
  存在+owner一致を検証し、実値(stars等)を保存(詐称防止)
- 表示: githubStatsGoがpinned_reposをtop_reposに反映し
  top_repos_source(pinned/stars)を返す。6hキャッシュとは独立
- UI: マイページのGithubStatsに「📌 選ぶ」→RepoPicker(候補は
  ブラウザからGitHub公開API取得、絞り込み+選択順番号+上限6、
  おまかせに戻すボタン)。保存成功は即時反映、公開ページは最大1時間
- テスト: バリデーション純関数+エミュレータ統合(保存/認可403/
  owner不一致/ピン反映/解除)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DwkB6Hj2JggoKcy7FoxNcU
@kojira kojira merged commit f83a7c2 into main Jul 14, 2026
3 checks passed
kojira pushed a commit that referenced this pull request Jul 14, 2026
kojira pushed a commit that referenced this pull request Jul 16, 2026
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

Successfully merging this pull request may close these issues.

2 participants