按时间倒序展示用户已结束的烹饪会话(completed / cancelled / disconnected),每条卡片显示状态、设备/探针、目标/峰值/时长;熟度始终显示,但在“无 presetName 且 meatType=custom”的裸自定义温度场景下不显示肉种。;点击进入详情,长按删除(带确认)。
lib/features/thermometer/presentation/pages/cook_log_page.dart(330 行)cookLogProvider(持久化会话列表,FIFO cap 50 见 12-待解决问题)、temperatureUnitProvider/cook-log(CookLogPage.routeName)lib/app.dart 静态 routes map顶部返回 + 居中标题(来自本地化字段 cookLogTitle,并非固定英文 "Cook Log")。下方滚动列表:每个 _SessionCard 卡片左侧有按状态色(绿/红/黄/蓝)的 3px 竖条;顶行是 "Mar 15, 2026 · 3:42 PM" 日期 + 状态图标 + 状态文字(通过 localizedCookStatus 按当前语言本地化显示对应状态);中段大号文字 "肉种 · 熟度";下方一行设备 deviceId + 探针颜色名(session.probeNumber.colorName);底部三个 _StatChip:Target / Peak / Time。空列表显示居中提示文案。
IconButton.onPressed → Navigator.pop(context) → 返回 Dashboard_SessionCard.onTap → navigateInstant(context, CookLogDetailPage(session: session))CookLogDetailPage 接受 session 参数_SessionCard.onLongPress → _confirmDelete(context)cookLogProvider.notifier.deleteSession(session.id)GestureDetector.onLongPress
→ CookLogPage._confirmDelete(context)
→ showDialog<bool>(...)
→ 用户确认 → cookLogProvider.notifier.deleteSession(session.id)
→ SharedPreferences 持久化更新
→ 列表立即重建(少了这一项)
Navigator.pop(ctx, bool)watch:cookLogProvider(任何会话增删改重建)、temperatureUnitProvider(°C/°F 切换重建以更新数字)。
烹饪日志的写入来源主要是 CookingSessionsNotifier._finalizeById(处理 target-reached 后的状态机完成、app exit、kill recovery 等所有正常结束路径);烹饪页的 _finishSession 仅在用户手动取消(CookSessionStatus.cancelled)时调用并写入。本页只读不写入新条目(仅通过长按删除)。
无显著差异。
_months 是英文缩写常量(Jan/Feb/...),_formatTime 用 12 小时 AM/PM。其他多语言用户看到这里仍是英文 🔴 需要确认(应该改用 intl.DateFormat 配合 locale)。CookSessionStatus:英文枚举的 displayName 不一定走 ARB;同上。localizedCookStatus(l, status)(lib/core/utils/meat_localization.dart),按 active/completed/cancelled/disconnected switch 到 ARB key statusActive/statusCompleted/statusCancelled/statusDisconnected(6 语 en/zh/de/es/fr/it 翻译早已就位、本次只是接线);session.doneness 同次顺手从 .displayName 改为 localizedDoneness(l, ...)。⚠️ 15e7e6d / TAPD #1003132:cook-log 列表 + 详情页 doneness 渲染再换源到 localizedDonenessKey(l, donenessKeyForMeatTempF(session.displayMeatName, session.targetTemp, family: session.deviceId.boosterFamily))——session.doneness 在启动会话时硬编码 Doneness.medium、永不动,所以原 localizedDoneness(l, session.doneness) 让所有行都显示 "Medium";改后从肉表 + target 反查实际 band(Chicken 的 USDA Crispy 174–179°F 也能显示,5 项 enum 无此值)。已落历史会话同步生效。CookSessionStatus.displayName getter 本身保留作 dev-log / 调试用,UI 路径不再走它。