From d3b818a660be6db8e3b70c2bec2540b9f5e23626 Mon Sep 17 00:00:00 2001 From: dzc <2388224167@qq.com> Date: Tue, 1 Sep 2026 14:27:10 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E5=A2=9E=E5=8A=A0=E9=A2=84=E7=BA=A6?= =?UTF-8?q?=E7=BB=9F=E8=AE=A1=E7=9A=84=E5=AF=BC=E5=87=BA=20feat:=E4=BA=BA?= =?UTF-8?q?=E8=84=B8=E5=AE=A1=E6=A0=B8=E3=80=81=E4=BA=BA=E8=84=B8=E8=B4=A8?= =?UTF-8?q?=E9=87=8F=E7=9A=84=E6=9F=A5=E8=AF=A2=20feat:app=E8=B4=AD?= =?UTF-8?q?=E7=89=A9=E8=BD=A6=E4=B8=A5=E6=A0=BC=E9=99=90=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/common/models/api/user_api_models.dart | 2 ++ lib/common/models/api/user_api_models.g.dart | 5 +++-- lib/common/utils/json/json_tool.dart | 6 ++++++ lib/common/utils/manage/http_manage.dart | 2 +- lib/common/values/constants.dart | 4 ++-- test/common/face_quality_report_models_test.dart | 12 ++++++------ 6 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/common/models/api/user_api_models.dart b/lib/common/models/api/user_api_models.dart index e21480e..afd4f1f 100644 --- a/lib/common/models/api/user_api_models.dart +++ b/lib/common/models/api/user_api_models.dart @@ -291,9 +291,11 @@ class ServiceFaceQualityReportItem { final double? score; /// 本次检测所依据的服务端人脸图片版本,来自 V3 快照 sourceUpdatedAt。 + @JsonKey(toJson: JsonTool.dateTimeToServiceString) final DateTime sourceUpdatedAt; /// 终端完成本次检测的本地时间,用于阻止旧结果覆盖服务端新结果。 + @JsonKey(toJson: JsonTool.dateTimeToServiceString) final DateTime checkedAt; /// 虹软 SDK 或终端插件错误码,检测成功时为空。 diff --git a/lib/common/models/api/user_api_models.g.dart b/lib/common/models/api/user_api_models.g.dart index 7af1dd8..989b351 100644 --- a/lib/common/models/api/user_api_models.g.dart +++ b/lib/common/models/api/user_api_models.g.dart @@ -149,8 +149,9 @@ Map _$ServiceFaceQualityReportItemToJson( 'sampleId': instance.sampleId, 'status': instance.status, 'score': instance.score, - 'sourceUpdatedAt': instance.sourceUpdatedAt.toIso8601String(), - 'checkedAt': instance.checkedAt.toIso8601String(), + 'sourceUpdatedAt': + JsonTool.dateTimeToServiceString(instance.sourceUpdatedAt), + 'checkedAt': JsonTool.dateTimeToServiceString(instance.checkedAt), 'errorCode': instance.errorCode, }; diff --git a/lib/common/utils/json/json_tool.dart b/lib/common/utils/json/json_tool.dart index 9ea66dd..1c8bc37 100644 --- a/lib/common/utils/json/json_tool.dart +++ b/lib/common/utils/json/json_tool.dart @@ -1,3 +1,5 @@ +import 'package:common_utils/common_utils.dart'; + import 'package:pj_supermarket_cloud/common/index.dart'; abstract class JsonTool { @@ -57,6 +59,10 @@ abstract class JsonTool { return result; } + /// 将 Flutter 时间转换为 Java 后端 LocalDateTime 的统一请求格式,不携带时区和小数秒。 + static String dateTimeToServiceString(DateTime value) => + DateUtil.formatDate(value, format: DateFormats.full); + /// 后端为避免 19 位 Long 在部分客户端丢失精度,可能把 ID 序列化为字符串。 /// 这里同时兼容字符串和数字,忽略无法安全转换的异常项。 static List anyListToIntList(Object? value) { diff --git a/lib/common/utils/manage/http_manage.dart b/lib/common/utils/manage/http_manage.dart index ddb78cb..7a6688b 100644 --- a/lib/common/utils/manage/http_manage.dart +++ b/lib/common/utils/manage/http_manage.dart @@ -27,7 +27,7 @@ class HttpManage { static const _requestStartAtKey = "_requestStartAt"; /// 单段请求或响应日志允许保留的最大字符数,超出部分只记录原长度。 - static const _maxLogLength = 1000; + static const _maxLogLength = 2000; /// 日志输出前必须遮蔽的字段名;字段名会先转小写并移除下划线、短横线。 static const Set _sensitiveLogKeys = { diff --git a/lib/common/values/constants.dart b/lib/common/values/constants.dart index 72c24a3..e22da94 100644 --- a/lib/common/values/constants.dart +++ b/lib/common/values/constants.dart @@ -15,8 +15,8 @@ class Constants { static const pwdEncKey = 'pigxpigxpigxpigx'; /// 服务 url 线上 - static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; - // static const apiUrl = 'https://www.zianxin.com/api'; + // static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; + static const apiUrl = 'https://www.zianxin.com/api'; // static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; diff --git a/test/common/face_quality_report_models_test.dart b/test/common/face_quality_report_models_test.dart index 060df31..8bb9747 100644 --- a/test/common/face_quality_report_models_test.dart +++ b/test/common/face_quality_report_models_test.dart @@ -5,8 +5,8 @@ import 'package:pj_supermarket_cloud/common/index.dart'; void main() { /// detected 和 failed 必须保留各自的分数、时间和错误码空值语义。 test('quality report item serializes detected and failed states', () { - final checkedAt = DateTime(2026, 9, 1, 10, 30); - final sourceUpdatedAt = DateTime(2026, 9, 1, 9); + final checkedAt = DateTime(2026, 9, 1, 10, 30, 59, 987, 654); + final sourceUpdatedAt = DateTime(2026, 9, 1, 9, 8, 7, 123, 456); final detected = ServiceFaceQualityReportItem( sampleId: '1001', status: 'detected', @@ -26,16 +26,16 @@ void main() { 'sampleId': '1001', 'status': 'detected', 'score': 0.58, - 'sourceUpdatedAt': '2026-09-01T09:00:00.000', - 'checkedAt': '2026-09-01T10:30:00.000', + 'sourceUpdatedAt': '2026-09-01 09:08:07', + 'checkedAt': '2026-09-01 10:30:59', 'errorCode': null, }); expect(failed.toJson(), { 'sampleId': '1002', 'status': 'failed', 'score': null, - 'sourceUpdatedAt': '2026-09-01T09:00:00.000', - 'checkedAt': '2026-09-01T10:30:00.000', + 'sourceUpdatedAt': '2026-09-01 09:08:07', + 'checkedAt': '2026-09-01 10:30:59', 'errorCode': 90114, }); });