feat: implement final approval gate workflow and checklist
This commit is contained in:
@@ -2075,6 +2075,215 @@
|
||||
"title": "EvidenceUpdateRequest",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalApprovalChecklistItemSummary": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"blocker": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Blocker"
|
||||
},
|
||||
"completed": {
|
||||
"title": "Completed",
|
||||
"type": "boolean"
|
||||
},
|
||||
"key": {
|
||||
"minLength": 1,
|
||||
"title": "Key",
|
||||
"type": "string"
|
||||
},
|
||||
"title": {
|
||||
"minLength": 1,
|
||||
"title": "Title",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"key",
|
||||
"title",
|
||||
"completed"
|
||||
],
|
||||
"title": "FinalApprovalChecklistItemSummary",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalApprovalChecklistResponse": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"article_id": {
|
||||
"format": "uuid",
|
||||
"title": "Article Id",
|
||||
"type": "string"
|
||||
},
|
||||
"blockers": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Blockers",
|
||||
"type": "array"
|
||||
},
|
||||
"can_approve": {
|
||||
"title": "Can Approve",
|
||||
"type": "boolean"
|
||||
},
|
||||
"completed_items": {
|
||||
"items": {
|
||||
"type": "string"
|
||||
},
|
||||
"title": "Completed Items",
|
||||
"type": "array"
|
||||
},
|
||||
"draft_version": {
|
||||
"anyOf": [
|
||||
{
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Draft Version"
|
||||
},
|
||||
"items": {
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/FinalApprovalChecklistItemSummary"
|
||||
},
|
||||
"title": "Items",
|
||||
"type": "array"
|
||||
},
|
||||
"requested_draft_version": {
|
||||
"anyOf": [
|
||||
{
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Requested Draft Version"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"article_id",
|
||||
"can_approve"
|
||||
],
|
||||
"title": "FinalApprovalChecklistResponse",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalApprovalPublishingSettings": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"author": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Author"
|
||||
},
|
||||
"content_path": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Content Path"
|
||||
},
|
||||
"frontmatter": {
|
||||
"anyOf": [
|
||||
{
|
||||
"additionalProperties": true,
|
||||
"type": "object"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Frontmatter"
|
||||
},
|
||||
"publishing_mode": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Publishing Mode"
|
||||
}
|
||||
},
|
||||
"title": "FinalApprovalPublishingSettings",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalApprovalRequest": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"draft_version": {
|
||||
"anyOf": [
|
||||
{
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Draft Version"
|
||||
},
|
||||
"publishing_settings": {
|
||||
"anyOf": [
|
||||
{
|
||||
"$ref": "#/components/schemas/FinalApprovalPublishingSettings"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null
|
||||
}
|
||||
},
|
||||
"title": "FinalApprovalRequest",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalApprovalResponse": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"article": {
|
||||
"$ref": "#/components/schemas/ArticleSummary"
|
||||
},
|
||||
"checklist": {
|
||||
"$ref": "#/components/schemas/FinalApprovalChecklistResponse"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"article",
|
||||
"checklist"
|
||||
],
|
||||
"title": "FinalApprovalResponse",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalReviewIssueSummary": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
@@ -2144,6 +2353,55 @@
|
||||
"title": "FinalReviewIssuesResponse",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalRevisionRequest": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"draft_version": {
|
||||
"anyOf": [
|
||||
{
|
||||
"minimum": 1,
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Draft Version"
|
||||
},
|
||||
"reason": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"default": null,
|
||||
"title": "Reason"
|
||||
}
|
||||
},
|
||||
"title": "FinalRevisionRequest",
|
||||
"type": "object"
|
||||
},
|
||||
"FinalRevisionRequestResponse": {
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"article": {
|
||||
"$ref": "#/components/schemas/ArticleSummary"
|
||||
},
|
||||
"checklist": {
|
||||
"$ref": "#/components/schemas/FinalApprovalChecklistResponse"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"article",
|
||||
"checklist"
|
||||
],
|
||||
"title": "FinalRevisionRequestResponse",
|
||||
"type": "object"
|
||||
},
|
||||
"HTTPValidationError": {
|
||||
"properties": {
|
||||
"detail": {
|
||||
@@ -5552,6 +5810,134 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/articles/{article_id}/final-approval": {
|
||||
"post": {
|
||||
"operationId": "post_article_final_approval_api_articles__article_id__final_approval_post",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "article_id",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"title": "Article Id",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "header",
|
||||
"name": "X-Demo-User-Email",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "X-Demo-User-Email"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/FinalApprovalRequest"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/FinalApprovalResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Successful Response"
|
||||
},
|
||||
"422": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HTTPValidationError"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Validation Error"
|
||||
}
|
||||
},
|
||||
"summary": "Post Article Final Approval",
|
||||
"tags": [
|
||||
"final-approval"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/articles/{article_id}/final-approval/checklist": {
|
||||
"get": {
|
||||
"operationId": "get_article_final_approval_checklist_api_articles__article_id__final_approval_checklist_get",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "article_id",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"title": "Article Id",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "header",
|
||||
"name": "X-Demo-User-Email",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "X-Demo-User-Email"
|
||||
}
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/FinalApprovalChecklistResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Successful Response"
|
||||
},
|
||||
"422": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HTTPValidationError"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Validation Error"
|
||||
}
|
||||
},
|
||||
"summary": "Get Article Final Approval Checklist",
|
||||
"tags": [
|
||||
"final-approval"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/articles/{article_id}/final-review/issues": {
|
||||
"get": {
|
||||
"operationId": "get_article_final_review_issues_api_articles__article_id__final_review_issues_get",
|
||||
@@ -5611,6 +5997,75 @@
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/articles/{article_id}/final-revision-request": {
|
||||
"post": {
|
||||
"operationId": "post_article_final_revision_request_api_articles__article_id__final_revision_request_post",
|
||||
"parameters": [
|
||||
{
|
||||
"in": "path",
|
||||
"name": "article_id",
|
||||
"required": true,
|
||||
"schema": {
|
||||
"format": "uuid",
|
||||
"title": "Article Id",
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"in": "header",
|
||||
"name": "X-Demo-User-Email",
|
||||
"required": false,
|
||||
"schema": {
|
||||
"anyOf": [
|
||||
{
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"type": "null"
|
||||
}
|
||||
],
|
||||
"title": "X-Demo-User-Email"
|
||||
}
|
||||
}
|
||||
],
|
||||
"requestBody": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/FinalRevisionRequest"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": true
|
||||
},
|
||||
"responses": {
|
||||
"200": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/FinalRevisionRequestResponse"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Successful Response"
|
||||
},
|
||||
"422": {
|
||||
"content": {
|
||||
"application/json": {
|
||||
"schema": {
|
||||
"$ref": "#/components/schemas/HTTPValidationError"
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Validation Error"
|
||||
}
|
||||
},
|
||||
"summary": "Post Article Final Revision Request",
|
||||
"tags": [
|
||||
"final-approval"
|
||||
]
|
||||
}
|
||||
},
|
||||
"/api/articles/{article_id}/final/approve": {
|
||||
"post": {
|
||||
"operationId": "post_final_approve_api_articles__article_id__final_approve_post",
|
||||
|
||||
@@ -349,6 +349,40 @@ export type EvidenceUpdateRequest = {
|
||||
review_status?: string | null;
|
||||
};
|
||||
|
||||
export type FinalApprovalChecklistItemSummary = {
|
||||
blocker?: string | null;
|
||||
completed: boolean;
|
||||
key: string;
|
||||
title: string;
|
||||
};
|
||||
|
||||
export type FinalApprovalChecklistResponse = {
|
||||
article_id: string;
|
||||
blockers?: string[];
|
||||
can_approve: boolean;
|
||||
completed_items?: string[];
|
||||
draft_version?: number | null;
|
||||
items?: FinalApprovalChecklistItemSummary[];
|
||||
requested_draft_version?: number | null;
|
||||
};
|
||||
|
||||
export type FinalApprovalPublishingSettings = {
|
||||
author?: string | null;
|
||||
content_path?: string | null;
|
||||
frontmatter?: Record<string, unknown> | null;
|
||||
publishing_mode?: string | null;
|
||||
};
|
||||
|
||||
export type FinalApprovalRequest = {
|
||||
draft_version?: number | null;
|
||||
publishing_settings?: FinalApprovalPublishingSettings | null;
|
||||
};
|
||||
|
||||
export type FinalApprovalResponse = {
|
||||
article: ArticleSummary;
|
||||
checklist: FinalApprovalChecklistResponse;
|
||||
};
|
||||
|
||||
export type FinalReviewIssueSummary = {
|
||||
location: string;
|
||||
message: string;
|
||||
@@ -364,6 +398,16 @@ export type FinalReviewIssuesResponse = {
|
||||
unresolved_issues?: FinalReviewIssueSummary[];
|
||||
};
|
||||
|
||||
export type FinalRevisionRequest = {
|
||||
draft_version?: number | null;
|
||||
reason?: string | null;
|
||||
};
|
||||
|
||||
export type FinalRevisionRequestResponse = {
|
||||
article: ArticleSummary;
|
||||
checklist: FinalApprovalChecklistResponse;
|
||||
};
|
||||
|
||||
export type HTTPValidationError = {
|
||||
detail?: ValidationError[];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user