Add audit start and end dates to audits
ISO audits often span a window distinct from certificate validity. Store optional audit_start_date and audit_end_date on the audit record and expose them through GraphQL, MCP, CLI, n8n, and console. Signed-off-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Bryan FRIMIN <bryan@frimin.fr>
This commit is contained in:
committed by
Bryan Frimin
parent
dcb7ffa945
commit
fe215efbd1
@@ -1670,7 +1670,7 @@
|
||||
"messages": { "success": "Success", "error": "Error", "updated": "Audit updated successfully" },
|
||||
"deleteReportConfirmation": "This will permanently delete the audit report \"{{name}}\". This action cannot be undone.",
|
||||
"states": { "not_started": "Not Started", "in_progress": "In Progress", "completed": "Completed", "rejected": "Rejected", "outdated": "Outdated" },
|
||||
"fields": { "name": "Name", "namePlaceholder": "Audit name", "state": "State", "validFrom": "Valid From", "validUntil": "Valid Until" },
|
||||
"fields": { "name": "Name", "namePlaceholder": "Audit name", "state": "State", "validFrom": "Valid From", "validUntil": "Valid Until", "auditStartDate": "Audit Start Date", "auditEndDate": "Audit End Date" },
|
||||
"actions": { "delete": "Delete", "update": "Update", "updating": "Updating...", "download": "Download" },
|
||||
"report": { "title": "Audit Report", "uploaded": "Uploaded {{date}}", "uploadDescription": "Upload the final audit report document (PDF recommended)", "dropzoneDescription": "Only PDF up to 25MB are allowed" }
|
||||
},
|
||||
@@ -1691,7 +1691,7 @@
|
||||
"errors": { "create": "Failed to create audit" },
|
||||
"fileSize": "{{value}} MB",
|
||||
"loading": "Loading...",
|
||||
"fields": { "framework": "Framework", "frameworkPlaceholder": "Select a framework", "name": "Name", "namePlaceholder": "Audit name", "state": "State", "validFrom": "Valid From", "validUntil": "Valid Until" },
|
||||
"fields": { "framework": "Framework", "frameworkPlaceholder": "Select a framework", "name": "Name", "namePlaceholder": "Audit name", "state": "State", "validFrom": "Valid From", "validUntil": "Valid Until", "auditStartDate": "Audit Start Date", "auditEndDate": "Audit End Date" },
|
||||
"states": { "not_started": "Not Started", "in_progress": "In Progress", "completed": "Completed", "rejected": "Rejected", "outdated": "Outdated" },
|
||||
"actions": { "create": "Create" }
|
||||
},
|
||||
|
||||
@@ -3441,7 +3441,9 @@
|
||||
"namePlaceholder": "Nom de l’audit",
|
||||
"state": "État",
|
||||
"validFrom": "Valide à partir de",
|
||||
"validUntil": "Valide jusqu’au"
|
||||
"validUntil": "Valide jusqu’au",
|
||||
"auditStartDate": "Date de début de l’audit",
|
||||
"auditEndDate": "Date de fin de l’audit"
|
||||
},
|
||||
"actions": {
|
||||
"delete": "Supprimer",
|
||||
@@ -3519,7 +3521,9 @@
|
||||
"namePlaceholder": "Nom de l’audit",
|
||||
"state": "État",
|
||||
"validFrom": "Valide à partir de",
|
||||
"validUntil": "Valide jusqu’au"
|
||||
"validUntil": "Valide jusqu’au",
|
||||
"auditStartDate": "Date de début de l’audit",
|
||||
"auditEndDate": "Date de fin de l’audit"
|
||||
},
|
||||
"states": {
|
||||
"not_started": "Non commencé",
|
||||
|
||||
@@ -47,6 +47,8 @@ export const auditNodeQuery = graphql`
|
||||
name
|
||||
validFrom
|
||||
validUntil
|
||||
auditStartDate
|
||||
auditEndDate
|
||||
reportFile {
|
||||
id
|
||||
fileName
|
||||
@@ -91,6 +93,8 @@ export const createAuditMutation = graphql`
|
||||
name
|
||||
validFrom
|
||||
validUntil
|
||||
auditStartDate
|
||||
auditEndDate
|
||||
reportFile {
|
||||
id
|
||||
fileName
|
||||
@@ -117,6 +121,8 @@ export const updateAuditMutation = graphql`
|
||||
name
|
||||
validFrom
|
||||
validUntil
|
||||
auditStartDate
|
||||
auditEndDate
|
||||
reportFile {
|
||||
id
|
||||
fileName
|
||||
@@ -186,6 +192,8 @@ export const useCreateAudit = (connectionId: string) => {
|
||||
name?: string | null;
|
||||
validFrom?: string;
|
||||
validUntil?: string;
|
||||
auditStartDate?: string;
|
||||
auditEndDate?: string;
|
||||
reportKey?: string;
|
||||
state?: string;
|
||||
file?: File | null;
|
||||
@@ -205,6 +213,8 @@ export const useCreateAudit = (connectionId: string) => {
|
||||
name: input.name,
|
||||
validFrom: input.validFrom,
|
||||
validUntil: input.validUntil,
|
||||
auditStartDate: input.auditStartDate,
|
||||
auditEndDate: input.auditEndDate,
|
||||
reportKey: input.reportKey,
|
||||
state: input.state || "NOT_STARTED",
|
||||
file: input.file ? null : undefined,
|
||||
@@ -226,6 +236,8 @@ export const useUpdateAudit = () => {
|
||||
name?: string | null;
|
||||
validFrom?: string | null;
|
||||
validUntil?: string | null;
|
||||
auditStartDate?: string | null;
|
||||
auditEndDate?: string | null;
|
||||
state?: string;
|
||||
}) => {
|
||||
if (!input.id) {
|
||||
|
||||
@@ -69,6 +69,8 @@ const updateAuditSchema = z.object({
|
||||
name: z.string().nullable().optional(),
|
||||
validFrom: z.string().optional(),
|
||||
validUntil: z.string().optional(),
|
||||
auditStartDate: z.string().optional(),
|
||||
auditEndDate: z.string().optional(),
|
||||
state: z.enum([
|
||||
"NOT_STARTED",
|
||||
"IN_PROGRESS",
|
||||
@@ -104,6 +106,8 @@ export default function AuditDetailsPage(props: Props) {
|
||||
name: auditEntry.name || null,
|
||||
validFrom: auditEntry.validFrom?.split("T")[0] || "",
|
||||
validUntil: auditEntry.validUntil?.split("T")[0] || "",
|
||||
auditStartDate: auditEntry.auditStartDate?.split("T")[0] || "",
|
||||
auditEndDate: auditEntry.auditEndDate?.split("T")[0] || "",
|
||||
state: auditEntry.state || "NOT_STARTED",
|
||||
},
|
||||
});
|
||||
@@ -123,6 +127,8 @@ export default function AuditDetailsPage(props: Props) {
|
||||
name: formData.name || null,
|
||||
validFrom: formatDatetime(formData.validFrom) ?? null,
|
||||
validUntil: formatDatetime(formData.validUntil) ?? null,
|
||||
auditStartDate: formatDatetime(formData.auditStartDate) ?? null,
|
||||
auditEndDate: formatDatetime(formData.auditEndDate) ?? null,
|
||||
state: formData.state,
|
||||
});
|
||||
reset(formData);
|
||||
@@ -243,6 +249,14 @@ export default function AuditDetailsPage(props: Props) {
|
||||
<Input {...register("validUntil")} type="date" />
|
||||
</Field>
|
||||
|
||||
<Field label={t("auditDetailsPage.fields.auditStartDate")}>
|
||||
<Input {...register("auditStartDate")} type="date" />
|
||||
</Field>
|
||||
|
||||
<Field label={t("auditDetailsPage.fields.auditEndDate")}>
|
||||
<Input {...register("auditEndDate")} type="date" />
|
||||
</Field>
|
||||
|
||||
<div className="flex justify-end">
|
||||
{formState.isDirty && auditEntry.canUpdate && (
|
||||
<Button type="submit" disabled={formState.isSubmitting}>
|
||||
|
||||
@@ -92,6 +92,8 @@ export function CreateAuditDialog({
|
||||
name: z.string().optional(),
|
||||
validFrom: z.string().optional(),
|
||||
validUntil: z.string().optional(),
|
||||
auditStartDate: z.string().optional(),
|
||||
auditEndDate: z.string().optional(),
|
||||
state: z.enum([
|
||||
"NOT_STARTED",
|
||||
"IN_PROGRESS",
|
||||
@@ -107,6 +109,8 @@ export function CreateAuditDialog({
|
||||
name: "",
|
||||
validFrom: "",
|
||||
validUntil: "",
|
||||
auditStartDate: "",
|
||||
auditEndDate: "",
|
||||
state: "NOT_STARTED",
|
||||
},
|
||||
});
|
||||
@@ -122,6 +126,8 @@ export function CreateAuditDialog({
|
||||
name: data.name || null,
|
||||
validFrom: formatDatetime(data.validFrom),
|
||||
validUntil: formatDatetime(data.validUntil),
|
||||
auditStartDate: formatDatetime(data.auditStartDate),
|
||||
auditEndDate: formatDatetime(data.auditEndDate),
|
||||
state: data.state,
|
||||
file: file ?? null,
|
||||
});
|
||||
@@ -229,6 +235,12 @@ export function CreateAuditDialog({
|
||||
<Field label={t("createAuditDialog.fields.validUntil")}>
|
||||
<Input {...register("validUntil")} type="date" />
|
||||
</Field>
|
||||
<Field label={t("createAuditDialog.fields.auditStartDate")}>
|
||||
<Input {...register("auditStartDate")} type="date" />
|
||||
</Field>
|
||||
<Field label={t("createAuditDialog.fields.auditEndDate")}>
|
||||
<Input {...register("auditEndDate")} type="date" />
|
||||
</Field>
|
||||
</DialogContent>
|
||||
<DialogFooter>
|
||||
<Button disabled={formState.isSubmitting} type="submit">
|
||||
@@ -245,6 +257,8 @@ type FormSchema = {
|
||||
name?: string;
|
||||
validFrom?: string;
|
||||
validUntil?: string;
|
||||
auditStartDate?: string;
|
||||
auditEndDate?: string;
|
||||
state: "NOT_STARTED" | "IN_PROGRESS" | "COMPLETED" | "REJECTED" | "OUTDATED";
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user