Skip to content

chore: main → env/dev (PR #129 の4修正を dev へ反映)#131

Merged
cursor[bot] merged 5 commits into
env/devfrom
main
Jul 1, 2026
Merged

chore: main → env/dev (PR #129 の4修正を dev へ反映)#131
cursor[bot] merged 5 commits into
env/devfrom
main

Conversation

@kojira

@kojira kojira commented Jul 1, 2026

Copy link
Copy Markdown
Member

概要

ブランチ運用 feature → main → env/dev → env/prod の中段(main→env/dev)です。PR #129main にマージされたので、その内容を env/dev に反映します。

含まれる変更(PR #129 の4修正)

  • fix(performance): IssuesEvent を payload.action で加点(常時未加点バグの修正、Go/Node両方)
  • fix(status): last_sanpai 未設定時のクラッシュ修正(未参拝表示、Go/Node両方)
  • fix(ci): スケジュールGo関数の Pub/Sub トピックを事前作成しデプロイ失敗を修正
  • feat(status): status_version による解析キャッシュのバージョン管理と自己修復(旧ロジックのキャッシュを非破壊で再計算)

いずれも env/dev の Firestore エミュレータ結合テスト / Node テスト / gofmt / go vet でローカル検証済み(詳細は PR #129 参照)。

マージは行いません。CI確認後、運用担当がマージしてください。マージ後、PR #130env/dev → env/prod)にこの内容が反映されます。

Open in Web Open in Cursor 

cursoragent and others added 5 commits July 1, 2026 14:21
GitHub Events APIのIssuesEvent payloadはオブジェクトで開閉種別はpayload.action
(opened/closed/...)に入る(公式ドキュメントAPI 2022-11-28および実データで確認)。
移植前は payload そのものを文字列 opened/closed と比較しており決して一致せず、
Issueのオープン(intelligence+3)/クローズ(defence+5)が一度も加点されていなかった。

Go版(internal/performance)とNode版(performance.js)の両方で payload.action を
参照するよう修正。Issue活動のあるユーザーは intelligence/defence/total(戦闘力・
ランキング)が本来値に増加する。キャッシュ済み status は次回の sanpai または
statusCacheBackfill で再計算されるまで旧値のまま(データ破壊なし)。

両実装のテストを修正後の正しい挙動に更新。docs/backend.md と performance/README に
経緯と影響を記載。

Co-authored-by: kojira <kojira@users.noreply.github.com>
status キャッシュはあるが last_sanpai(トップレベル)が無いユーザー(一度も参拝せず
プロフィールを2回以上表示した場合など)に対して、Node版は undefined.toDate() で
例外になっていた。この場合は status 未保存時のフル計算パスと同じく
「参拝していないようです」を返すよう Go版(formatLastSanpai)・Node版の両方を修正。

formatLastSanpai のユニットテストを追加。docs/backend.md を修正内容に更新。

Co-authored-by: kojira <kojira@users.noreply.github.com>
Cloud Functions(Gen2)の --trigger-topic はGen1と異なりPub/Subトピックを
自動作成しない。存在しないトピックを指定すると
`Validation failed for trigger ...: Resource not found` で即失敗するため、
rankingUpdateGo等のデプロイが失敗していた(env/dev CI run 28520938294)。

デプロイ前に4トピック(ranking-update-go/ranking-cache-go/
status-cache-backfill-go/scheduled-ogp-delete-go)を冪等に作成するステップを追加。
誤った前提を書いていたコメントも訂正。

Co-authored-by: kojira <kojira@users.noreply.github.com>
IssuesEvent加点バグ修正により、修正前に保存されたstatusキャッシュは誤った
戦闘力・ランキングのまま残る。キャッシュ全削除などの破壊的操作なしにこれを
正しい値へ収束させるため、解析ロジックにバージョン印を導入する(案A)。

- performance: StatusLogicVersion(Go)/STATUS_LOGIC_VERSION(Node)=1 を追加。
  計算式を変えたら必ずインクリメントする。
- status書き込み経路(status/sanpai/statusCacheBackfill、NodeのuserOGP)で
  トップレベル status_version に現行バージョンを刻む(statusオブジェクト自体には
  含めずAPIレスポンス形状は不変)。
- キャッシュ再利用判定を共通ヘルパ(Go: statusCacheIsCurrent /
  Node: status_cache_is_current)に集約し、status有 かつ
  status_version>=現行 のときのみ再利用。それ以外はフル再計算し現行版を書き戻す。
- sanpaiの増分計算は基準が現行バージョンのときだけ行う。旧バージョンを基準に
  増分すると過去分の誤りを現行版として固定化するため、その場合は全件再計算。
- statusCacheBackfillは未計算に加え旧バージョンのstatusも再計算対象にする。
- テスト追加: statusCacheIsCurrent単体テスト、旧バージョンstatusの再計算結合テスト。
  既存のalready-cachedテストは現行バージョン印付きに更新。
- docs/backend.md・performance READMEに自己修復キャッシュの設計を記載。

Co-authored-by: kojira <kojira@users.noreply.github.com>
移植中に判明した既存バグをまとめて修正:
- IssuesEvent を payload.action で加点(常時未加点バグの修正)
- status の last_sanpai 未設定時クラッシュ修正
- スケジュールGo関数のPub/Subトピック事前作成(CIデプロイ失敗修正)
- status_version による解析キャッシュのバージョン管理と自己修復

Co-authored-by: kojira <kojira@users.noreply.github.com>
@cursor
cursor Bot merged commit e408ec8 into env/dev Jul 1, 2026
3 checks passed
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