feat(intel): major intel scan improvements + Review Queue integration
Backend:
- intel_service: remove 50-technique limit (scan all techniques), improve
pattern matching with word boundaries (\bT1059\b), raise min name length
to 8 chars to reduce false positives, skip entries with empty titles
- technique_query_service: add intel_items to get_technique_detail() so
the technique page now shows recent threat intel articles (last 20)
- New GET /intel/items endpoint with optional technique_id filter
Frontend:
- New api/intel.ts with listIntelItems()
- ReviewQueuePage: complete redesign
* Expandable rows — click a technique to see its intel articles inline
* IntelPanel component fetches articles per technique on expand
* 'Create Template from Intel' button opens pre-filled modal:
name (from article title), source_url (article link), technique_id
User reads the article and fills the attack procedure
* Updated explanation text: lists all 3 reasons a technique can be flagged
(MITRE update / intel scan / new template or detection rule)
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import client from "./client";
|
||||
|
||||
export interface IntelItem {
|
||||
id: string;
|
||||
technique_id: string | null;
|
||||
url: string;
|
||||
title: string | null;
|
||||
source: string | null;
|
||||
detected_at: string | null;
|
||||
reviewed: boolean;
|
||||
}
|
||||
|
||||
/** Fetch intel items, optionally filtered by technique UUID. */
|
||||
export async function listIntelItems(
|
||||
techniqueId?: string,
|
||||
limit = 50,
|
||||
): Promise<IntelItem[]> {
|
||||
const params: Record<string, string | number> = { limit };
|
||||
if (techniqueId) params.technique_id = techniqueId;
|
||||
const { data } = await client.get<IntelItem[]>("/intel/items", { params });
|
||||
return data;
|
||||
}
|
||||
Reference in New Issue
Block a user