@@ -0,0 +1,77 @@
|
||||
// Shared, runtime-neutral documents manifest data. The normal app binds its worker implementation
|
||||
// of documents.ocr; the Convex profile binds the same payload contract to its dedicated Node action.
|
||||
|
||||
import { contribute, type ModuleManifest } from "@conusai-kit/core"
|
||||
import { repositoryBindings } from "@conusai-kit/data"
|
||||
import { filesProcessors } from "@conusai-kit/files"
|
||||
import { proposalTargets } from "@conusai-kit/proposals"
|
||||
import { DOCUMENT_PROCEDURES } from "./adapters/procedures.js"
|
||||
import {
|
||||
DOCUMENTS_COLLECTIONS,
|
||||
DOCUMENTS_ENTITIES,
|
||||
DOCUMENTS_FLAG_DEFAULTS,
|
||||
EXPORT_CREATED,
|
||||
LINE_EDITED,
|
||||
OCR_JOB,
|
||||
PROCESSOR_KEY,
|
||||
READABLE_CONTENT_TYPES,
|
||||
} from "./contract/index.js"
|
||||
import { lineTarget } from "./core/target.js"
|
||||
import { en, lt } from "./i18n/index.js"
|
||||
|
||||
const tables = repositoryBindings(...DOCUMENTS_ENTITIES)
|
||||
|
||||
export const DOCUMENTS_MODULE_BASE: ModuleManifest = {
|
||||
id: "documents",
|
||||
version: "0.1.0",
|
||||
kit: "^0.1.0",
|
||||
requires: ["tenancy", "files", "proposals", "notifications"],
|
||||
serviceRequirements: [
|
||||
{
|
||||
transport: "platform",
|
||||
service: "ocr",
|
||||
apiRange: "=1.0.0-preview.20261103",
|
||||
profiles: ["postgres"],
|
||||
operations: { [OCR_JOB]: ["ocr:use"] },
|
||||
configuration: ["ocr_processing"],
|
||||
dependencies: ["blob"],
|
||||
dataClasses: ["document", "personal"],
|
||||
partitionRequired: false,
|
||||
remediation: "/settings/services/ocr",
|
||||
},
|
||||
{
|
||||
transport: "platform",
|
||||
service: "ai",
|
||||
apiRange: "=1.0.0-preview.20261103",
|
||||
profiles: ["postgres"],
|
||||
operations: { [OCR_JOB]: ["ai:execute"] },
|
||||
configuration: ["ai_processing"],
|
||||
dependencies: ["ocr"],
|
||||
dataClasses: ["document", "personal", "ai-input"],
|
||||
partitionRequired: false,
|
||||
remediation: "/settings/services/ai",
|
||||
},
|
||||
],
|
||||
permissions: {
|
||||
"documents.document.read": "viewer",
|
||||
"documents.line.edit": "editor",
|
||||
"documents.line.approve": "editor",
|
||||
"documents.export.create": "editor",
|
||||
},
|
||||
procedures: DOCUMENT_PROCEDURES,
|
||||
// The pipeline is live (TS6.1): the job's change of a documents_document row reaches every member's open page.
|
||||
collections: [...DOCUMENTS_COLLECTIONS],
|
||||
repositories: { postgres: tables, mariadb: tables, mongodb: tables, convex: tables },
|
||||
migrations: {
|
||||
postgres: "migrations",
|
||||
mariadb: "adapters/kysely/mysql/migrations",
|
||||
mongodb: "adapters/mongo/migrations",
|
||||
},
|
||||
i18n: { en, lt },
|
||||
flags: Object.fromEntries(Object.entries(DOCUMENTS_FLAG_DEFAULTS).map(([flag, value]) => [flag, { default: value }])),
|
||||
audit: [EXPORT_CREATED, LINE_EDITED],
|
||||
extends: [
|
||||
contribute(filesProcessors, [{ key: PROCESSOR_KEY, contentTypes: [...READABLE_CONTENT_TYPES], job: OCR_JOB }]),
|
||||
contribute(proposalTargets, [lineTarget]),
|
||||
],
|
||||
}
|
||||
Reference in New Issue
Block a user