Files
AI-Health/health_app/lib/services/health_service.dart
MingNian d82e006cf4 refactor: 死代码清理 + 趋势图重构 + 侧边栏交互优化 + 智能体卡片去延迟
- 死代码清理: 删除 AppCard/AppMenuItem/AppTabChip/AppButtons 等 4 个未使用 Widget 文件; 清理 common_widgets/enterprise_widgets/app_status_badge 中未使用 class; 移除 HealthService 等未使用方法; 后端移除 ExerciseService.CreateFromItemsAsync/HealthArchiveService.GetOrCreateAsync/MedicationAgentHandler 死分支/ChatRequest DTO
- 趋势图: 直线折线 + 渐变填充 + 阴影; 去网格; X 轴日+月份; Y 轴整数刻度最多 4 个; 点击数据点/录入记录显示上方浮层; 选中点变实心
- 侧边栏: 对话记录改单选删除(灰底高亮); 操作栏浮层修复触摸问题; 常用功能/健康仪表盘间距收紧; _Panel 去外框
- 智能体: 欢迎卡片去掉 400ms 延迟; 胶囊去阴影
- 其他: api_client IP 适配; 多页面 UI 微调; 新增 chat_provider/prelaunch_guardrails 测试
2026-07-09 15:04:02 +08:00

173 lines
4.7 KiB
Dart

import '../core/api_client.dart';
class HealthService {
final ApiClient _api;
HealthService(this._api);
Future<Map<String, dynamic>> getLatest() async {
final res = await _api.get('/api/health-records/latest');
return res.data['data'] ?? {};
}
}
class UserService {
final ApiClient _api;
UserService(this._api);
Future<Map<String, dynamic>?> getProfile() async {
final res = await _api.get('/api/user/profile');
return res.data['data'];
}
Future<void> updateProfile({
String? name,
String? gender,
String? birthDate,
}) async {
await _api.put(
'/api/user/profile',
data: {'name': name, 'gender': gender, 'birthDate': birthDate},
);
}
Future<Map<String, dynamic>?> getHealthArchive() async {
final res = await _api.get('/api/user/health-archive');
return res.data['data'];
}
Future<void> updateHealthArchive(Map<String, dynamic> data) async {
await _api.put('/api/user/health-archive', data: data);
}
Future<void> deleteAccount() async {
await _api.delete('/api/user/account');
}
}
class MedicationService {
final ApiClient _api;
MedicationService(this._api);
Future<List<Map<String, dynamic>>> getList() async {
final res = await _api.get('/api/medications');
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
Future<void> create(Map<String, dynamic> data) async {
await _api.post('/api/medications', data: data);
}
Future<void> update(String id, Map<String, dynamic> data) async {
await _api.put('/api/medications/$id', data: data);
}
Future<List<Map<String, dynamic>>> getMedications(String filter) async {
final params = <String, dynamic>{};
if (filter.isNotEmpty) params['filter'] = filter;
final res = await _api.get(
'/api/medications',
queryParameters: params.isNotEmpty ? params : null,
);
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
Future<void> deleteMedication(String id) async {
await _api.delete('/api/medications/$id');
}
Future<void> confirm(String id) async {
await _api.post('/api/medications/$id/confirm');
}
Future<List<Map<String, dynamic>>> getReminders() async {
final res = await _api.get('/api/medications/reminders');
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
}
class DietService {
final ApiClient _api;
DietService(this._api);
Future<List<Map<String, dynamic>>> getRecords({
String? date,
String? mealType,
}) async {
final params = <String, dynamic>{};
if (date != null) params['date'] = date;
if (mealType != null) params['mealType'] = mealType;
final res = await _api.get('/api/diet-records', queryParameters: params);
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
Future<void> create(Map<String, dynamic> data) async {
await _api.post('/api/diet-records', data: data);
}
Future<void> deleteRecord(String id) async {
await _api.delete('/api/diet-records/$id');
}
Future<void> updateRecord(String id, Map<String, dynamic> data) async {
await _api.put('/api/diet-records/$id', data: data);
}
}
class ConsultationService {
final ApiClient _api;
ConsultationService(this._api);
Future<List<Map<String, dynamic>>> getDoctors() async {
final res = await _api.get('/api/doctors');
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
}
class FollowUpService {
final ApiClient _api;
FollowUpService(this._api);
Future<List<Map<String, dynamic>>> getList() async {
final res = await _api.get('/api/follow-ups');
final list = res.data['data'] as List? ?? [];
return list.cast<Map<String, dynamic>>();
}
}
class ExerciseService {
final ApiClient _api;
ExerciseService(this._api);
Future<Map<String, dynamic>?> getCurrentPlan() async {
final res = await _api.get('/api/exercise-plans/current');
return res.data['data'];
}
Future<void> createPlanSimple(Map<String, dynamic> data) async {
await _api.post('/api/exercise-plans', data: data);
}
Future<void> deletePlan(String id) async {
await _api.delete('/api/exercise-plans/$id');
}
Future<void> checkIn(String itemId) async {
await _api.post('/api/exercise-plans/items/$itemId/checkin');
}
Future<List<Map<String, dynamic>>> getPlans() async {
final res = await _api.get('/api/exercise-plans');
return (res.data['data'] as List?)?.cast<Map<String, dynamic>>() ?? [];
}
Future<Map<String, dynamic>?> getPlanDetail(String id) async {
final res = await _api.get('/api/exercise-plans/$id');
return res.data['data'];
}
}