Initial commit: TradeMate 外贸小助手 MVP

项目结构:
- backend/     Python FastAPI 后端
- uni-app/     uni-app跨端前端
- docs/        设计文档
- docker-compose.yml  Docker编排
- nginx/scripts/systemd 运维配置

已完成功能:
- 用户认证 (JWT)
- 智能翻译 + 回复建议
- 营销素材生成
- 客户管理 + 沉默检测
- 报价单管理
- 产品库管理
- 汇率换算
- 推送通知 (uni-push)
- WhatsApp Webhook框架
- Celery定时任务
This commit is contained in:
TradeMate Dev
2026-05-08 18:17:12 +08:00
commit c6206787da
121 changed files with 11743 additions and 0 deletions
+142
View File
@@ -0,0 +1,142 @@
.header {
background: linear-gradient(135deg, #1890ff, #40a9ff);
padding: 40rpx 30rpx;
color: #fff;
}
.user-info {
display: flex;
align-items: center;
}
.avatar {
width: 100rpx;
height: 100rpx;
border-radius: 50%;
background-color: rgba(255, 255, 255, 0.3);
display: flex;
align-items: center;
justify-content: center;
font-size: 48rpx;
margin-right: 20rpx;
}
.user-detail {
flex: 1;
}
.username {
font-size: 36rpx;
font-weight: bold;
margin-bottom: 8rpx;
}
.tier-badge {
font-size: 24rpx;
background: rgba(255, 255, 255, 0.2);
padding: 4rpx 16rpx;
border-radius: 20rpx;
}
.stats-grid {
display: flex;
flex-wrap: wrap;
padding: 30rpx;
background: #fff;
margin: -30rpx 30rpx 30rpx;
border-radius: 12rpx;
box-shadow: 0 4rpx 12rpx rgba(0, 0, 0, 0.08);
}
.stat-item {
width: 25%;
text-align: center;
padding: 20rpx 0;
}
.stat-value {
font-size: 40rpx;
font-weight: bold;
color: #1890ff;
display: block;
}
.stat-label {
font-size: 24rpx;
color: #999;
margin-top: 8rpx;
}
.menu-grid {
display: flex;
flex-wrap: wrap;
padding: 0 30rpx;
}
.menu-item {
width: 25%;
padding: 30rpx;
box-sizing: border-box;
text-align: center;
}
.menu-icon {
width: 80rpx;
height: 80rpx;
background: #e6f7ff;
border-radius: 20rpx;
display: flex;
align-items: center;
justify-content: center;
margin: 0 auto 10rpx;
font-size: 40rpx;
}
.menu-text {
font-size: 24rpx;
color: #666;
}
.section {
padding: 30rpx;
}
.section-title {
font-size: 32rpx;
font-weight: bold;
margin-bottom: 20rpx;
}
.silent-list {
background: #fff;
border-radius: 12rpx;
}
.silent-item {
padding: 30rpx;
border-bottom: 1rpx solid #f0f0f0;
display: flex;
justify-content: space-between;
align-items: center;
}
.silent-item:last-child {
border-bottom: none;
}
.customer-name {
font-size: 28rpx;
color: #333;
}
.silence-days {
font-size: 24rpx;
color: #ff4d4f;
}
.logout-btn {
margin: 40rpx 30rpx;
background: #fff;
color: #ff4d4f;
border: 1rpx solid #ff4d4f;
}