feat(ops): ECR-007 行为分析与 ECR-008 内容运营后台
落地埋点 ingest/数据看板、首页宫格 CMS 与测评上下架;含账号引导、问答流式与免责声明去重,以及 review P1 审计同事务修复。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
package analytics
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestScrubDwellNonNeg(t *testing.T) {
|
||||
_, end, err := scrubProps("page_leave", map[string]interface{}{
|
||||
"dwell_ms": float64(1200),
|
||||
"phone": "13800000000",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if end != nil {
|
||||
t.Fatal("page_leave should not produce session end")
|
||||
}
|
||||
_, end, err = scrubProps("session_end", map[string]interface{}{
|
||||
"exit_page": "/ask",
|
||||
"duration_ms": float64(5000),
|
||||
"birthday": "1990-01-01",
|
||||
})
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if end == nil || end.ExitPage != "/ask" || end.DurationMs != 5000 {
|
||||
t.Fatalf("bad end: %+v", end)
|
||||
}
|
||||
_, _, err = scrubProps("page_leave", map[string]interface{}{"dwell_ms": float64(-1)})
|
||||
if err != ErrInvalidBatch {
|
||||
t.Fatalf("want ErrInvalidBatch for negative dwell, got %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseDayRange(t *testing.T) {
|
||||
from, to, err := ParseDayRange("2026-08-01", "2026-08-07")
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if to.Sub(from).Hours() != 7*24 {
|
||||
t.Fatalf("range=%v", to.Sub(from))
|
||||
}
|
||||
_, _, err = ParseDayRange("2026-08-07", "2026-08-01")
|
||||
if err != ErrInvalidBatch {
|
||||
t.Fatalf("want invalid, got %v", err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user