fix: 第24轮搜索审计修复 — 日期intersect/NOT深度/re.ASCII统一等15项
CI / backend (push) Canceled after 0s
CI / frontend (push) Canceled after 0s

R24 修复清单:
- H2 (CRITICAL): _dispatch_term 7个日期字段改为intersect模式,防止单日期覆盖已设范围
- H1 (MEDIUM): 混合日期范围交换 >= → >
- BUG-1: keyset游标只使用pub_date,忽略article_date
- BUG-2: 纯*通配符返回text("FALSE")
- BUG-3: page_size上限100
- BUG-4: tag_ids上限200
- BUG-5: _escape_ilike先反转义再转义,避免双重转义
- BUG-6/7/8: _has_any_filter query.strip、数字PMID、_phrase_terms_set NameError
- M1: _parse_not_expr添加深度守卫(MAX_PAREN_DEPTH)
- M3: is_pubmed_syntax添加re.ASCII与_TOKEN_RE一致
- 前端: router.replace → push
- 文档: 追加R24修复记录
This commit is contained in:
34047007@qq.com
2026-07-28 18:42:04 +08:00
parent c1674c602d
commit f8db720419
4 changed files with 353 additions and 55 deletions
+2 -1
View File
@@ -548,7 +548,8 @@ function syncSearchToUrl() {
// 页码持久化到 URLKeyset 排序使用 keyset 页码,offset 排序使用 offset 页码)
const currentPage = KEYSET_SORTS.has(sort.value) ? keysetPage.value : page.value
if (currentPage > 1) q.p = String(currentPage)
router.replace({ query: q }).catch(() => {})
// R24: use push instead of replace to preserve browser back-button history
router.push({ query: q }).catch(() => {})
}
function resetAllFilters() {