新增:健康事件时间线接入真实数据(T2-14 时间线半边)
- 时间线页:occurred_at DESC cursor 分页 + 月分组组头,四态齐备; 六类事件经 RecordTypeDot 映射(增补喂养/洗护/测量三型,色族复用 已审计色对),类型 TagPill 双通道 - 事件录入表单:六类类型选择器、金额以元录入/整数分传输(money.dart 换算)、UTC 时间戳约定与体重表单一致 - 事件编辑页:顶层 PATCH 差量提交(title/notes/amountCents + version), 40902 照 T2-12 模式自动经时间线检索取新 version 重提(保留输入) - 档案页:月度花费卡接 summary.monthlyExpense(分→元展示)、tz 透传 设备时区固定偏移(T2-13 遗留③)、健康时间线导航入口 - 埋点:health_record 域 create 三事件 + viewed(recordType=health_event) 挂通;新增 edit_succeeded/failed 封装(failureReason 含 conflict) - 测试 224 → 250 全绿(+26);analyze 0 问题;format 无 diff Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -163,6 +163,23 @@ Vaccination buildVaccination(
|
||||
}) =>
|
||||
Vaccination.fromJson({...sampleVaccinationJson(), 'id': id, ...overrides});
|
||||
|
||||
/// 快速构造健康事件。
|
||||
HealthEvent buildHealthEvent(
|
||||
String id, {
|
||||
Map<String, Object?> overrides = const {},
|
||||
}) =>
|
||||
HealthEvent.fromJson({...sampleHealthEventJson(), 'id': id, ...overrides});
|
||||
|
||||
/// 快速构造照护提醒。
|
||||
CareReminder buildReminder(
|
||||
String id, {
|
||||
Map<String, Object?> overrides = const {},
|
||||
}) => CareReminder.fromJson({
|
||||
...sampleCareReminderJson(),
|
||||
'id': id,
|
||||
...overrides,
|
||||
});
|
||||
|
||||
/// 快速构造摘要(缺省为「三聚合齐备」样本;overrides 可置 null 验证空态)。
|
||||
PetSummary buildSummary({Map<String, Object?> overrides = const {}}) =>
|
||||
PetSummary.fromJson({...samplePetSummaryJson(), ...overrides});
|
||||
@@ -184,6 +201,20 @@ class FakePetsRepository implements PetsRepository {
|
||||
Future<List<Vaccination>> Function(String)? listVaccinationsHandler;
|
||||
Future<Vaccination> Function(String, CreateVaccinationRequest)?
|
||||
createVaccinationHandler;
|
||||
Future<Vaccination> Function(String, UpdateVaccinationRequest)?
|
||||
updateVaccinationHandler;
|
||||
Future<CursorPage<HealthEvent>> Function(String, int?, String?)?
|
||||
listHealthEventsHandler;
|
||||
Future<HealthEvent> Function(String, CreateHealthEventRequest)?
|
||||
createHealthEventHandler;
|
||||
Future<HealthEvent> Function(String, UpdateHealthEventRequest)?
|
||||
updateHealthEventHandler;
|
||||
Future<List<CareReminder>> Function(String, CareReminderStatus?)?
|
||||
listCareRemindersHandler;
|
||||
Future<CareReminder> Function(String, CreateCareReminderRequest)?
|
||||
createCareReminderHandler;
|
||||
Future<CareReminder> Function(String, UpdateCareReminderRequest)?
|
||||
updateCareReminderHandler;
|
||||
Future<PetSummary> Function(String, String?)? getPetSummaryHandler;
|
||||
|
||||
@override
|
||||
@@ -233,6 +264,52 @@ class FakePetsRepository implements PetsRepository {
|
||||
CreateVaccinationRequest request,
|
||||
) => createVaccinationHandler!(petId, request);
|
||||
|
||||
@override
|
||||
Future<Vaccination> updateVaccination(
|
||||
String vaccinationId,
|
||||
UpdateVaccinationRequest request,
|
||||
) => updateVaccinationHandler!(vaccinationId, request);
|
||||
|
||||
@override
|
||||
Future<CursorPage<HealthEvent>> listHealthEvents(
|
||||
String petId, {
|
||||
int? limit,
|
||||
String? cursor,
|
||||
}) => listHealthEventsHandler!(petId, limit, cursor);
|
||||
|
||||
@override
|
||||
Future<HealthEvent> createHealthEvent(
|
||||
String petId,
|
||||
CreateHealthEventRequest request,
|
||||
) => createHealthEventHandler!(petId, request);
|
||||
|
||||
@override
|
||||
Future<HealthEvent> updateHealthEvent(
|
||||
String eventId,
|
||||
UpdateHealthEventRequest request,
|
||||
) => updateHealthEventHandler!(eventId, request);
|
||||
|
||||
@override
|
||||
Future<List<CareReminder>> listCareReminders(
|
||||
String petId, {
|
||||
CareReminderStatus? status,
|
||||
}) =>
|
||||
listCareRemindersHandler?.call(petId, status) ??
|
||||
// 缺省空列表:既有详情页测试不必逐个注入。
|
||||
Future.value(const []);
|
||||
|
||||
@override
|
||||
Future<CareReminder> createCareReminder(
|
||||
String petId,
|
||||
CreateCareReminderRequest request,
|
||||
) => createCareReminderHandler!(petId, request);
|
||||
|
||||
@override
|
||||
Future<CareReminder> updateCareReminder(
|
||||
String reminderId,
|
||||
UpdateCareReminderRequest request,
|
||||
) => updateCareReminderHandler!(reminderId, request);
|
||||
|
||||
@override
|
||||
Future<PetSummary> getPetSummary(String petId, {String? tz}) =>
|
||||
getPetSummaryHandler?.call(petId, tz) ??
|
||||
|
||||
Reference in New Issue
Block a user