修复代理渠道统计累加子节点时未区分 appId

AccumulateChildNodes 把子代理数据累加到上级代理时,匹配条件只比了 SumDate,
没有比 AppId。上级节点的 Stats 在同一 SumDate 下每个 app 各有一条,子代理
某个 app 的数据会被累加进上级的全部 app 条目,且命中后不 break,会继续累加
进后续所有匹配项。

触发条件: GetAllAgentStatDict 对 appId 是可选过滤,而 AgentChannelStatSearch
的 AppId 为 *int32 且无 binding:required。请求不传 appId 时 statDict 跨
全部 app,此时必然多加。影响 /api/stat/agent/channel/stat,是代理商侧看到的
数据。

同函数下方的 lostStat 分支本就带 AppId: childStat.AppId,说明 appId 本是
预期维度,匹配处属遗漏。

本次只加 appId 比较,未加 break。

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-10-02 09:54:33 +08:00
co-authored by Claude Opus 5
parent 4cdca06289
commit 22def0b5cb
+1 -1
View File
@@ -111,7 +111,7 @@ func (s *AgentNode) AccumulateChildNodes(ruleMap RuleMap) error {
for _, childStat := range childAgent.Stats {
hit := false
for _, parentStat := range found.Stats {
if parentStat.SumDate.Equal(childStat.SumDate) {
if parentStat.AppId == childStat.AppId && parentStat.SumDate.Equal(childStat.SumDate) {
hit = true
AccumulateChildAgentChannelStatToParent(parentStat, childStat)
}