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 测试
This commit is contained in:
@@ -1,40 +1,15 @@
|
||||
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'] ?? {};
|
||||
}
|
||||
|
||||
/// 获取趋势数据
|
||||
Future<List<Map<String, dynamic>>> getTrend(String type, {int period = 7}) async {
|
||||
final res = await _api.get('/api/health-records/trend', queryParameters: {'type': type, 'period': period});
|
||||
final list = res.data['data'] as List? ?? [];
|
||||
return list.cast<Map<String, dynamic>>();
|
||||
}
|
||||
|
||||
/// 获取记录列表
|
||||
Future<List<Map<String, dynamic>>> getRecords({String? type, int? days}) async {
|
||||
final params = <String, dynamic>{};
|
||||
if (type != null) params['type'] = type;
|
||||
if (days != null) params['days'] = days;
|
||||
final res = await _api.get('/api/health-records', queryParameters: params);
|
||||
final list = res.data['data'] as List? ?? [];
|
||||
return list.cast<Map<String, dynamic>>();
|
||||
}
|
||||
|
||||
/// 删除记录
|
||||
Future<void> deleteRecord(String id) async {
|
||||
await _api.delete('/api/health-records/$id');
|
||||
}
|
||||
}
|
||||
|
||||
/// 用户服务
|
||||
class UserService {
|
||||
final ApiClient _api;
|
||||
UserService(this._api);
|
||||
@@ -44,8 +19,15 @@ class UserService {
|
||||
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<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 {
|
||||
@@ -62,7 +44,6 @@ class UserService {
|
||||
}
|
||||
}
|
||||
|
||||
/// 用药服务
|
||||
class MedicationService {
|
||||
final ApiClient _api;
|
||||
MedicationService(this._api);
|
||||
@@ -81,14 +62,13 @@ class MedicationService {
|
||||
await _api.put('/api/medications/$id', data: data);
|
||||
}
|
||||
|
||||
Future<void> delete(String id) async {
|
||||
await _api.delete('/api/medications/$id');
|
||||
}
|
||||
|
||||
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 res = await _api.get(
|
||||
'/api/medications',
|
||||
queryParameters: params.isNotEmpty ? params : null,
|
||||
);
|
||||
final list = res.data['data'] as List? ?? [];
|
||||
return list.cast<Map<String, dynamic>>();
|
||||
}
|
||||
@@ -108,12 +88,14 @@ class MedicationService {
|
||||
}
|
||||
}
|
||||
|
||||
/// 饮食服务
|
||||
class DietService {
|
||||
final ApiClient _api;
|
||||
DietService(this._api);
|
||||
|
||||
Future<List<Map<String, dynamic>>> getRecords({String? date, String? mealType}) async {
|
||||
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;
|
||||
@@ -135,7 +117,6 @@ class DietService {
|
||||
}
|
||||
}
|
||||
|
||||
/// 问诊服务
|
||||
class ConsultationService {
|
||||
final ApiClient _api;
|
||||
ConsultationService(this._api);
|
||||
@@ -145,31 +126,8 @@ class ConsultationService {
|
||||
final list = res.data['data'] as List? ?? [];
|
||||
return list.cast<Map<String, dynamic>>();
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> getQuota() async {
|
||||
final res = await _api.get('/api/user/consultation-quota');
|
||||
return res.data['data'] ?? {};
|
||||
}
|
||||
|
||||
Future<Map<String, dynamic>> createConsultation(String doctorId) async {
|
||||
final res = await _api.post('/api/consultations', data: {'doctorId': doctorId});
|
||||
return res.data['data'];
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getMessages(String consultationId, {String? after}) async {
|
||||
final params = <String, dynamic>{};
|
||||
if (after != null) params['after'] = after;
|
||||
final res = await _api.get('/api/consultations/$consultationId/messages', queryParameters: params);
|
||||
final list = res.data['data'] as List? ?? [];
|
||||
return list.cast<Map<String, dynamic>>();
|
||||
}
|
||||
|
||||
Future<void> sendMessage(String consultationId, String content) async {
|
||||
await _api.post('/api/consultations/$consultationId/messages', data: {'content': content});
|
||||
}
|
||||
}
|
||||
|
||||
/// 随访服务
|
||||
class FollowUpService {
|
||||
final ApiClient _api;
|
||||
FollowUpService(this._api);
|
||||
@@ -181,7 +139,6 @@ class FollowUpService {
|
||||
}
|
||||
}
|
||||
|
||||
/// 运动服务
|
||||
class ExerciseService {
|
||||
final ApiClient _api;
|
||||
ExerciseService(this._api);
|
||||
@@ -191,10 +148,6 @@ class ExerciseService {
|
||||
return res.data['data'];
|
||||
}
|
||||
|
||||
Future<void> createPlan(Map<String, dynamic> data) async {
|
||||
await _api.post('/api/exercise-plans', data: data);
|
||||
}
|
||||
|
||||
Future<void> createPlanSimple(Map<String, dynamic> data) async {
|
||||
await _api.post('/api/exercise-plans', data: data);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user