Files
alla-allaos-fullstack/plans/task-p.6.md
2026-06-30 11:50:50 +07:00

5.5 KiB

Task P.6 - Document Library Foundation

Objective

Build the Document Library foundation for managing reusable PDF documents that can later be assembled with CRM-generated documents.

This phase prepares the system for future PDF merge workflows such as:

  • Quotation + SLA
  • Quotation + Warranty
  • Quotation + Datasheet
  • Quotation + Drawing
  • Quotation + Company Profile

This task does not perform PDF merge yet.


Background

Completed phases:

  • P.4 PDF Runtime
  • P.5 Document Template Management
  • P.5.1 Production Hardening

The next required foundation is a centralized library for external/static documents before implementing Document Assembly.


Scope

Included:

  • Document Library data model
  • Document category/type model
  • Version management
  • Organization and brand scope
  • Language support
  • Product type applicability
  • File upload/storage metadata
  • Active/default version handling
  • Preview/download APIs
  • Basic management UI
  • RBAC permissions
  • Audit log integration

Excluded:

  • PDF merge
  • SLA assembly into quotation
  • Render configuration
  • User-selectable append documents
  • Approval package generation

Document Types

Support document types such as:

  • SLA
  • Warranty
  • Terms and Conditions
  • Company Profile
  • Datasheet
  • Drawing
  • Certificate
  • Appendix
  • Safety Document
  • Installation Manual

Data Model Requirements

Design tables for:

Document Library

Represents a logical document family.

Example:

SLA - Crane - TH
Warranty - Dock Door - EN
Company Profile - ALLA - TH

Fields should include:

  • id
  • organizationId
  • code
  • name
  • documentType
  • description
  • brand
  • language
  • productType
  • status
  • isActive
  • createdBy
  • createdAt
  • updatedAt

Document Library Versions

Represents uploaded PDF versions.

Fields should include:

  • id
  • libraryId
  • version
  • fileName
  • filePath / storageKey
  • mimeType
  • fileSize
  • checksum
  • pageCount
  • status
  • isActive
  • publishedAt
  • publishedBy
  • archivedAt
  • archivedBy
  • createdAt
  • updatedAt

Version Lifecycle

Support:

Draft
↓
Published
↓
Active
↓
Archived

Only one active version is allowed per library item.


Storage Requirements

Reuse the existing storage abstraction from prior PDF artifact work.

Do not store PDF binary directly in database.

Store only:

  • storage key
  • filename
  • MIME type
  • checksum
  • size
  • metadata

Upload Requirements

Allow uploading PDF files only in this phase.

Validate:

  • MIME type = application/pdf
  • file size limit
  • checksum
  • readable PDF
  • page count extraction if available

Reject invalid uploads.


Preview and Download

Provide:

  • preview document version
  • download document version
  • download active version

Preview should not mutate lifecycle state.


Applicability Rules

Each document may apply to:

  • organization
  • brand
  • document type
  • product type
  • language

Examples:

SLA + ALLA + Crane + TH
Warranty + ONVALLA + Dock Door + EN
Company Profile + ALLA + All Product Types + TH

API Requirements

Create APIs for:

  • list document library items
  • create library item
  • update library item
  • create/upload version
  • publish version
  • activate version
  • archive version
  • preview version
  • download version
  • delete draft version if safe

UI Requirements

Add management UI under CRM settings or document settings.

Suggested route:

/dashboard/crm/settings/document-library

UI should include:

  • library list
  • filters by type, brand, language, product type
  • version history
  • upload new version
  • publish
  • activate
  • archive
  • preview
  • download

Permissions

Add permissions:

  • documentLibraryRead
  • documentLibraryCreate
  • documentLibraryUpdate
  • documentLibraryUpload
  • documentLibraryPublish
  • documentLibraryActivate
  • documentLibraryArchive
  • documentLibraryDownload

Activation should require elevated permission.


Audit Log

Record audit logs for:

  • create library item
  • update metadata
  • upload version
  • publish version
  • activate version
  • archive version
  • download version

Validation

Validate:

  • duplicate code per organization
  • duplicate active version
  • invalid PDF
  • missing file
  • unsupported document type
  • unsupported language
  • invalid lifecycle transition

Testing Requirements

Run:

npm run typecheck
npm run build

Add tests for:

  • version lifecycle
  • active version uniqueness
  • PDF upload validation
  • checksum generation
  • archive protection
  • permission guards where practical

Acceptance Criteria

  • Document Library module exists.
  • PDF files can be registered as document versions.
  • Only valid PDFs are accepted.
  • Versions support Draft, Published, Active, Archived lifecycle.
  • Only one active version exists per library item.
  • Active document can be previewed and downloaded.
  • Library items can be filtered by type, brand, language, and product type.
  • Storage abstraction is reused.
  • No PDF merge is implemented in this phase.
  • System is ready for P.7 Document Assembly.

Out of Scope

P.7

  • Merge quotation PDF with SLA/Warranty/Datasheet
  • Document package generation
  • Page ordering rules
  • Final merged PDF artifact

P.8

  • Render configuration
  • User-selectable append documents
  • Default append policy per product type

Final Success Condition

Task P.6 is complete when ALLA OS has a reusable Document Library that can store, version, activate, preview, and download static PDF documents such as SLA, Warranty, Datasheet, Drawing, and Company Profile, without yet merging them into generated CRM PDFs.