feat: term-based participation tracking + elevated reception profile UI#34
Merged
Conversation
Add classifyVisit (single-pass term+counted), participationKey, and toJstDateString so the API and frontends share one source for term classification, the 30-minute rule, and JST date handling. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…on stats Add term/counted to today-session items and visitDayCount/uncountedVisitCount to the participant profile stats. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Morning=sky, afternoon=amber, evening=violet, dimmed when uncounted; UncountedBadge marks visits excluded from participation. Adds @tecnova/shared as a workspace dependency of @tecnova/ui. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Compute per-session term/counted and the participation/visit/day/uncounted aggregates server-side via a single classifyVisit pass; unify JST-today helpers through toJstDateString. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
History rows show color-coded term + counted state from the API; the profile heatmap colors counted visits by stay duration and marks uncounted ones with an x; stats show participation count with total visits / visit days / uncounted visits. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Dashboard and detail sheet render server-provided term/counted via TermBadge; stats page tints the morning/afternoon/evening KPI cards. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Update mvp.md and requirements.md for the participation breakdown, the counted/uncounted heatmap, server-side term derivation, and the consolidated venue-schedule helpers. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Add the motion package (Framer Motion's current name, imported from motion/react and compatible with React 19) as a checkin dependency for profile-screen UI animations. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Reusable count-up component that animates 0 -> value and falls back to the final value instantly when the user prefers reduced motion. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Cohesive visual pass on the reception profile screen, staying within the existing sky/emerald + LINE Seed JP + PanelHeader language: - make 参加回数 a hero block with a count-up and icon'd breakdown chips - treat the visit heatmap as a build log: tiles pop in with a staggered reveal (delay capped so large grids stay snappy) - add a pulsing presence dot, stat icons, count-up on 来場回数, and tap feedback on the check-in/out action - gentle gradient background for depth All animation respects prefers-reduced-motion. No data, state machine, or shared-component changes. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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.
概要
tec-nova の運営方針(ターム=朝/昼/夕方、参加回数=30分ルール)をシステムに反映し、受付端末・管理画面に表示する。あわせて受付端末の参加者プロフィール画面をビジュアル昇華した。
主な変更
packages/shared/venue-schedule): ターム分類・30分ルール・参加回数キーを純粋関数に一本化(classifyVisit/participationKey/toJstDateString)。term・counted、およびparticipationCount・visitDayCount・uncountedVisitCountをサーバ側で derive。会場全体の参加回数集計エンドポイントも追加。TermBadge(朝=水色 / 昼=黄色 / 夕方=紫)とUncountedBadge。motion(Framer Motion の現行パッケージ)でカウントアップ・ヒートマップの pop-in・在室パルス・タップ反応を追加。prefers-reduced-motionを尊重。ヒートマップは横の参加者カードと高さを揃え、実測した行数だけ草を敷き、あふれた来場はタイル内を縦スクロール。requirements.md/mvp.md/handoff.mdを更新。設計メモ
checked_in_atからの derive 方式)。バックエンド変更ゼロのフロント中心の追加が大半。検証
pnpm type-check6/6 ✅pnpm biome checkクリーン(103 files)✅pnpm --filter checkin build成功 ✅🤖 Generated with Claude Code