feat: AI Agent 处理器扩展 + 服药打卡确认链路 + AI 气泡配色微调 + 数据刷新 providers 抽离 + 多端页面细节调整
This commit is contained in:
@@ -5,10 +5,27 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'auth_provider.dart';
|
||||
import 'conversation_history_provider.dart';
|
||||
import 'data_providers.dart';
|
||||
import 'data_refresh_providers.dart';
|
||||
import '../utils/sse_handler.dart';
|
||||
|
||||
enum MessageType { text, dataConfirm, agentWelcome, taskCard }
|
||||
|
||||
List<ChatMessage> prependTodayHealthCard(
|
||||
List<ChatMessage> messages, {
|
||||
DateTime? now,
|
||||
}) {
|
||||
return [
|
||||
ChatMessage(
|
||||
id: 'task_card',
|
||||
role: 'assistant',
|
||||
content: '',
|
||||
createdAt: now ?? DateTime.now(),
|
||||
type: MessageType.taskCard,
|
||||
),
|
||||
...messages,
|
||||
];
|
||||
}
|
||||
|
||||
class ChatMessage {
|
||||
final String id;
|
||||
final String role;
|
||||
@@ -133,10 +150,9 @@ class ChatNotifier extends Notifier<ChatState> {
|
||||
|
||||
msgs[i].confirmed = true;
|
||||
state = state.copyWith(messages: msgs);
|
||||
ref.invalidate(medicationListProvider);
|
||||
ref.invalidate(medicationReminderProvider);
|
||||
ref.read(medicationDataRefreshSignalProvider.notifier).trigger();
|
||||
ref.invalidate(latestHealthProvider);
|
||||
ref.invalidate(currentExercisePlanProvider);
|
||||
ref.read(exerciseDataRefreshSignalProvider.notifier).trigger();
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -161,18 +177,7 @@ class ChatNotifier extends Notifier<ChatState> {
|
||||
|
||||
void insertTaskCard() {
|
||||
if (state.messages.any((m) => m.type == MessageType.taskCard)) return;
|
||||
state = state.copyWith(
|
||||
messages: [
|
||||
ChatMessage(
|
||||
id: 'task_card',
|
||||
role: 'assistant',
|
||||
content: '',
|
||||
createdAt: DateTime.now(),
|
||||
type: MessageType.taskCard,
|
||||
),
|
||||
...state.messages,
|
||||
],
|
||||
);
|
||||
state = state.copyWith(messages: prependTodayHealthCard(state.messages));
|
||||
}
|
||||
|
||||
Future<String?> loadConversation(String convId) async {
|
||||
@@ -212,7 +217,7 @@ class ChatNotifier extends Notifier<ChatState> {
|
||||
}).toList();
|
||||
|
||||
state = ChatState(
|
||||
messages: messages,
|
||||
messages: prependTodayHealthCard(messages),
|
||||
conversationId: convId,
|
||||
activeAgent: ActiveAgent.default_,
|
||||
isViewingHistory: true,
|
||||
|
||||
Reference in New Issue
Block a user