SOA as document: replace export with publish workflow
Statements of Applicability are no longer exported as one-off PDFs. Instead, each SOA owns a persistent document that accumulates versions over time, following the same publish/approve lifecycle as authored documents. Publishing without approvers publishes immediately; publishing with approvers creates a draft pending approval via the existing quorum system. SOAs can also store default approvers that are pre-populated in the publish dialog. The SOA is removed from the snapshot system — applicability statements are now queried directly (snapshot_id IS NULL) rather than through snapshot copies. A standalone migration script (cmd/migrate-soa-snapshots-to-documents) converts existing SOA snapshots into documents with proper ProseMirror content, preserving version history and approval decisions. Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
@@ -37,6 +37,36 @@ enum DocumentType
|
||||
REPORT @goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeReport")
|
||||
TEMPLATE
|
||||
@goEnum(value: "go.probo.inc/probo/pkg/coredata.DocumentTypeTemplate")
|
||||
STATEMENT_OF_APPLICABILITY
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.DocumentTypeStatementOfApplicability"
|
||||
)
|
||||
}
|
||||
|
||||
enum DocumentVersionOrientation
|
||||
@goModel(
|
||||
model: "go.probo.inc/probo/pkg/coredata.DocumentVersionOrientation"
|
||||
) {
|
||||
PORTRAIT
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.DocumentVersionOrientationPortrait"
|
||||
)
|
||||
LANDSCAPE
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.DocumentVersionOrientationLandscape"
|
||||
)
|
||||
}
|
||||
|
||||
enum DocumentWriteMode
|
||||
@goModel(model: "go.probo.inc/probo/pkg/coredata.DocumentWriteMode") {
|
||||
AUTHORED
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.DocumentWriteModeAuthored"
|
||||
)
|
||||
GENERATED
|
||||
@goEnum(
|
||||
value: "go.probo.inc/probo/pkg/coredata.DocumentWriteModeGenerated"
|
||||
)
|
||||
}
|
||||
|
||||
enum DocumentClassification
|
||||
@@ -199,6 +229,7 @@ input DocumentVersionOrder
|
||||
|
||||
input DocumentFilter {
|
||||
query: String
|
||||
writeModes: [DocumentWriteMode!]
|
||||
documentTypes: [DocumentType!]
|
||||
classifications: [DocumentClassification!]
|
||||
status: [DocumentStatus!]
|
||||
@@ -259,6 +290,7 @@ type Document implements Node {
|
||||
|
||||
defaultApprovers: [Profile!]! @goField(forceResolver: true)
|
||||
|
||||
writeMode: DocumentWriteMode!
|
||||
status: DocumentStatus!
|
||||
archivedAt: Datetime
|
||||
|
||||
@@ -279,6 +311,7 @@ type DocumentVersion implements Node {
|
||||
title: String!
|
||||
classification: DocumentClassification!
|
||||
documentType: DocumentType!
|
||||
orientation: DocumentVersionOrientation!
|
||||
approvers(
|
||||
first: Int
|
||||
after: CursorKey
|
||||
|
||||
Reference in New Issue
Block a user