feat(admin): 新增客服手动录单功能与仪表盘今日录单统计

- 做了什么:
  - 新增客服手动录单数据库迁移 000084 及对应模型,支持编号唯一校验、客服快照绑定与 CRUD 操作;
  - 后端提供 csmanualentry 业务模块及相关 API,并在仪表盘摘要中聚合今日各客服录单数量;
  - 前端增加客服手动录单视图页面、路由与侧边栏导航,支持录单二次确认与细粒度权限控制;
  - 管理后台仪表盘增加今日客服手动录单卡片展示。
- 为什么:
  - 满足客服在后台手动登记外部业务编号需求,并便于运营按客服统计今日录单业绩和追溯对账。
- 验证方式:
  - 执行后端全量测试 go test ./... 与静态检查 go vet ./... 全部通过;
  - 执行前端代码门禁 npm run check 与 vite build 全部通过;
  - 执行 goose down/up 迁移回滚与应用测试通过,角色权限分配正确;
  - 本地 dev 联调 POST /api/admin/manual-entries 录单成功返回 201。
This commit is contained in:
yml2213
2026-10-12 14:52:24 +08:00
parent 5840b7da40
commit cca40940d5
20 changed files with 1267 additions and 12 deletions
@@ -0,0 +1,83 @@
.manual-entry-form-card,
.manual-entry-list-card {
background: #ffffff;
border: 1px solid rgba(226, 232, 240, 0.8);
border-radius: 16px;
padding: 22px 24px;
box-shadow:
0 1px 3px rgba(15, 23, 42, 0.04),
0 4px 12px rgba(15, 23, 42, 0.02);
}
.manual-entry-list-card {
margin-top: 20px;
}
.manual-entry-form-head {
display: flex;
align-items: baseline;
justify-content: space-between;
gap: 12px;
margin-bottom: 16px;
}
.form-title {
font-size: 16px;
font-weight: 700;
color: #1e293b;
}
.form-hint {
font-size: 12px;
color: #94a3b8;
}
.manual-entry-form-grid {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr)) auto;
gap: 16px;
align-items: end;
}
.manual-entry-form-grid :deep(.el-form-item) {
margin-bottom: 0;
}
.manual-entry-submit {
display: flex;
align-items: center;
height: 32px;
}
.manual-entry-filter-row {
display: flex;
align-items: center;
gap: 10px;
flex-wrap: wrap;
margin-bottom: 16px;
}
.filter-entry-no {
width: 200px;
}
.filter-keyword {
width: 260px;
}
.filter-date {
width: 260px;
}
.mono-entry-no {
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
font-size: 13px;
font-weight: 600;
color: #1e3a8a;
}
@media (max-width: 1100px) {
.manual-entry-form-grid {
grid-template-columns: 1fr;
}
}