라이브 티커 · 갤럭시 검색 색인 · 주간 랭킹 스냅샷 · 연속 ZAP 상한 · 가입 행성 Zap · 성운 목표 · 랭킹 갱신 안내 · 행성 터치 반응

This commit is contained in:
Sn-Kinos
2026-10-05 22:38:42 +09:00
parent 000c058097
commit 4bb92c2ee7
44 changed files with 727 additions and 78 deletions
+6 -2
View File
@@ -187,10 +187,13 @@ export async function defendEclipse(input: {
qualifiedParticipants: FieldValue.increment(qualified ? 1 : 0),
updatedAt: FieldValue.serverTimestamp(),
}, { merge: true });
}
// 라이브 소셜 프루프는 **참여 합류 1회**만 — 개별 Shake 횟수를 방송하지 않는다(UX·FX v1.5 §1.1 · §3.1 · §5.1
// 「다른 팬의 행동은 개별 Shake 횟수를 모두 노출하지 않고 참여자 수 변화 중심」). 집약 수는 화면의 유효 참여자 표시.
if (accepted > 0 && myTotal === 0) {
tx.create(tickerRef, {
kind: TICKER_KIND_ECLIPSE_DEFENSE, eclipseId, uid,
nickname: publicNameOf(user),
defense: accepted,
linkTo: `/eclipse/${fandomId}/${eclipseId}`,
priority: TICKER_PRIORITY[TICKER_KIND_ECLIPSE_DEFENSE] ?? 50,
createdAt: FieldValue.serverTimestamp(),
@@ -1032,7 +1035,8 @@ export async function aggregateRankings(now = Date.now()): Promise<{ fandoms: nu
for (const axis of FPI_AXES) total[axis] += patch.fpiAxes[axis];
totals.set(code, total);
}
void writer.update(fandom.ref, { memberRanked: true });
// 사용자 랭킹 화면의 「마지막 갱신」 — 별첨 1 ② 예외처리.
void writer.update(fandom.ref, { memberRanked: true, memberRankedAt: FieldValue.serverTimestamp() });
memberTotal += members.size;
}
await writer.close();