diff --git a/pages/feedback/index.wxml b/pages/feedback/index.wxml
index 1c269a0..82a3db4 100644
--- a/pages/feedback/index.wxml
+++ b/pages/feedback/index.wxml
@@ -5,15 +5,17 @@
填写课堂表现并保存到教学反馈记录。
-
+
- {{errorMessage}}
-
- 请求编号:{{errorRequestId}}
- 复制
-
+ {{errorMessage}}
+
+
- 重试
diff --git a/pages/feedback/index.wxss b/pages/feedback/index.wxss
index d7bd1ea..3427c35 100644
--- a/pages/feedback/index.wxss
+++ b/pages/feedback/index.wxss
@@ -7,6 +7,76 @@
padding: 0;
}
+.feedback-error-banner {
+ flex-direction: column;
+ align-items: stretch;
+ gap: 14rpx;
+}
+
+.feedback-error-message {
+ display: block;
+}
+
+.feedback-error-footer,
+.feedback-error-reference {
+ display: flex;
+ align-items: center;
+}
+
+.feedback-error-footer {
+ justify-content: flex-end;
+ gap: 18rpx;
+}
+
+.feedback-error-reference {
+ flex: 1;
+ min-width: 0;
+ gap: 12rpx;
+ color: #6e6e73;
+ font-size: 21rpx;
+}
+
+.feedback-error-reference > text {
+ min-width: 0;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.feedback-error-copy,
+.feedback-error-retry {
+ display: flex;
+ flex: none;
+ align-items: center;
+ justify-content: center;
+ height: 56rpx;
+ margin: 0;
+ border: 0;
+ border-radius: 8rpx;
+ font-size: 23rpx;
+ line-height: 1;
+}
+
+.feedback-error-copy {
+ padding: 0;
+ background: transparent;
+ color: #6e6e73;
+ font-weight: 500;
+}
+
+.feedback-error-retry {
+ min-width: 104rpx;
+ padding: 0 22rpx;
+ background: #007aff;
+ color: #ffffff;
+ font-weight: 600;
+}
+
+.feedback-error-copy::after,
+.feedback-error-retry::after {
+ border: 0;
+}
+
.feedback-field,
.content-field {
padding: 24rpx;
@@ -323,14 +393,18 @@
.voice-summary-button,
.voice-summary-apply-button {
+ display: flex;
+ align-items: center;
+ justify-content: center;
width: 100%;
height: 72rpx;
margin: 0;
+ padding: 0 20rpx;
border: 0;
border-radius: 8rpx;
font-size: 25rpx;
font-weight: 600;
- line-height: 72rpx;
+ line-height: 1;
}
.voice-summary-button {
diff --git a/server/src/error.rs b/server/src/error.rs
index e786ef5..1357953 100644
--- a/server/src/error.rs
+++ b/server/src/error.rs
@@ -92,10 +92,11 @@ impl IntoResponse for ApiError {
}
impl From for ApiError {
- fn from(_: sqlx::Error) -> Self {
+ fn from(error: sqlx::Error) -> Self {
tracing::error!(
event = "database_query_failed",
error_class = "database_query_failed",
+ error = %error,
"database query failed"
);
Self::Internal
diff --git a/utils/api.ts b/utils/api.ts
index e06816d..18fc811 100644
--- a/utils/api.ts
+++ b/utils/api.ts
@@ -192,6 +192,10 @@ export function getApiErrorMessage(error: unknown): string {
if (error.statusCode === 401) return '登录状态已失效,请重试'
if (error.statusCode === 404) return '请求的数据不存在或无权访问'
if (error.statusCode === 503 && error.message.includes('database')) return '后端尚未配置数据库连接'
+ if (error.statusCode && error.statusCode >= 500) return '服务暂时无法完成操作,请稍后重试'
+ if (error.message.toLowerCase() === 'internal server error') {
+ return '服务暂时无法完成操作,请稍后重试'
+ }
return error.message
}