feat: 错误自动上报机制

- 后端:error_reports 表 + POST /api/v1/public/errors + GET /api/v1/admin/errors
- Flutter:ErrorReporter 单例,60s 去重,fire-and-forget,不影响用户
- main.dart:FlutterError 和 Zone 错误自动上报
- 打印异常:catch 块加 reportError,Windows 打印问题可自动采集堆栈

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-05-25 21:08:03 +08:00
parent 44ffedb56a
commit 2dbc89b902
7 changed files with 300 additions and 3 deletions
+7 -3
View File
@@ -1,4 +1,5 @@
import 'package:flutter/services.dart';
import '../errors/error_reporter.dart';
import 'package:pdf/pdf.dart';
import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart';
@@ -191,7 +192,8 @@ Future<void> printProductLabelImpl({
try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
} catch (e, st) {
reportError(e, st);
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
}
@@ -430,7 +432,8 @@ Future<void> printStockInOrderImpl(StockInOrder order) async {
));
try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
} catch (e, st) {
reportError(e, st);
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
}
@@ -484,7 +487,8 @@ Future<void> printStockOutOrderImpl(StockOutOrder order) async {
));
try {
await Printing.layoutPdf(onLayout: (_) async => doc.save());
} catch (e) {
} catch (e, st) {
reportError(e, st);
throw Exception('打印失败,请检查打印机连接和驱动是否正常。\n详情:$e');
}
}