Add specifications for gamification, generation, and R42 chat services

- Introduced gamification service spec detailing responsibilities, API surface, XP calculation, levels, streaks, badges, milestone cards, and heatmap data.
- Added generation service spec outlining the process for generating micro learning content, including API endpoints, AI call configuration, prompt strategies, and error handling.
- Created R42 chat service spec covering chatbot interactions, retrieval pipeline, prompt construction, response generation, and stateless design principles.
This commit is contained in:
RaymondVerhoef
2026-05-23 18:13:08 +02:00
parent dda20612e9
commit 472685f0d7
62 changed files with 11552 additions and 21 deletions

View File

@@ -0,0 +1,139 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "0lr0nf3rzh5tdq3",
"created": "2026-05-23 13:57:33.625Z",
"updated": "2026-05-23 13:57:33.625Z",
"name": "source_documents",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "ju0ymfsy",
"name": "filename",
"type": "text",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "7q9zkqtk",
"name": "file",
"type": "file",
"required": false,
"presentable": false,
"unique": false,
"options": {
"mimeTypes": [
"application/pdf",
"text/markdown",
"text/x-markdown",
"text/plain"
],
"thumbs": [],
"maxSelect": 1,
"maxSize": 52428800,
"protected": false
}
},
{
"system": false,
"id": "ny7sztwr",
"name": "format",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"pdf",
"md",
"txt"
]
}
},
{
"system": false,
"id": "sitx0eng",
"name": "status",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"processing",
"processed",
"failed"
]
}
},
{
"system": false,
"id": "p7qduuyn",
"name": "ingested_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "tahewcck",
"name": "chunk_count",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "d0x4m7ow",
"name": "created_by",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("0lr0nf3rzh5tdq3");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,116 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "bm117d8jhn68xqr",
"created": "2026-05-23 13:57:33.634Z",
"updated": "2026-05-23 13:57:33.634Z",
"name": "themes",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "zl4nz5yw",
"name": "title",
"type": "text",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "hvkfrx3i",
"name": "description",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "mfk9eat0",
"name": "status",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"draft",
"published"
]
}
},
{
"system": false,
"id": "n8fksm3u",
"name": "source_documents",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "0lr0nf3rzh5tdq3",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": null,
"displayFields": null
}
},
{
"system": false,
"id": "998ievsr",
"name": "approved_by",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "4ilud3ts",
"name": "approved_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("bm117d8jhn68xqr");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,52 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const dao = new Dao(db)
const collection = dao.findCollectionByNameOrId("_pb_users_auth_")
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "mx3g38jd",
"name": "role",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"admin",
"employee"
]
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "pgfyrf71",
"name": "display_name",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
}))
return dao.saveCollection(collection)
}, (db) => {
const dao = new Dao(db)
const collection = dao.findCollectionByNameOrId("_pb_users_auth_")
// remove
collection.schema.removeField("mx3g38jd")
// remove
collection.schema.removeField("pgfyrf71")
return dao.saveCollection(collection)
})

View File

@@ -0,0 +1,55 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "1ixwljuo2xqxcqj",
"created": "2026-05-23 13:58:56.098Z",
"updated": "2026-05-23 13:58:56.098Z",
"name": "topics",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "kkjhfk5h",
"name": "theme",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "bm117d8jhn68xqr",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "ygnod47v",
"name": "body",
"type": "editor",
"required": false,
"presentable": false,
"unique": false,
"options": {
"convertUrls": false
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("1ixwljuo2xqxcqj");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,102 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "5gl7qj7aky6wjl9",
"created": "2026-05-23 14:00:42.375Z",
"updated": "2026-05-23 14:00:42.375Z",
"name": "badges",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "edwrmvav",
"name": "key",
"type": "text",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "2wpmab8o",
"name": "tier",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"bronze",
"silver",
"gold",
"legendary",
"content"
]
}
},
{
"system": false,
"id": "hknbw5l3",
"name": "label",
"type": "text",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "mq6imou8",
"name": "description",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "l8vkthft",
"name": "icon",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("5gl7qj7aky6wjl9");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,114 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "1cbepol4z1jxb20",
"created": "2026-05-23 14:00:42.280Z",
"updated": "2026-05-23 14:00:42.280Z",
"name": "curriculum_versions",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "x70h1e1v",
"name": "version",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "0rbdmeyi",
"name": "status",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"draft",
"active",
"superseded"
]
}
},
{
"system": false,
"id": "s8btpnp7",
"name": "generated_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "d297xuk1",
"name": "approved_by",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "zmzzcv6z",
"name": "approved_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "fsn8cgni",
"name": "generation_notes",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("1cbepol4z1jxb20");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,129 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "9ivwlfc584lp63w",
"created": "2026-05-23 14:00:42.294Z",
"updated": "2026-05-23 14:00:42.294Z",
"name": "curriculum_weeks",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "ano3xevy",
"name": "curriculum_version",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1cbepol4z1jxb20",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "p7odhccm",
"name": "week_number",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "l0w7ienh",
"name": "theme",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "bm117d8jhn68xqr",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "37yncqmv",
"name": "topics",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": null,
"displayFields": null
}
},
{
"system": false,
"id": "ut2ilwjx",
"name": "topic_order",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
},
{
"system": false,
"id": "wdleuro6",
"name": "estimated_duration_minutes",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "omddyhqe",
"name": "admin_notes",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("9ivwlfc584lp63w");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,86 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "52xqp11w4t0y68u",
"created": "2026-05-23 14:00:42.405Z",
"updated": "2026-05-23 14:00:42.405Z",
"name": "employee_badges",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "uyiom4ry",
"name": "user",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "hmafhq29",
"name": "badge",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "5gl7qj7aky6wjl9",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "5a11syeq",
"name": "earned_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "ekcq8kkw",
"name": "cycle",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("52xqp11w4t0y68u");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,100 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "516qnoxsmeomkte",
"created": "2026-05-23 14:00:42.311Z",
"updated": "2026-05-23 14:00:42.311Z",
"name": "employee_curriculum_state",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "4v8ps3fa",
"name": "user",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "trhrgfoz",
"name": "current_cycle",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "g39vexbc",
"name": "current_week",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "ca7taibg",
"name": "start_date",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "lpkyfwga",
"name": "active_version",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1cbepol4z1jxb20",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("516qnoxsmeomkte");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,131 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "o9gcrudod9g510u",
"created": "2026-05-23 14:00:42.352Z",
"updated": "2026-05-23 14:00:42.352Z",
"name": "gamification_profiles",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "szwphybr",
"name": "user",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "ifgzeuez",
"name": "total_commits",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "bbife1f5",
"name": "current_level",
"type": "select",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"intern",
"junior",
"medior",
"senior",
"staff",
"principal"
]
}
},
{
"system": false,
"id": "f2aujqrw",
"name": "current_streak_weeks",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "vlcxsuv6",
"name": "longest_streak_weeks",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "eolnad0g",
"name": "types_used",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
},
{
"system": false,
"id": "e2voqddw",
"name": "last_active_week",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("o9gcrudod9g510u");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,137 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "li75ivkr87g3r94",
"created": "2026-05-23 14:00:42.269Z",
"updated": "2026-05-23 14:00:42.269Z",
"name": "micro_learnings",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "ihu0d60m",
"name": "topic",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "wdz1hhs6",
"name": "type",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"concept_explainer",
"scenario_quiz",
"misconceptions",
"how_to",
"comparison_card",
"reflection_prompt",
"flashcard_set",
"case_study",
"glossary_anchor",
"myth_vs_evidence"
]
}
},
{
"system": false,
"id": "1ccr13b7",
"name": "content",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
},
{
"system": false,
"id": "vdti3gns",
"name": "status",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"queued",
"generated",
"published",
"rejected"
]
}
},
{
"system": false,
"id": "hxxcrfw8",
"name": "generation_model",
"type": "text",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
},
{
"system": false,
"id": "grwpzlhc",
"name": "generated_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
},
{
"system": false,
"id": "wexudgfp",
"name": "published_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("li75ivkr87g3r94");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,111 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "ilkfmv9xibmekna",
"created": "2026-05-23 14:00:42.453Z",
"updated": "2026-05-23 14:00:42.453Z",
"name": "milestone_cards",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "31f7wcxc",
"name": "user",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "uyhilsbd",
"name": "cycle",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "47ivigbu",
"name": "week",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "yai47mow",
"name": "total_commits",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "je3vf6wh",
"name": "streak_weeks",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "xvtxl0nj",
"name": "badge_keys",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("ilkfmv9xibmekna");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,116 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const collection = new Collection({
"id": "57kc85afcdkjlje",
"created": "2026-05-23 14:00:42.328Z",
"updated": "2026-05-23 14:00:42.328Z",
"name": "session_completions",
"type": "base",
"system": false,
"schema": [
{
"system": false,
"id": "atqsid6s",
"name": "user",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "_pb_users_auth_",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "2waq3kfq",
"name": "topic",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "tf1bapvu",
"name": "micro_learning",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "li75ivkr87g3r94",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
},
{
"system": false,
"id": "dvmc5jih",
"name": "week_number",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "wblewojy",
"name": "cycle",
"type": "number",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
},
{
"system": false,
"id": "izxhly6t",
"name": "completed_at",
"type": "date",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": "",
"max": ""
}
}
],
"indexes": [],
"listRule": null,
"viewRule": null,
"createRule": null,
"updateRule": null,
"deleteRule": null,
"options": {}
});
return Dao(db).saveCollection(collection);
}, (db) => {
const dao = new Dao(db);
const collection = dao.findCollectionByNameOrId("57kc85afcdkjlje");
return dao.deleteCollection(collection);
})

View File

@@ -0,0 +1,266 @@
/// <reference path="../pb_data/types.d.ts" />
migrate((db) => {
const dao = new Dao(db)
const collection = dao.findCollectionByNameOrId("1ixwljuo2xqxcqj")
// remove
collection.schema.removeField("kkjhfk5h")
// remove
collection.schema.removeField("ygnod47v")
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "wo6r0pay",
"name": "theme",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "bm117d8jhn68xqr",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "8bnzwbwk",
"name": "title",
"type": "text",
"required": true,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"pattern": ""
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "lwhabbnq",
"name": "body",
"type": "editor",
"required": false,
"presentable": false,
"unique": false,
"options": {
"convertUrls": false
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "8tjttsyu",
"name": "difficulty",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"introductory",
"intermediate",
"advanced"
]
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "qngdg6m0",
"name": "complexity_weight",
"type": "number",
"required": false,
"presentable": false,
"unique": false,
"options": {
"min": null,
"max": null,
"noDecimal": false
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "dccnzcbc",
"name": "status",
"type": "select",
"required": true,
"presentable": false,
"unique": false,
"options": {
"maxSelect": 1,
"values": [
"draft",
"published"
]
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "3rkaaglp",
"name": "key_terms",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "byhuuhif",
"name": "qdrant_chunk_ids",
"type": "json",
"required": false,
"presentable": false,
"unique": false,
"options": {
"maxSize": 2097152
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "8h7ygavu",
"name": "related_topics",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": null,
"displayFields": null
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "dwhl1pqg",
"name": "prerequisite_topics",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": null,
"displayFields": null
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "38phv8cm",
"name": "contrast_topics",
"type": "relation",
"required": false,
"presentable": false,
"unique": false,
"options": {
"collectionId": "1ixwljuo2xqxcqj",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": null,
"displayFields": null
}
}))
return dao.saveCollection(collection)
}, (db) => {
const dao = new Dao(db)
const collection = dao.findCollectionByNameOrId("1ixwljuo2xqxcqj")
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "kkjhfk5h",
"name": "theme",
"type": "relation",
"required": true,
"presentable": false,
"unique": false,
"options": {
"collectionId": "bm117d8jhn68xqr",
"cascadeDelete": false,
"minSelect": null,
"maxSelect": 1,
"displayFields": null
}
}))
// add
collection.schema.addField(new SchemaField({
"system": false,
"id": "ygnod47v",
"name": "body",
"type": "editor",
"required": false,
"presentable": false,
"unique": false,
"options": {
"convertUrls": false
}
}))
// remove
collection.schema.removeField("wo6r0pay")
// remove
collection.schema.removeField("8bnzwbwk")
// remove
collection.schema.removeField("lwhabbnq")
// remove
collection.schema.removeField("8tjttsyu")
// remove
collection.schema.removeField("qngdg6m0")
// remove
collection.schema.removeField("dccnzcbc")
// remove
collection.schema.removeField("3rkaaglp")
// remove
collection.schema.removeField("byhuuhif")
// remove
collection.schema.removeField("8h7ygavu")
// remove
collection.schema.removeField("dwhl1pqg")
// remove
collection.schema.removeField("38phv8cm")
return dao.saveCollection(collection)
})