chore: main → env/dev (PR #129 の4修正を dev へ反映)#131
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
概要
ブランチ運用
feature → main → env/dev → env/prodの中段(main→env/dev)です。PR #129 がmainにマージされたので、その内容を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 #130(
env/dev → env/prod)にこの内容が反映されます。