feat: add total waste card to dashboard and import 22 real users

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
seaislee1209 2026-02-12 18:01:54 +08:00
parent 6ac44d47fb
commit 8aa8b805a4
4 changed files with 43 additions and 3 deletions

Binary file not shown.

View File

@ -93,8 +93,12 @@ def get_dashboard(
# 损耗排行
waste_ranking = []
total_waste_seconds_all = 0.0
total_target_seconds_all = 0.0
for p in active + completed:
w = calc_waste_for_project(p.id, db)
total_waste_seconds_all += w.get("total_waste_seconds", 0)
total_target_seconds_all += p.target_total_seconds or 0
if w.get("total_waste_seconds", 0) > 0:
waste_ranking.append({
"project_id": p.id,
@ -103,6 +107,7 @@ def get_dashboard(
"waste_rate": w["waste_rate"],
})
waste_ranking.sort(key=lambda x: x["waste_rate"], reverse=True)
total_waste_rate = round(total_waste_seconds_all / total_target_seconds_all * 100, 1) if total_target_seconds_all > 0 else 0
# 已结算项目
settled = []
@ -206,6 +211,8 @@ def get_dashboard(
"monthly_total_seconds": round(monthly_secs, 1),
"avg_daily_seconds_per_person": avg_daily,
"projects": project_summaries,
"total_waste_seconds": round(total_waste_seconds_all, 0),
"total_waste_rate": total_waste_rate,
"waste_ranking": waste_ranking,
"settled_projects": settled,
"profitability": profitability,

View File

@ -1,7 +1,7 @@
<template>
<div class="dashboard" v-loading="loading">
<!-- 顶部统计卡片 -->
<div class="stat-grid six">
<div class="stat-grid">
<div class="stat-card">
<div class="stat-icon blue"><el-icon :size="20"><FolderOpened /></el-icon></div>
<div class="stat-body">
@ -52,6 +52,17 @@
<div class="stat-label">利润率</div>
</div>
</div>
<div class="stat-card">
<div class="stat-icon" :class="(data.total_waste_rate || 0) > 20 ? 'red' : 'orange'">
<el-icon :size="20"><WarnTriangleFilled /></el-icon>
</div>
<div class="stat-body">
<div class="stat-value" :style="{color: (data.total_waste_rate || 0) > 20 ? '#FF3B30' : '#FF9500'}">
{{ data.total_waste_rate || 0 }}%
</div>
<div class="stat-label">总损耗率{{ formatSecs(data.total_waste_seconds) }}</div>
</div>
</div>
</div>
<!-- 图表行产出趋势 + 成本构成 -->
@ -329,8 +340,7 @@ onUnmounted(() => {
<style scoped>
/* 统计网格 */
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 20px; }
.stat-grid.six { grid-template-columns: repeat(6, 1fr); }
@media (max-width: 1200px) { .stat-grid.six { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1200px) { .stat-grid { grid-template-columns: repeat(2, 1fr); } }
.stat-card {
background: var(--bg-card); border: 1px solid var(--border-color);
border-radius: var(--radius-md); padding: 20px; display: flex; align-items: center; gap: 16px;

23
人员清单.md Normal file
View File

@ -0,0 +1,23 @@
序号 姓名 职级 职位 工资 社保
1 胡皓南 主管 总导演 15929.52 1904.11
2 邓庆瑞 主管 AI导演 12429.52 1904.11
3 邱绍辉 主管 制片 9429.52 1,904.11
4 陈保丹 组长 动画制作 6729.52 2,159.11
5 代晓倩 组员 动画制作 4000 1,904.11
6 谭如平 组员 动画制作 3000 1,904.11
7 马若情 组长 AI导演 4000 1,904.11
8 郑奕晴 组员 动画制作 3000 1,904.11
9 韦春利 组长 AI导演 4000 1,904.11
10 黄雪雯 组员 动画制作 3000
11 潘梓彦 组长 剪辑 5000 1,904.11
12 刘诗琪 组员 动画制作 3000 1,904.11
13 戴玮 组员 动画制作 3000 1,904.11
14 黄溶莹 组员 编剧 3000 11.02
15 贾浩正 组员 剪辑 3000 11.02
16 王炎森 组员 剪辑 3000 11.02
17 黄秋霞 组员 动画制作 3000 11.02
18 李晶 组员 动画制作 3000 11.02
19 叶美莲 组员 动画制作 3000 11.02
20 陈煊颖 组员 动画制作 3000 11.02
21 土豆 Owner CTO 10000 1,904.11
22 青椒 Owner CEO 10000 1,904.11