Browse Source

[fix]修复ai分析异常显示

zk 4 months ago
parent
commit
e6378e813f

+ 3 - 0
lib/data/api/atmob_api.dart

@@ -260,4 +260,7 @@ abstract class AtmobApi {
   @POST("/s/v1/user/electric/query")
   Future<BaseResponse<ElectricQueryResponse>> userElectricQuery(
       @Body() FriendsOperationRequest request);
+
+  @POST("/s/v1/chat/daily/exception/analyse")
+  Future<dynamic> dailyExceptionAnalyse(@Body() QueryTrackRequest request);
 }

+ 28 - 0
lib/data/api/atmob_api.g.dart

@@ -1970,6 +1970,34 @@ class _AtmobApi implements AtmobApi {
     return _value;
   }
 
+  @override
+  Future<dynamic> dailyExceptionAnalyse(QueryTrackRequest request) async {
+    final _extra = <String, dynamic>{};
+    final queryParameters = <String, dynamic>{};
+    final _headers = <String, dynamic>{};
+    final _data = <String, dynamic>{};
+    _data.addAll(request.toJson());
+    final _options = _setStreamType<dynamic>(Options(
+      method: 'POST',
+      headers: _headers,
+      extra: _extra,
+    )
+        .compose(
+          _dio.options,
+          '/s/v1/chat/daily/exception/analyse',
+          queryParameters: queryParameters,
+          data: _data,
+        )
+        .copyWith(
+            baseUrl: _combineBaseUrls(
+          _dio.options.baseUrl,
+          baseUrl,
+        )));
+    final _result = await _dio.fetch(_options);
+    final _value = _result.data;
+    return _value;
+  }
+
   RequestOptions newRequestOptions(Object? options) {
     if (options is RequestOptions) {
       return options as RequestOptions;

+ 2 - 8
lib/data/api/atmob_stream_api.c.dart

@@ -25,10 +25,7 @@ class _AtmobStreamApi implements AtmobStreamApi {
   Future<ResponseBody> dailySummary(QueryTrackRequest request) async {
     const _extra = <String, dynamic>{};
     final queryParameters = <String, dynamic>{};
-    final _headers = <String, dynamic>{
-      r'Content-Type': 'application/json',
-      r'Accept': 'text/event-stream'
-    };
+    final _headers = <String, dynamic>{};
     final _data = <String, dynamic>{};
     _data.addAll(request.toJson());
     final _result =
@@ -56,10 +53,7 @@ class _AtmobStreamApi implements AtmobStreamApi {
   Future<ResponseBody> dailyExceptionAnalyse(QueryTrackRequest request) async {
     const _extra = <String, dynamic>{};
     final queryParameters = <String, dynamic>{};
-    final _headers = <String, dynamic>{
-      r'Content-Type': 'application/json',
-      r'Accept': 'text/event-stream'
-    };
+    final _headers = <String, dynamic>{};
     final _data = <String, dynamic>{};
     _data.addAll(request.toJson());
     final _result =

+ 17 - 2
lib/module/analyse/location_analyse_controller.dart

@@ -66,6 +66,7 @@ class LocationAnalyseController extends BaseController
 
   late AnimationController keywordLottieController =
       AnimationController(vsync: this);
+  bool _keywordLottieReady = false;
 
   Timer? _loopTimer;
 
@@ -226,12 +227,20 @@ class LocationAnalyseController extends BaseController
         _isRequestedAnalyse.value = false;
         _isRequestingStream = false;
         debugPrintStack();
+        _setAnalyseSuccess();
       });
     }).catchError((error) {
       _isRequestedAnalyse.value = false;
       _isRequestingStream = false;
       if (error is ServerErrorException) {
-        _summaryError.value = error.message ?? "服务出错,请稍后再试";
+        final msg = error.message;
+        if (msg == null) {
+          _summaryError.value = error.message ?? "服务出错,请稍后再试";
+        } else {
+          graduallyController.append(msg);
+          graduallyController.appendDone();
+        }
+        _setAnalyseSuccess();
       } else {
         _summaryError.value = "网络错误,请检查网络连接";
         debugPrint("error: $error");
@@ -241,18 +250,24 @@ class LocationAnalyseController extends BaseController
   }
 
   void locationKeywordLottieLoad(LottieComposition composition) {
+    _keywordLottieReady = true;
     keywordLottieController.duration = composition.duration;
     _startKeywordLottieAnimation();
   }
 
   void _startKeywordLottieAnimation() async {
+    if (!_keywordLottieReady) {
+      return;
+    }
     await keywordLottieController.animateTo(0.84);
     keywordLottieController.repeat(min: 0, max: 0.84, reverse: true);
   }
 
   void _setAnalyseSuccess() async {
     _loopTimer?.cancel();
-    await keywordLottieController.animateTo(1);
+    if (_keywordLottieReady) {
+      await keywordLottieController.animateTo(1);
+    }
     _isRequestedAnalyse.value = true;
   }