Skip to content

feat: term-based participation tracking + elevated reception profile UI#34

Merged
ut42tech merged 12 commits into
developfrom
feat/participation-breakdown-term-ui
May 29, 2026
Merged

feat: term-based participation tracking + elevated reception profile UI#34
ut42tech merged 12 commits into
developfrom
feat/participation-breakdown-term-ui

Conversation

@ut42tech
Copy link
Copy Markdown
Owner

概要

tec-nova の運営方針(ターム=朝/昼/夕方、参加回数=30分ルール)をシステムに反映し、受付端末・管理画面に表示する。あわせて受付端末の参加者プロフィール画面をビジュアル昇華した。

主な変更

  • ドメインロジックの集約 (packages/shared/venue-schedule): ターム分類・30分ルール・参加回数キーを純粋関数に一本化(classifyVisit / participationKey / toJstDateString)。
  • スキーマ / API: セッションの termcounted、および participationCountvisitDayCountuncountedVisitCount をサーバ側で derive。会場全体の参加回数集計エンドポイントも追加。
  • 共有 UI: 色分け TermBadge(朝=水色 / 昼=黄色 / 夕方=紫)と UncountedBadge
  • checkin プロフィール: 参加回数ヒーロー+内訳(総来場回数 / 来場日数 / 無効な来場回数)、来場回数ヒートマップ(滞在時間で濃淡・3時間で最濃、対象外は×、空きはマス)。
  • admin: ダッシュボード / 参加者詳細 / 集計のターム色分け。
  • プロフィールのビジュアル昇華: motion(Framer Motion の現行パッケージ)でカウントアップ・ヒートマップの pop-in・在室パルス・タップ反応を追加。prefers-reduced-motion を尊重。ヒートマップは横の参加者カードと高さを揃え、実測した行数だけ草を敷き、あふれた来場はタイル内を縦スクロール。
  • docs: requirements.md / mvp.md / handoff.md を更新。

設計メモ

  • DB スキーマ変更なし(checked_in_at からの derive 方式)。バックエンド変更ゼロのフロント中心の追加が大半。
  • Cloudflare Workers 制約(Node 専用 API 不使用 / Intl のみ)を維持。

検証

  • pnpm type-check 6/6 ✅
  • pnpm biome check クリーン(103 files)✅
  • pnpm --filter checkin build 成功 ✅
  • 受付プロフィール画面の表示・レイアウト(高さ揃え含む)は実機で目視確認済み。

🤖 Generated with Claude Code

ut42tech and others added 12 commits May 29, 2026 16:05
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>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
tecnova-platform-admin Ready Ready Preview, Comment May 29, 2026 9:56am
tecnova-platform-checkin Ready Ready Preview, Comment May 29, 2026 9:56am

@ut42tech ut42tech merged commit 38dc867 into develop May 29, 2026
4 checks passed
@ut42tech ut42tech deleted the feat/participation-breakdown-term-ui branch May 29, 2026 13:49
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.

1 participant