Technical SpecsService Specs
Knowledge Base Architecture
Content Management and Versioning for KB.
Knowledge Architecture
Data Model
We use a polymorphic structure or specific article types. For simplicity, we use knowledge_article as the base.
// packages/service/src/knowledge_article.object.ts
export default {
name: 'knowledge_article',
fields: {
title: { type: 'text', required: true },
url_name: { type: 'text', unique: true }, // Slug
content: { type: 'html' },
status: { type: 'select', options: ['Draft', 'Review', 'Published', 'Archived'] },
version_number: { type: 'number' },
is_master: { type: 'boolean' }, // Points to the latest version
language: { type: 'text', default: 'en_US' }
}
}Publishing Workflow
We implement a "Publish on Approval" workflow.
- Draft: User edits a
status='Draft'record. - Submit: User clicks "Submit for Approval".
approval_processtriggers. - Approve: Manager approves.
- System sets
status= 'Published'. - Previous 'Published' version (if any) is set to 'Archived'.
publish_dateis set tonow().
- System sets
Search Indexing
We maintain a full-text search index.
- Trigger:
afterUpsertonknowledge_article. - Action: Push
titleandcontentto the Search Engine (e.g., Elasticsearch or database text index).