fix(golden): 冻结应用时钟消除时间依赖非确定性(product_detail/license/inventory_check)
golden 失败根因:商品详情屏用实时 DateTime.now() 算「近30天出库」,随真实时间推移 6月流水掉出30天窗口→渲染变化→对不上。license/inventory_check 同理(剩余天数/盘点日期)。 修复: - product_detail_screen: DateTime.now() → appNow()(可注入时钟) - golden_harness: 所有 golden 渲染前冻结 appClock=2026-07-01 + tearDown 复位(ds-flow 钉死动态值) - 重录 license_mobile / m_inventory_check 6 张 golden;product_detail 冻结后自动匹配无需改图 本地 flutter test test/golden/ 全 120 通过。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P9G7E3wmAYL9KeYCVZVsqu
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import 'package:lucide_icons_flutter/lucide_icons.dart';
|
||||
import '../../core/utils/dialog_util.dart';
|
||||
import '../../core/utils/clock.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:image_picker/image_picker.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
@@ -395,7 +396,7 @@ class _ProductDetailScreenState extends ConsumerState<ProductDetailScreen> {
|
||||
final currentStock = _invRows.fold<num>(0, (s, i) => s + i.quantity);
|
||||
final cost = p.purchasePrice ?? 0;
|
||||
final stockValue = currentStock * cost;
|
||||
final now = DateTime.now();
|
||||
final now = appNow();
|
||||
final out30 = _logs.where((l) {
|
||||
if (l.direction != 'out') return false;
|
||||
final d = DateTime.tryParse(l.createdAt ?? '');
|
||||
|
||||
Reference in New Issue
Block a user