From 0a327328f363eac9c1d1821e60c3aaa5e3ffe018 Mon Sep 17 00:00:00 2001 From: RuoJi6 Date: Fri, 23 Oct 2026 18:09:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8F=91=E7=8E=B0?= =?UTF-8?q?=E8=BF=94=E5=9B=9E=E5=AF=BC=E8=88=AA(#34)=E4=B8=8E=E6=83=85?= =?UTF-8?q?=E6=8A=A5=E5=86=85=E5=AE=B9=E6=90=9C=E7=B4=A2=E5=8F=8A=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=AF=B9=E8=AF=9D(#38)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - #34: 任务发现页进入漏洞报告详情后,「←返回」回到该任务的发现页 (/function/tasks/detail?id=&tab=findings),而非全局发现列表。 任务自身的 FindingCaseList 与原始上报列表「详情」链接均携带 context_task。 - #38: 情报搜索除标题/上报者外,同时匹配内容(content)与来源证据(evidence)。 - #38: 修复「查看对话」点击无反应:任务详情页标签切换同步写入 URL 的 tab 参数, 使跳转 tab=sessions&session=... 时能正确切换到会话并打开对应会话。 Closes #34 Closes #38 --- db/intelligence.go | 4 ++-- web/src/app/(main)/function/findings/detail/page.tsx | 5 +++-- .../function/tasks/detail/_tabs/findings-tab.tsx | 8 ++------ web/src/app/(main)/function/tasks/detail/page.tsx | 12 +++++++++++- web/src/components/intelligence-panel.tsx | 4 ++-- 5 files changed, 20 insertions(+), 13 deletions(-) diff --git a/db/intelligence.go b/db/intelligence.go index a9fc6e9..a559c50 100644 --- a/db/intelligence.go +++ b/db/intelligence.go @@ -260,8 +260,8 @@ func (d *DB) ListIntelligence(ctx context.Context, f IntelligenceFilter) (*Intel if err != nil { return nil, err } - // Search titles and reporters; return the recorded content directly in each row. - where := scope + ` AND ($3='' OR kind=$3) AND ($4='' OR i.status=$4) AND ($5='' OR i.title ILIKE '%'||$5||'%' OR i.worker ILIKE '%'||$5||'%')` + // Search titles, content, evidence, and reporters; return the recorded content directly in each row. + where := scope + ` AND ($3='' OR kind=$3) AND ($4='' OR i.status=$4) AND ($5='' OR i.title ILIKE '%'||$5||'%' OR i.content ILIKE '%'||$5||'%' OR i.evidence ILIKE '%'||$5||'%' OR i.worker ILIKE '%'||$5||'%')` args = append(args, f.Kind, f.Status, f.Query) if err = d.QueryRowContext(ctx, `SELECT count(*)`+where, args...).Scan(&page.Total); err != nil { return nil, err diff --git a/web/src/app/(main)/function/findings/detail/page.tsx b/web/src/app/(main)/function/findings/detail/page.tsx index f771776..d4a640a 100644 --- a/web/src/app/(main)/function/findings/detail/page.tsx +++ b/web/src/app/(main)/function/findings/detail/page.tsx @@ -58,6 +58,7 @@ function FindingDetailInner() { const searchParams = useSearchParams(); const id = searchParams.get("id") ?? ""; const contextTaskId = searchParams.get("context_task") ?? ""; + const backHref = contextTaskId ? `/function/tasks/detail?id=${contextTaskId}&tab=findings` : "/function/findings"; const [finding, setFinding] = React.useState(null); const [loaded, setLoaded] = React.useState(false); const [tab, setTab] = React.useState("overview"); @@ -117,7 +118,7 @@ function FindingDetailInner() {

{loaded ? `未找到发现 ${id}` : "加载中…"}

{loaded && ( @@ -135,7 +136,7 @@ function FindingDetailInner() {
diff --git a/web/src/app/(main)/function/tasks/detail/_tabs/findings-tab.tsx b/web/src/app/(main)/function/tasks/detail/_tabs/findings-tab.tsx index b643264..ef7ed95 100644 --- a/web/src/app/(main)/function/tasks/detail/_tabs/findings-tab.tsx +++ b/web/src/app/(main)/function/tasks/detail/_tabs/findings-tab.tsx @@ -113,11 +113,7 @@ function Row({ {f.finding_id && ( @@ -190,7 +186,7 @@ export function FindingsTab({ taskId }: { taskId: string }) { return (
- + {[ ...new Set( items diff --git a/web/src/app/(main)/function/tasks/detail/page.tsx b/web/src/app/(main)/function/tasks/detail/page.tsx index 3c23d3e..6bf52f5 100644 --- a/web/src/app/(main)/function/tasks/detail/page.tsx +++ b/web/src/app/(main)/function/tasks/detail/page.tsx @@ -354,7 +354,17 @@ function TaskDetailInner() { ); return ( - + { + setTab(value); + const params = new URLSearchParams(searchParams.toString()); + params.set("tab", value); + params.delete("session"); + router.replace(`/function/tasks/detail?${params.toString()}`, { scroll: false }); + }} + className="flex flex-1 flex-col gap-0" + > {/* Top fixed area */}
diff --git a/web/src/components/intelligence-panel.tsx b/web/src/components/intelligence-panel.tsx index 81022fb..ae30a52 100644 --- a/web/src/components/intelligence-panel.tsx +++ b/web/src/components/intelligence-panel.tsx @@ -193,8 +193,8 @@ export function IntelligencePanel({
setSearch(e.target.value)}