Publish King campaign report (manual update)
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"title": "King · 当月 Campaign 表现",
|
"title": "King · 当月 Campaign 表现",
|
||||||
"generated_at": "2026-08-27T15:26:33+08:00",
|
"generated_at": "2026-08-27T15:50:27+08:00",
|
||||||
"timezone": "Asia/Shanghai",
|
"timezone": "Asia/Shanghai",
|
||||||
"period": {
|
"period": {
|
||||||
"start": "2026-08-01",
|
"start": "2026-08-01",
|
||||||
@@ -29,7 +29,7 @@
|
|||||||
"completion": {
|
"completion": {
|
||||||
"revenue": 27.47,
|
"revenue": 27.47,
|
||||||
"gp": 19.52,
|
"gp": 19.52,
|
||||||
"gp_rate": 71.05
|
"gp_rate": null
|
||||||
},
|
},
|
||||||
"time_progress_percent": 83.87,
|
"time_progress_percent": 83.87,
|
||||||
"month_days": 31,
|
"month_days": 31,
|
||||||
@@ -1196,6 +1196,6 @@
|
|||||||
"performance_cost": "Cost 取 Sands Report 2.0 的 Cost 合计,需本地抓取",
|
"performance_cost": "Cost 取 Sands Report 2.0 的 Cost 合计,需本地抓取",
|
||||||
"performance_gp": "GP = Revenue − Cost;GP rate = GP ÷ Revenue × 100",
|
"performance_gp": "GP = Revenue − Cost;GP rate = GP ÷ Revenue × 100",
|
||||||
"performance_target": "Target 来自 Oversea FY2627 Monthly FFR 表 King 行",
|
"performance_target": "Target 来自 Oversea FY2627 Monthly FFR 表 King 行",
|
||||||
"performance_completion": "完成率 = 实际 ÷ Target × 100;Target 为整月目标"
|
"performance_completion": "完成率 = 实际 ÷ Target × 100,仅用于 Revenue 与 GP;GP rate 为比率,只看与目标的百分点差距"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
+8
-1
@@ -232,10 +232,17 @@ function renderPerformance(){
|
|||||||
const color=diff>=0?'#23a673':'#e4568b';
|
const color=diff>=0?'#23a673':'#e4568b';
|
||||||
return `<span style="color:${color}">${diff>=0?'+':''}${num(diff,2)} pt</span>`;
|
return `<span style="color:${color}">${diff>=0?'+':''}${num(diff,2)} pt</span>`;
|
||||||
};
|
};
|
||||||
|
/* 比率不做完成率,只看与目标的百分点差距 */
|
||||||
|
const ratePoints=(actualRate,targetRate)=>{
|
||||||
|
if(!ok(actualRate)||!ok(targetRate))return '—';
|
||||||
|
const diff=Number(actualRate)-Number(targetRate);
|
||||||
|
const color=diff>=0?'#23a673':'#e4568b';
|
||||||
|
return `<span style="color:${color}" title="实际 GP rate 与目标的差距">${diff>=0?'+':''}${num(diff,2)} pt</span>`;
|
||||||
|
};
|
||||||
const rows=[
|
const rows=[
|
||||||
['Revenue',usd(target.revenue),usd(actual.revenue),pct(done.revenue),gap(done.revenue)],
|
['Revenue',usd(target.revenue),usd(actual.revenue),pct(done.revenue),gap(done.revenue)],
|
||||||
['GP',usd(target.gp),usd(actual.gp),pct(done.gp),gap(done.gp)],
|
['GP',usd(target.gp),usd(actual.gp),pct(done.gp),gap(done.gp)],
|
||||||
['GP rate',pct(target.gp_rate),pct(actual.gp_rate),pct(done.gp_rate),'—']
|
['GP rate',pct(target.gp_rate),pct(actual.gp_rate),'—',ratePoints(actual.gp_rate,target.gp_rate)]
|
||||||
];
|
];
|
||||||
$('perfRows').innerHTML=rows.map(row=>`<tr><td>${row[0]}</td><td>${row[1]}</td><td>${row[2]}</td><td>${row[3]}</td><td>${row[4]}</td></tr>`).join('')
|
$('perfRows').innerHTML=rows.map(row=>`<tr><td>${row[0]}</td><td>${row[1]}</td><td>${row[2]}</td><td>${row[3]}</td><td>${row[4]}</td></tr>`).join('')
|
||||||
+`<tr class="total-row"><td>Cost(Sands)</td><td>—</td><td>${usd(actual.cost)}</td><td>—</td><td>—</td></tr>`;
|
+`<tr class="total-row"><td>Cost(Sands)</td><td>—</td><td>${usd(actual.cost)}</td><td>—</td><td>—</td></tr>`;
|
||||||
|
|||||||
@@ -425,7 +425,8 @@ def build_performance(revenue, sands, targets, period_days, month_days):
|
|||||||
"completion": {
|
"completion": {
|
||||||
"revenue": ratio(revenue, targets.get("revenue") if targets else None),
|
"revenue": ratio(revenue, targets.get("revenue") if targets else None),
|
||||||
"gp": ratio(gp, targets.get("gp") if targets else None),
|
"gp": ratio(gp, targets.get("gp") if targets else None),
|
||||||
"gp_rate": ratio(gp_rate, target_gp_rate),
|
# GP rate 是比率,不计算完成率;页面显示与目标的百分点差距
|
||||||
|
"gp_rate": None,
|
||||||
},
|
},
|
||||||
"time_progress_percent": round(period_days / month_days * 100, 2) if month_days else None,
|
"time_progress_percent": round(period_days / month_days * 100, 2) if month_days else None,
|
||||||
"month_days": month_days,
|
"month_days": month_days,
|
||||||
@@ -558,7 +559,7 @@ def build_payload(now):
|
|||||||
"performance_cost": "Cost 取 Sands Report 2.0 的 Cost 合计,需本地抓取",
|
"performance_cost": "Cost 取 Sands Report 2.0 的 Cost 合计,需本地抓取",
|
||||||
"performance_gp": "GP = Revenue − Cost;GP rate = GP ÷ Revenue × 100",
|
"performance_gp": "GP = Revenue − Cost;GP rate = GP ÷ Revenue × 100",
|
||||||
"performance_target": "Target 来自 Oversea FY2627 Monthly FFR 表 King 行",
|
"performance_target": "Target 来自 Oversea FY2627 Monthly FFR 表 King 行",
|
||||||
"performance_completion": "完成率 = 实际 ÷ Target × 100;Target 为整月目标",
|
"performance_completion": "完成率 = 实际 ÷ Target × 100,仅用于 Revenue 与 GP;GP rate 为比率,只看与目标的百分点差距",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user