feat(tests): add Detect Procedure UI, template suggested-procedure editing, lead review panel
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Aegis CI / lint-and-test (push) Has been cancelled
Snyk Security Scan / Python vulnerabilities (backend) (push) Has been cancelled
Snyk Security Scan / npm vulnerabilities (frontend) (push) Has been cancelled
Snyk Security Scan / Docker image vulnerabilities (backend) (push) Has been cancelled
Blue Team gets a Detect Procedure textarea in the test detail view, mirroring Red's Attack Procedure field. Template create/edit forms gain a Detect Suggested Procedure field for leads to curate directly. Leads also get a Procedure Suggestions panel on the Tests page, scoped to their own team by the backend, to approve or reject suggestions extracted from submitted rounds.
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import client from "./client";
|
||||
import type { ProcedureSuggestion } from "../types/models";
|
||||
|
||||
/** List pending procedure suggestions, scoped to the caller's team (admins see both). */
|
||||
export async function getProcedureSuggestions(): Promise<ProcedureSuggestion[]> {
|
||||
const { data } = await client.get<ProcedureSuggestion[]>("/procedure-suggestions");
|
||||
return data;
|
||||
}
|
||||
|
||||
/** Approve a suggestion — writes it into the template's suggested-procedure field. */
|
||||
export async function approveProcedureSuggestion(id: string): Promise<ProcedureSuggestion> {
|
||||
const { data } = await client.post<ProcedureSuggestion>(`/procedure-suggestions/${id}/approve`);
|
||||
return data;
|
||||
}
|
||||
|
||||
/** Reject a suggestion — the template is left untouched. */
|
||||
export async function rejectProcedureSuggestion(id: string): Promise<ProcedureSuggestion> {
|
||||
const { data } = await client.post<ProcedureSuggestion>(`/procedure-suggestions/${id}/reject`);
|
||||
return data;
|
||||
}
|
||||
@@ -24,6 +24,7 @@ export interface CreateTemplatePayload {
|
||||
source_url?: string;
|
||||
attack_procedure?: string;
|
||||
expected_detection?: string;
|
||||
detect_suggested_procedure?: string;
|
||||
platform?: string;
|
||||
tool_suggested?: string;
|
||||
severity?: string;
|
||||
|
||||
@@ -46,6 +46,7 @@ export interface BlueUpdatePayload {
|
||||
detection_time?: string;
|
||||
containment_time?: string;
|
||||
blue_summary?: string;
|
||||
detect_procedure?: string;
|
||||
}
|
||||
|
||||
export interface RedValidationPayload {
|
||||
|
||||
Reference in New Issue
Block a user