diff --git a/miniprogram/app.json b/miniprogram/app.json
index 8dbe2ac..af2e090 100644
--- a/miniprogram/app.json
+++ b/miniprogram/app.json
@@ -1,13 +1,13 @@
{
"pages": [
- "pages/login/index",
- "pages/register/index",
"pages/home/index",
"pages/detect/index",
- "pages/batch/index",
"pages/history/index",
"pages/inbox/index",
"pages/profile/index",
+ "pages/login/index",
+ "pages/register/index",
+ "pages/batch/index",
"pages/admin-dashboard/index",
"pages/admin-review/index",
"pages/admin-users/index",
@@ -15,11 +15,49 @@
],
"window": {
"navigationBarTitleText": "内容风控平台",
- "navigationBarBackgroundColor": "#0A1A2D",
- "navigationBarTextStyle": "white",
- "backgroundTextStyle": "light",
- "backgroundColor": "#EEF3F8"
+ "navigationBarBackgroundColor": "#ffffff",
+ "navigationBarTextStyle": "black",
+ "backgroundTextStyle": "dark",
+ "backgroundColor": "#f5f5f7"
+ },
+ "tabBar": {
+ "color": "#86868b",
+ "selectedColor": "#0066cc",
+ "backgroundColor": "#ffffff",
+ "borderStyle": "white",
+ "list": [
+ {
+ "pagePath": "pages/home/index",
+ "text": "首页",
+ "iconPath": "assets/icons/home.png",
+ "selectedIconPath": "assets/icons/home-active.png"
+ },
+ {
+ "pagePath": "pages/detect/index",
+ "text": "发布",
+ "iconPath": "assets/icons/publish.png",
+ "selectedIconPath": "assets/icons/publish-active.png"
+ },
+ {
+ "pagePath": "pages/history/index",
+ "text": "历史",
+ "iconPath": "assets/icons/history.png",
+ "selectedIconPath": "assets/icons/history-active.png"
+ },
+ {
+ "pagePath": "pages/inbox/index",
+ "text": "私信",
+ "iconPath": "assets/icons/inbox.png",
+ "selectedIconPath": "assets/icons/inbox-active.png"
+ },
+ {
+ "pagePath": "pages/profile/index",
+ "text": "我的",
+ "iconPath": "assets/icons/profile.png",
+ "selectedIconPath": "assets/icons/profile-active.png"
+ }
+ ]
},
"style": "v2",
"sitemapLocation": "sitemap.json"
-}
+}
\ No newline at end of file
diff --git a/miniprogram/app.wxss b/miniprogram/app.wxss
index dd5f5a2..68db805 100644
--- a/miniprogram/app.wxss
+++ b/miniprogram/app.wxss
@@ -1,74 +1,99 @@
-/** app.wxss - xAI Brutalist Design System */
+/** app.wxss - Apple Design System (Compact) */
page {
- --bg-dark: #1f2228;
- --bg-surface: rgba(255, 255, 255, 0.03);
- --bg-hover: rgba(255, 255, 255, 0.08);
+ /* Background Colors */
+ --bg-canvas: #ffffff;
+ --bg-parchment: #f5f5f7;
+ --bg-pearl: #fafafc;
+ --bg-nav: #000000;
- --text-primary: #ffffff;
- --text-secondary: rgba(255, 255, 255, 0.7);
- --text-muted: rgba(255, 255, 255, 0.5);
- --text-disabled: rgba(255, 255, 255, 0.3);
+ /* Text Colors */
+ --text-primary: #1d1d1f;
+ --text-secondary: #86868b;
+ --text-muted: #cccccc;
+ --text-dark-surface: #ffffff;
+ --text-fine-print: #7a7a7a;
- --border-default: rgba(255, 255, 255, 0.1);
- --border-strong: rgba(255, 255, 255, 0.2);
+ /* Accent Colors */
+ --accent-primary: #0066cc;
+ --accent-focus: #0071e3;
+ --accent-link: #2997ff;
- --focus-ring: rgb(59, 130, 246);
+ /* Status Colors (Apple System) */
+ --status-spam: #ff3b30;
+ --status-ham: #34c759;
+ --status-warn: #ff9500;
+ --status-pending: #8e8e93;
+ /* Border Colors */
+ --border-light: #f0f0f0;
+ --border-medium: #e0e0e0;
+
+ /* Radius */
--radius-none: 0rpx;
- --radius-subtle: 8rpx;
+ --radius-sm: 12rpx;
+ --radius-md: 16rpx;
+ --radius-lg: 24rpx;
+ --radius-pill: 9999rpx;
+ /* Spacing (Compact) */
--spacing-xs: 8rpx;
--spacing-sm: 16rpx;
--spacing-md: 24rpx;
--spacing-lg: 48rpx;
- --spacing-xl: 96rpx;
+ --spacing-xl: 64rpx;
+
+ /* Typography */
+ --font-display: 'PingFang SC', 'SF Pro Display', -apple-system, sans-serif;
+ --font-text: 'PingFang SC', 'SF Pro Text', -apple-system, sans-serif;
min-height: 100%;
color: var(--text-primary);
- font-family: 'PingFang SC', 'Microsoft YaHei', -apple-system, sans-serif;
- background: var(--bg-dark);
+ font-family: var(--font-text);
+ font-size: 28rpx;
+ line-height: 1.4;
+ background: var(--bg-parchment);
}
.container {
position: relative;
- padding: var(--spacing-md);
- padding-bottom: calc(var(--spacing-lg) + env(safe-area-inset-bottom));
+ padding: var(--spacing-sm);
+ padding-bottom: calc(var(--spacing-md) + env(safe-area-inset-bottom));
}
/* Hero Section */
.hero {
position: relative;
- padding: var(--spacing-lg) 0;
+ padding: var(--spacing-md) 0;
text-align: center;
- border-bottom: 1px solid var(--border-default);
}
.hero-badge {
display: inline-block;
- padding: var(--spacing-xs) var(--spacing-sm);
- border: 1px solid var(--border-strong);
- color: var(--text-primary);
- font-family: 'SF Mono', 'Consolas', monospace;
- font-size: 22rpx;
- letter-spacing: 1rpx;
- text-transform: uppercase;
+ padding: 6rpx 12rpx;
+ border-radius: var(--radius-pill);
+ background: var(--bg-pearl);
+ color: var(--accent-primary);
+ font-family: var(--font-text);
+ font-size: 20rpx;
+ font-weight: 600;
}
.hero-title {
- margin-top: var(--spacing-md);
- font-size: 56rpx;
- font-weight: 300;
- letter-spacing: 2rpx;
+ margin-top: var(--spacing-sm);
+ font-family: var(--font-display);
+ font-size: 48rpx;
+ font-weight: 600;
+ letter-spacing: -1rpx;
color: var(--text-primary);
- line-height: 1.3;
+ line-height: 1.1;
}
.hero-sub {
- margin-top: var(--spacing-sm);
- font-size: 28rpx;
+ margin-top: var(--spacing-xs);
+ font-size: 26rpx;
color: var(--text-secondary);
- line-height: 1.5;
+ line-height: 1.4;
max-width: 600rpx;
margin-left: auto;
margin-right: auto;
@@ -77,68 +102,67 @@ page {
.hero-meta {
display: flex;
flex-wrap: wrap;
- gap: var(--spacing-xs);
- margin-top: var(--spacing-md);
+ gap: 8rpx;
+ margin-top: var(--spacing-sm);
+ justify-content: center;
}
.hero-metric {
- padding: var(--spacing-xs) var(--spacing-sm);
- font-size: 24rpx;
- color: var(--text-muted);
- border: 1px solid var(--border-default);
+ padding: 6rpx 12rpx;
+ font-size: 22rpx;
+ color: var(--text-secondary);
+ border-radius: var(--radius-sm);
+ background: var(--bg-canvas);
}
/* Cards */
.card {
- margin-top: var(--spacing-md);
- padding: var(--spacing-md);
- background: transparent;
- border: 1px solid var(--border-default);
+ margin-top: var(--spacing-sm);
+ padding: var(--spacing-sm);
+ background: var(--bg-canvas);
+ border: 1rpx solid var(--border-medium);
+ border-radius: var(--radius-lg);
overflow: hidden;
}
-.card:active {
- border-color: var(--border-strong);
-}
-
.card-title {
- margin-bottom: var(--spacing-sm);
+ margin-bottom: var(--spacing-xs);
color: var(--text-primary);
+ font-family: var(--font-display);
font-size: 32rpx;
- font-weight: 400;
- letter-spacing: 0.5rpx;
+ font-weight: 600;
}
.card-desc {
- margin-bottom: var(--spacing-sm);
+ margin-bottom: var(--spacing-xs);
color: var(--text-secondary);
- font-size: 26rpx;
- line-height: 1.5;
+ font-size: 24rpx;
+ line-height: 1.4;
}
/* Divider */
.glass-divider {
- margin: var(--spacing-sm) 0;
- height: 1px;
- background: var(--border-default);
+ margin: var(--spacing-xs) 0;
+ height: 1rpx;
+ background: var(--border-light);
}
/* Fields */
.field {
- margin-top: var(--spacing-sm);
+ margin-top: var(--spacing-xs);
}
.field-label {
display: block;
- margin-bottom: var(--spacing-xs);
+ margin-bottom: 6rpx;
color: var(--text-secondary);
- font-size: 26rpx;
+ font-size: 24rpx;
}
.field-help {
- margin-top: var(--spacing-xs);
- color: var(--text-muted);
- font-size: 24rpx;
+ margin-top: 6rpx;
+ color: var(--text-secondary);
+ font-size: 22rpx;
}
/* Inputs */
@@ -146,39 +170,40 @@ page {
.textarea {
width: 100%;
box-sizing: border-box;
- min-height: 80rpx;
+ min-height: 72rpx;
padding: 0 var(--spacing-sm);
- background: transparent;
- border: 1px solid var(--border-strong);
+ background: var(--bg-parchment);
+ border: 1rpx solid var(--border-light);
+ border-radius: var(--radius-md);
color: var(--text-primary);
- font-size: 32rpx;
- line-height: 80rpx;
+ font-size: 28rpx;
+ line-height: 72rpx;
}
.input:focus,
.textarea:focus {
outline: none;
- border-color: var(--focus-ring);
+ border-color: var(--accent-primary);
}
.textarea {
- min-height: 200rpx;
- padding-top: var(--spacing-sm);
- line-height: 1.5;
+ min-height: 160rpx;
+ padding-top: var(--spacing-xs);
+ line-height: 1.4;
}
.picker-value {
- min-width: 180rpx;
+ min-width: 140rpx;
text-align: right;
- color: var(--text-primary);
- font-size: 28rpx;
+ color: var(--accent-primary);
+ font-size: 26rpx;
}
/* Buttons */
.btn-row {
display: flex;
- gap: var(--spacing-sm);
- margin-top: var(--spacing-sm);
+ gap: var(--spacing-xs);
+ margin-top: var(--spacing-xs);
}
.btn-row .btn {
@@ -187,17 +212,16 @@ page {
}
.btn {
- margin-top: var(--spacing-sm);
- padding: var(--spacing-sm) var(--spacing-md);
+ margin-top: var(--spacing-xs);
+ padding: 16rpx 32rpx;
border: none;
- border-radius: 0;
- font-family: 'SF Mono', 'Consolas', monospace;
- font-size: 28rpx;
+ border-radius: var(--radius-pill);
+ font-family: var(--font-text);
+ font-size: 26rpx;
font-weight: 400;
- letter-spacing: 2rpx;
- text-transform: uppercase;
- color: var(--bg-dark);
- background: var(--text-primary);
+ color: var(--text-dark-surface);
+ background: var(--accent-primary);
+ transition: transform 0.1s ease;
}
button.btn::after {
@@ -205,34 +229,45 @@ button.btn::after {
}
.btn:active {
- opacity: 0.9;
+ transform: scale(0.95);
}
.btn[disabled] {
opacity: 0.3;
+ transform: none;
+}
+
+/* Primary Button */
+.btn-primary {
+ color: var(--text-dark-surface);
+ background: var(--accent-primary);
}
/* Ghost Button */
.btn-ghost {
- color: var(--text-primary);
+ color: var(--accent-primary);
background: transparent;
- border: 1px solid var(--border-strong);
+ border: 1rpx solid var(--accent-primary);
}
.btn-ghost:active {
- background: var(--bg-hover);
+ background: rgba(0, 102, 204, 0.1);
+}
+
+.btn-ghost[disabled] {
+ opacity: 0.3;
+ border-color: var(--text-secondary);
+ color: var(--text-secondary);
}
/* Accent Button */
.btn-accent {
- color: var(--text-primary);
- background: transparent;
- border: 1px solid var(--border-strong);
+ color: var(--accent-primary);
+ background: var(--bg-pearl);
}
.btn-accent:active {
- background: var(--bg-hover);
- border-color: var(--text-primary);
+ background: var(--bg-parchment);
}
/* Rows */
@@ -240,21 +275,21 @@ button.btn::after {
display: flex;
align-items: center;
justify-content: space-between;
- gap: var(--spacing-sm);
+ gap: var(--spacing-xs);
}
.row + .row {
- margin-top: var(--spacing-sm);
+ margin-top: var(--spacing-xs);
}
.label {
color: var(--text-secondary);
- font-size: 26rpx;
+ font-size: 24rpx;
}
.value {
color: var(--text-primary);
- font-size: 28rpx;
+ font-size: 26rpx;
font-weight: 400;
}
@@ -262,158 +297,163 @@ button.btn::after {
.grid-2 {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
- gap: var(--spacing-sm);
+ gap: var(--spacing-xs);
}
.grid-3 {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
- gap: var(--spacing-sm);
+ gap: var(--spacing-xs);
}
.grid-auto {
display: grid;
- grid-template-columns: repeat(auto-fit, minmax(220rpx, 1fr));
- gap: var(--spacing-sm);
+ grid-template-columns: repeat(auto-fit, minmax(180rpx, 1fr));
+ gap: var(--spacing-xs);
}
/* KPI Cards */
.kpi {
- padding: var(--spacing-sm);
- background: var(--bg-surface);
- border: 1px solid var(--border-default);
-}
-
-.kpi:active {
- border-color: var(--border-strong);
+ padding: var(--spacing-xs);
+ background: var(--bg-parchment);
+ border-radius: var(--radius-md);
+ text-align: center;
}
.kpi-value {
- font-size: 40rpx;
- font-weight: 300;
+ font-family: var(--font-display);
+ font-size: 36rpx;
+ font-weight: 600;
color: var(--text-primary);
line-height: 1.2;
}
.kpi-label {
- margin-top: var(--spacing-xs);
- font-size: 24rpx;
- color: var(--text-muted);
+ margin-top: 4rpx;
+ font-size: 22rpx;
+ color: var(--text-secondary);
}
/* Module Cards */
.module-card {
- padding: var(--spacing-sm);
- background: var(--bg-surface);
- border: 1px solid var(--border-default);
+ padding: var(--spacing-xs);
+ background: var(--bg-canvas);
+ border: 1rpx solid var(--border-medium);
+ border-radius: var(--radius-md);
+ transition: transform 0.1s ease;
}
.module-card:active {
- border-color: var(--border-strong);
+ transform: scale(0.98);
}
.module-name {
color: var(--text-primary);
- font-size: 30rpx;
- font-weight: 400;
+ font-size: 28rpx;
+ font-weight: 600;
}
.module-desc {
- margin-top: var(--spacing-xs);
+ margin-top: 4rpx;
color: var(--text-secondary);
- font-size: 24rpx;
- line-height: 1.5;
+ font-size: 22rpx;
+ line-height: 1.4;
}
.module-tag {
display: inline-block;
- margin-top: var(--spacing-sm);
- padding: var(--spacing-xs) var(--spacing-sm);
- color: var(--text-muted);
- font-size: 22rpx;
- font-family: 'SF Mono', 'Consolas', monospace;
- text-transform: uppercase;
- letter-spacing: 1rpx;
- border: 1px solid var(--border-default);
+ margin-top: var(--spacing-xs);
+ padding: 4rpx 10rpx;
+ color: var(--accent-primary);
+ font-size: 20rpx;
+ font-weight: 600;
+ background: rgba(0, 102, 204, 0.1);
+ border-radius: var(--radius-pill);
}
/* List Items */
.list-item {
- margin-top: var(--spacing-sm);
- padding: var(--spacing-sm);
- background: var(--bg-surface);
- border: 1px solid var(--border-default);
+ margin-top: var(--spacing-xs);
+ padding: var(--spacing-xs);
+ background: var(--bg-canvas);
+ border: 1rpx solid var(--border-light);
+ border-radius: var(--radius-md);
}
.list-item:active {
- border-color: var(--border-strong);
+ background: var(--bg-parchment);
}
.item-title {
color: var(--text-primary);
font-size: 28rpx;
- font-weight: 400;
- line-height: 1.4;
+ font-weight: 600;
+ line-height: 1.3;
}
.item-sub {
- margin-top: var(--spacing-xs);
- color: var(--text-muted);
- font-size: 24rpx;
- line-height: 1.5;
+ margin-top: 4rpx;
+ color: var(--text-secondary);
+ font-size: 22rpx;
+ line-height: 1.4;
}
/* Tags & Chips */
.tag {
display: inline-block;
- margin-right: var(--spacing-xs);
- margin-bottom: var(--spacing-xs);
- padding: var(--spacing-xs) var(--spacing-sm);
- border: 1px solid var(--border-strong);
- font-size: 24rpx;
- font-family: 'SF Mono', 'Consolas', monospace;
- text-transform: uppercase;
- letter-spacing: 1rpx;
+ margin-right: 6rpx;
+ margin-bottom: 6rpx;
+ padding: 4rpx 10rpx;
+ border-radius: var(--radius-sm);
+ font-size: 22rpx;
+ font-family: var(--font-text);
color: var(--text-primary);
- background: transparent;
+ background: var(--bg-parchment);
}
.tag-danger {
- border-color: rgba(255, 91, 111, 0.5);
- color: rgba(255, 91, 111, 0.9);
+ color: var(--status-spam);
+ background: rgba(255, 59, 48, 0.1);
}
.chip-group {
display: flex;
flex-wrap: wrap;
- gap: var(--spacing-xs);
- margin-top: var(--spacing-sm);
+ gap: 6rpx;
+ margin-top: var(--spacing-xs);
}
.chip {
- padding: var(--spacing-xs) var(--spacing-sm);
- border: 1px solid var(--border-default);
- font-size: 24rpx;
+ padding: 6rpx 12rpx;
+ border-radius: var(--radius-pill);
+ font-size: 22rpx;
color: var(--text-secondary);
- background: transparent;
+ background: var(--bg-parchment);
}
-/* Progress Track - Minimalist */
+.chip:active {
+ background: var(--bg-pearl);
+}
+
+/* Progress Track */
.progress-track {
- margin-top: var(--spacing-xs);
+ margin-top: 6rpx;
width: 100%;
- height: 4rpx;
- background: var(--border-default);
+ height: 6rpx;
+ background: var(--border-light);
+ border-radius: var(--radius-pill);
}
.progress-fill {
height: 100%;
- background: rgba(255, 91, 111, 0.8);
+ background: var(--status-spam);
+ border-radius: var(--radius-pill);
}
.progress-fill-safe {
height: 100%;
- background: var(--text-muted);
+ background: var(--status-ham);
+ border-radius: var(--radius-pill);
}
/* Status Labels */
@@ -422,40 +462,39 @@ button.btn::after {
.status-warn,
.status-pending {
display: inline-block;
- padding: var(--spacing-xs) var(--spacing-sm);
- font-size: 24rpx;
- font-family: 'SF Mono', 'Consolas', monospace;
- text-transform: uppercase;
- letter-spacing: 1rpx;
- border: 1px solid var(--border-strong);
+ padding: 4rpx 12rpx;
+ font-size: 22rpx;
+ font-family: var(--font-text);
+ font-weight: 600;
+ border-radius: var(--radius-pill);
}
.status-spam {
- color: rgba(255, 91, 111, 0.9);
- border-color: rgba(255, 91, 111, 0.5);
+ color: var(--text-dark-surface);
+ background: var(--status-spam);
}
.status-ham {
- color: rgba(45, 207, 149, 0.9);
- border-color: rgba(45, 207, 149, 0.5);
+ color: var(--text-dark-surface);
+ background: var(--status-ham);
}
.status-warn {
- color: rgba(255, 180, 84, 0.9);
- border-color: rgba(255, 180, 84, 0.5);
+ color: var(--text-dark-surface);
+ background: var(--status-warn);
}
.status-pending {
- color: var(--text-muted);
- border-color: var(--border-default);
+ color: var(--text-primary);
+ background: var(--bg-parchment);
}
/* Pager */
.pager-row {
- margin-top: var(--spacing-sm);
+ margin-top: var(--spacing-xs);
display: flex;
justify-content: space-between;
- gap: var(--spacing-sm);
+ gap: var(--spacing-xs);
}
.pager-btn {
@@ -464,44 +503,44 @@ button.btn::after {
/* Muted & Small */
.muted {
- color: var(--text-muted);
- font-size: 26rpx;
- line-height: 1.5;
+ color: var(--text-secondary);
+ font-size: 22rpx;
+ line-height: 1.4;
}
.small {
- font-size: 24rpx;
+ font-size: 20rpx;
}
.empty {
text-align: center;
- padding: var(--spacing-lg);
- color: var(--text-muted);
- font-size: 26rpx;
- line-height: 1.5;
+ padding: var(--spacing-md);
+ color: var(--text-secondary);
+ font-size: 24rpx;
+ line-height: 1.4;
}
/* Animations */
.fade-up {
- animation: fadeUp 0.4s ease both;
+ animation: fadeUp 0.3s ease both;
}
.fade-up-delay-1 {
- animation-delay: 0.08s;
+ animation-delay: 0.05s;
}
.fade-up-delay-2 {
- animation-delay: 0.16s;
+ animation-delay: 0.1s;
}
.fade-up-delay-3 {
- animation-delay: 0.24s;
+ animation-delay: 0.15s;
}
@keyframes fadeUp {
from {
opacity: 0;
- transform: translateY(16rpx);
+ transform: translateY(12rpx);
}
to {
opacity: 1;
@@ -513,15 +552,15 @@ button.btn::after {
.evidence-grid {
display: flex;
flex-wrap: wrap;
- gap: var(--spacing-sm);
- margin-top: var(--spacing-sm);
+ gap: var(--spacing-xs);
+ margin-top: var(--spacing-xs);
}
.evidence-item {
position: relative;
- width: 120rpx;
- height: 120rpx;
- border: 1px solid var(--border-strong);
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: var(--radius-sm);
overflow: hidden;
}
@@ -539,132 +578,135 @@ button.btn::after {
position: absolute;
top: -4rpx;
right: -4rpx;
- width: 32rpx;
- height: 32rpx;
- background: rgba(255, 91, 111, 0.9);
- color: var(--text-primary);
- font-size: 24rpx;
+ width: 28rpx;
+ height: 28rpx;
+ background: var(--status-spam);
+ color: var(--text-dark-surface);
+ font-size: 20rpx;
text-align: center;
- line-height: 32rpx;
+ line-height: 28rpx;
+ border-radius: 50%;
}
.evidence-add {
- width: 120rpx;
- height: 120rpx;
- border: 1px solid var(--border-strong);
+ width: 100rpx;
+ height: 100rpx;
+ border-radius: var(--radius-sm);
+ background: var(--bg-parchment);
display: flex;
align-items: center;
justify-content: center;
}
.evidence-add-icon {
- font-size: 48rpx;
- color: var(--text-muted);
+ font-size: 36rpx;
+ color: var(--text-secondary);
}
/* Credit Score Bar */
.credit-score-bar {
position: relative;
- width: 180rpx;
- height: 28rpx;
- background: var(--border-default);
+ width: 140rpx;
+ height: 20rpx;
+ background: var(--border-light);
+ border-radius: var(--radius-pill);
}
.credit-fill {
height: 100%;
- background: rgba(45, 207, 149, 0.6);
+ background: var(--status-ham);
+ border-radius: var(--radius-pill);
}
.credit-value {
position: absolute;
- right: var(--spacing-xs);
+ right: 8rpx;
top: 50%;
transform: translateY(-50%);
- font-size: 22rpx;
+ font-size: 18rpx;
color: var(--text-primary);
}
/* Report Modal */
.report-modal {
- margin-top: var(--spacing-md);
- padding: var(--spacing-md);
- background: var(--bg-surface);
- border: 1px solid var(--border-strong);
+ margin-top: var(--spacing-sm);
+ padding: var(--spacing-sm);
+ background: var(--bg-canvas);
+ border: 1rpx solid var(--border-medium);
+ border-radius: var(--radius-lg);
position: relative;
}
.report-header {
text-align: center;
- margin-bottom: var(--spacing-sm);
+ margin-bottom: var(--spacing-xs);
}
.report-title {
- font-size: 36rpx;
- font-weight: 300;
+ font-size: 32rpx;
+ font-weight: 600;
color: var(--text-primary);
- font-family: 'SF Mono', 'Consolas', monospace;
+ font-family: var(--font-display);
}
.report-period {
- font-size: 24rpx;
- color: var(--text-muted);
- margin-top: var(--spacing-xs);
+ font-size: 22rpx;
+ color: var(--text-secondary);
+ margin-top: 4rpx;
}
.report-close {
position: absolute;
- top: var(--spacing-sm);
- right: var(--spacing-sm);
- width: 40rpx;
- height: 40rpx;
- color: rgba(255, 91, 111, 0.9);
- font-size: 32rpx;
+ top: var(--spacing-xs);
+ right: var(--spacing-xs);
+ width: 36rpx;
+ height: 36rpx;
+ color: var(--status-spam);
+ font-size: 28rpx;
text-align: center;
- line-height: 40rpx;
+ line-height: 36rpx;
}
.report-section {
- margin-top: var(--spacing-sm);
- padding: var(--spacing-sm);
+ margin-top: var(--spacing-xs);
+ padding: var(--spacing-xs);
background: transparent;
- border-top: 1px solid var(--border-default);
+ border-top: 1rpx solid var(--border-light);
}
.report-section-title {
- font-size: 28rpx;
+ font-size: 24rpx;
color: var(--text-secondary);
- margin-bottom: var(--spacing-sm);
- font-family: 'SF Mono', 'Consolas', monospace;
- text-transform: uppercase;
- letter-spacing: 1rpx;
+ margin-bottom: var(--spacing-xs);
+ font-weight: 600;
}
.report-kpi {
- padding: var(--spacing-sm);
- background: var(--bg-surface);
+ padding: var(--spacing-xs);
+ background: var(--bg-parchment);
text-align: center;
- border: 1px solid var(--border-default);
+ border-radius: var(--radius-md);
}
.report-kpi-value {
- font-size: 32rpx;
- font-weight: 300;
+ font-size: 28rpx;
+ font-weight: 600;
color: var(--text-primary);
}
.report-kpi-label {
- font-size: 22rpx;
- color: var(--text-muted);
- margin-top: var(--spacing-xs);
+ font-size: 20rpx;
+ color: var(--text-secondary);
+ margin-top: 4rpx;
}
.report-trend-item {
- margin-top: var(--spacing-xs);
+ margin-top: 4rpx;
}
/* Note textarea */
.note-textarea {
- min-height: 120rpx;
+ min-height: 100rpx;
}
/* Media Query */
diff --git a/miniprogram/assets/icons/history-active.png b/miniprogram/assets/icons/history-active.png
new file mode 100644
index 0000000..a47f712
Binary files /dev/null and b/miniprogram/assets/icons/history-active.png differ
diff --git a/miniprogram/assets/icons/history.png b/miniprogram/assets/icons/history.png
new file mode 100644
index 0000000..cd3309f
Binary files /dev/null and b/miniprogram/assets/icons/history.png differ
diff --git a/miniprogram/assets/icons/home-active.png b/miniprogram/assets/icons/home-active.png
new file mode 100644
index 0000000..e34273f
Binary files /dev/null and b/miniprogram/assets/icons/home-active.png differ
diff --git a/miniprogram/assets/icons/home.png b/miniprogram/assets/icons/home.png
new file mode 100644
index 0000000..2d2691f
Binary files /dev/null and b/miniprogram/assets/icons/home.png differ
diff --git a/miniprogram/assets/icons/home.svg b/miniprogram/assets/icons/home.svg
new file mode 100644
index 0000000..a2d9324
--- /dev/null
+++ b/miniprogram/assets/icons/home.svg
@@ -0,0 +1,4 @@
+
+
\ No newline at end of file
diff --git a/miniprogram/assets/icons/inbox-active.png b/miniprogram/assets/icons/inbox-active.png
new file mode 100644
index 0000000..843adbb
Binary files /dev/null and b/miniprogram/assets/icons/inbox-active.png differ
diff --git a/miniprogram/assets/icons/inbox.png b/miniprogram/assets/icons/inbox.png
new file mode 100644
index 0000000..006cc93
Binary files /dev/null and b/miniprogram/assets/icons/inbox.png differ
diff --git a/miniprogram/assets/icons/profile-active.png b/miniprogram/assets/icons/profile-active.png
new file mode 100644
index 0000000..cf6e8e2
Binary files /dev/null and b/miniprogram/assets/icons/profile-active.png differ
diff --git a/miniprogram/assets/icons/profile.png b/miniprogram/assets/icons/profile.png
new file mode 100644
index 0000000..1324e28
Binary files /dev/null and b/miniprogram/assets/icons/profile.png differ
diff --git a/miniprogram/assets/icons/publish-active.png b/miniprogram/assets/icons/publish-active.png
new file mode 100644
index 0000000..7b83ef1
Binary files /dev/null and b/miniprogram/assets/icons/publish-active.png differ
diff --git a/miniprogram/assets/icons/publish.png b/miniprogram/assets/icons/publish.png
new file mode 100644
index 0000000..3ea955e
Binary files /dev/null and b/miniprogram/assets/icons/publish.png differ
diff --git a/miniprogram/pages/home/index.js b/miniprogram/pages/home/index.js
index 686286a..c1b546a 100644
--- a/miniprogram/pages/home/index.js
+++ b/miniprogram/pages/home/index.js
@@ -1,11 +1,7 @@
const { request } = require('../../utils/request')
const USER_MODULES = [
- { name: '信息发布', desc: '发布公开 / 私有 / 私信文本并实时检测', tag: '发布检测', path: '/pages/detect/index' },
- { name: '批量识别', desc: '多条文本批量检测并给出风险汇总', tag: '批量筛查', path: '/pages/batch/index' },
- { name: '发布历史', desc: '查看发布状态、概率和申诉进度', tag: '历史追踪', path: '/pages/history/index' },
- { name: '私信收件箱', desc: '查看通过检测后成功送达的私信', tag: '私信查看', path: '/pages/inbox/index' },
- { name: '个人中心', desc: '维护个人资料与密码设置', tag: '账号设置', path: '/pages/profile/index' }
+ { name: '批量识别', desc: '多条文本批量检测并给出风险汇总', tag: '批量筛查', path: '/pages/batch/index' }
]
const ADMIN_MODULES = [
diff --git a/miniprogram/pages/home/index.wxml b/miniprogram/pages/home/index.wxml
index 806f99f..3d23e43 100644
--- a/miniprogram/pages/home/index.wxml
+++ b/miniprogram/pages/home/index.wxml
@@ -33,8 +33,8 @@
- 用户功能
- 常用操作入口,覆盖发布、检测、历史和账号设置。
+ 更多功能
+ 批量检测与管理功能入口。
{{item.name}}
@@ -55,6 +55,4 @@
-
-
diff --git a/miniprogram/pages/profile/index.js b/miniprogram/pages/profile/index.js
index 9768cdc..a74197d 100644
--- a/miniprogram/pages/profile/index.js
+++ b/miniprogram/pages/profile/index.js
@@ -3,6 +3,7 @@ const { request } = require('../../utils/request')
Page({
data: {
loading: false,
+ user: null,
form: {
nickname: '',
company: '',
@@ -17,6 +18,9 @@ Page({
},
async loadProfile() {
+ const app = getApp()
+ const user = app.globalData.user || wx.getStorageSync('user')
+ this.setData({ user })
const profile = await request({ url: '/user/profile' })
this.setData({
form: {
@@ -29,6 +33,12 @@ Page({
})
},
+ goto(e) {
+ const path = e.currentTarget.dataset.path
+ if (!path) return
+ wx.navigateTo({ url: path })
+ },
+
onInput(e) {
const field = e.currentTarget.dataset.field
this.setData({ [`form.${field}`]: (e.detail.value || '').trim() })
@@ -57,5 +67,18 @@ Page({
} finally {
this.setData({ loading: false })
}
+ },
+
+ logout() {
+ wx.showModal({
+ title: '退出登录',
+ content: '确定要退出登录吗?',
+ success: (res) => {
+ if (res.confirm) {
+ getApp().clearAuth()
+ wx.reLaunch({ url: '/pages/login/index' })
+ }
+ }
+ })
}
})
diff --git a/miniprogram/pages/profile/index.wxml b/miniprogram/pages/profile/index.wxml
index 03663cb..2659488 100644
--- a/miniprogram/pages/profile/index.wxml
+++ b/miniprogram/pages/profile/index.wxml
@@ -1,7 +1,7 @@
PROFILE
- 个人资料设置
+ 个人中心
完善你的身份信息,便于审计追踪和团队协同。
@@ -36,4 +36,35 @@
-
+
+
+ 管理员入口
+ 管理后台功能快速访问。
+
+
+ 运营看板
+ 监控发布、拦截、样本和模型状态
+ 数据概览
+
+
+ 复核与申诉
+ 处理拦截复核和用户申诉
+ 审核处理
+
+
+ 样本管理
+ 维护训练样本并触发模型重训
+ 模型迭代
+
+
+ 用户管理
+ 编辑用户信息和权限
+ 权限管理
+
+
+
+
+
+
+
+
\ No newline at end of file