diff --git a/admin/filter_clear_template_test.go b/admin/filter_clear_template_test.go
new file mode 100644
index 0000000..ed2c54a
--- /dev/null
+++ b/admin/filter_clear_template_test.go
@@ -0,0 +1,51 @@
+package main
+
+import (
+ "os"
+ "strings"
+ "testing"
+)
+
+func TestListFilterTemplates_清除入口紧邻搜索且只保留必要参数(t *testing.T) {
+ tests := []struct {
+ name string
+ path string
+ clearURL string
+ }{
+ {
+ name: "蝦皮数据保留独立查看范围",
+ path: "templates/shopee/list.html",
+ clearURL: `/shopee?{{if .DeletedFilter}}deleted=1&{{end}}{{if .UnlinkedFilter}}unlinked=1&{{end}}page_size={{.CurrentPageSize}}`,
+ },
+ {name: "PDD 商品", path: "templates/pdd/list.html", clearURL: `/pdd?page_size={{.CurrentPageSize}}`},
+ {name: "采集采购", path: "templates/task/list.html", clearURL: `/tasks?page_size={{.CurrentPageSize}}`},
+ {name: "客户端列表", path: "templates/client/list.html", clearURL: `/clients?page_size={{.CurrentPageSize}}`},
+ {name: "用户管理", path: "templates/user/list.html", clearURL: `/users?page_size={{.CurrentPageSize}}`},
+ }
+
+ for _, tt := range tests {
+ t.Run(tt.name, func(t *testing.T) {
+ raw, err := os.ReadFile(tt.path)
+ if err != nil {
+ t.Fatal(err)
+ }
+ page := string(raw)
+ clearLink := `class="button-link" href="` + tt.clearURL + `">清除`
+ clearIndex := strings.Index(page, clearLink)
+ if clearIndex < 0 {
+ t.Fatalf("缺少清除入口或链接参数不正确: %s", clearLink)
+ }
+ searchIndex := strings.Index(page[clearIndex:], ``)
+ if searchIndex < 0 {
+ t.Fatal("清除入口后没有搜索按钮")
+ }
+ between := page[clearIndex+len(clearLink) : clearIndex+searchIndex]
+ if strings.Contains(between, "