@open-mercato/core 0.4.2-canary-5d2c419a9b → 0.4.2-canary-9e0237de8e
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generated/entities/workflow_event_trigger/index.js +33 -0
- package/dist/generated/entities/workflow_event_trigger/index.js.map +7 -0
- package/dist/generated/entities.ids.generated.js +1 -0
- package/dist/generated/entities.ids.generated.js.map +2 -2
- package/dist/generated/entity-fields-registry.js +2 -0
- package/dist/generated/entity-fields-registry.js.map +2 -2
- package/dist/modules/auth/events.js +30 -0
- package/dist/modules/auth/events.js.map +7 -0
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js +145 -0
- package/dist/modules/business_rules/api/execute/[ruleId]/route.js.map +7 -0
- package/dist/modules/business_rules/data/validators.js +34 -0
- package/dist/modules/business_rules/data/validators.js.map +2 -2
- package/dist/modules/business_rules/index.js +21 -1
- package/dist/modules/business_rules/index.js.map +2 -2
- package/dist/modules/business_rules/lib/rule-engine.js +182 -1
- package/dist/modules/business_rules/lib/rule-engine.js.map +2 -2
- package/dist/modules/catalog/events.js +34 -0
- package/dist/modules/catalog/events.js.map +7 -0
- package/dist/modules/customers/events.js +49 -0
- package/dist/modules/customers/events.js.map +7 -0
- package/dist/modules/directory/events.js +23 -0
- package/dist/modules/directory/events.js.map +7 -0
- package/dist/modules/sales/acl.js +1 -0
- package/dist/modules/sales/acl.js.map +2 -2
- package/dist/modules/sales/backend/sales/documents/[id]/page.js +12 -0
- package/dist/modules/sales/backend/sales/documents/[id]/page.js.map +2 -2
- package/dist/modules/sales/commands/documents.js +62 -0
- package/dist/modules/sales/commands/documents.js.map +2 -2
- package/dist/modules/sales/events.js +63 -0
- package/dist/modules/sales/events.js.map +7 -0
- package/dist/modules/sales/lib/dictionaries.js +3 -0
- package/dist/modules/sales/lib/dictionaries.js.map +2 -2
- package/dist/modules/sales/lib/frontend/documentDataEvents.js +25 -0
- package/dist/modules/sales/lib/frontend/documentDataEvents.js.map +7 -0
- package/dist/modules/workflows/acl.js +2 -0
- package/dist/modules/workflows/acl.js.map +2 -2
- package/dist/modules/workflows/api/instances/route.js +18 -6
- package/dist/modules/workflows/api/instances/route.js.map +2 -2
- package/dist/modules/workflows/api/tasks/route.js +6 -1
- package/dist/modules/workflows/api/tasks/route.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.js +9 -1
- package/dist/modules/workflows/backend/definitions/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.js +24 -15
- package/dist/modules/workflows/backend/definitions/create/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/create/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/create/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js +150 -132
- package/dist/modules/workflows/backend/definitions/visual-editor/page.js.map +2 -2
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js +1 -1
- package/dist/modules/workflows/backend/definitions/visual-editor/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/events/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/events/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/instances/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.js +1 -1
- package/dist/modules/workflows/backend/tasks/[id]/page.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js +2 -2
- package/dist/modules/workflows/backend/tasks/[id]/page.meta.js.map +2 -2
- package/dist/modules/workflows/backend/tasks/page.js +5 -6
- package/dist/modules/workflows/backend/tasks/page.js.map +2 -2
- package/dist/modules/workflows/cli.js +81 -3
- package/dist/modules/workflows/cli.js.map +3 -3
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js +481 -0
- package/dist/modules/workflows/components/DefinitionTriggersEditor.js.map +7 -0
- package/dist/modules/workflows/components/EventTriggersEditor.js +553 -0
- package/dist/modules/workflows/components/EventTriggersEditor.js.map +7 -0
- package/dist/modules/workflows/data/entities.js +64 -1
- package/dist/modules/workflows/data/entities.js.map +2 -2
- package/dist/modules/workflows/data/validators.js +115 -0
- package/dist/modules/workflows/data/validators.js.map +2 -2
- package/dist/modules/workflows/events.js +38 -0
- package/dist/modules/workflows/events.js.map +7 -0
- package/dist/modules/workflows/examples/checkout-demo-definition.json +1 -5
- package/dist/modules/workflows/examples/order-approval-definition.json +257 -0
- package/dist/modules/workflows/examples/order-approval-guard-rules.json +32 -0
- package/dist/modules/workflows/lib/activity-executor.js +75 -13
- package/dist/modules/workflows/lib/activity-executor.js.map +2 -2
- package/dist/modules/workflows/lib/event-trigger-service.js +308 -0
- package/dist/modules/workflows/lib/event-trigger-service.js.map +7 -0
- package/dist/modules/workflows/lib/graph-utils.js +71 -2
- package/dist/modules/workflows/lib/graph-utils.js.map +2 -2
- package/dist/modules/workflows/lib/seeds.js +17 -4
- package/dist/modules/workflows/lib/seeds.js.map +2 -2
- package/dist/modules/workflows/lib/start-validator.js +33 -23
- package/dist/modules/workflows/lib/start-validator.js.map +2 -2
- package/dist/modules/workflows/lib/transition-handler.js +157 -45
- package/dist/modules/workflows/lib/transition-handler.js.map +3 -3
- package/dist/modules/workflows/migrations/Migration20260123143500.js +36 -0
- package/dist/modules/workflows/migrations/Migration20260123143500.js.map +7 -0
- package/dist/modules/workflows/subscribers/event-trigger.js +78 -0
- package/dist/modules/workflows/subscribers/event-trigger.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js +323 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.client.js.map +7 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js +17 -0
- package/dist/modules/workflows/widgets/injection/order-approval/widget.js.map +7 -0
- package/dist/modules/workflows/widgets/injection-table.js +19 -0
- package/dist/modules/workflows/widgets/injection-table.js.map +7 -0
- package/generated/entities/workflow_event_trigger/index.ts +15 -0
- package/generated/entities.ids.generated.ts +1 -0
- package/generated/entity-fields-registry.ts +2 -0
- package/package.json +2 -2
- package/src/modules/auth/events.ts +39 -0
- package/src/modules/business_rules/api/execute/[ruleId]/route.ts +163 -0
- package/src/modules/business_rules/data/validators.ts +40 -0
- package/src/modules/business_rules/index.ts +25 -0
- package/src/modules/business_rules/lib/rule-engine.ts +281 -1
- package/src/modules/catalog/events.ts +45 -0
- package/src/modules/customers/events.ts +63 -0
- package/src/modules/directory/events.ts +31 -0
- package/src/modules/sales/acl.ts +1 -0
- package/src/modules/sales/backend/sales/documents/[id]/page.tsx +16 -0
- package/src/modules/sales/commands/documents.ts +75 -1
- package/src/modules/sales/events.ts +82 -0
- package/src/modules/sales/lib/dictionaries.ts +3 -0
- package/src/modules/sales/lib/frontend/documentDataEvents.ts +28 -0
- package/src/modules/workflows/acl.ts +2 -0
- package/src/modules/workflows/api/__tests__/instances.route.test.ts +5 -2
- package/src/modules/workflows/api/instances/route.ts +21 -7
- package/src/modules/workflows/api/tasks/route.ts +7 -1
- package/src/modules/workflows/backend/definitions/[id]/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/[id]/page.tsx +9 -0
- package/src/modules/workflows/backend/definitions/create/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/create/page.tsx +9 -0
- package/src/modules/workflows/backend/definitions/visual-editor/page.meta.ts +1 -1
- package/src/modules/workflows/backend/definitions/visual-editor/page.tsx +21 -3
- package/src/modules/workflows/backend/events/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/events/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/instances/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/tasks/[id]/page.meta.ts +2 -2
- package/src/modules/workflows/backend/tasks/[id]/page.tsx +1 -1
- package/src/modules/workflows/backend/tasks/page.tsx +5 -6
- package/src/modules/workflows/cli.ts +111 -0
- package/src/modules/workflows/components/DefinitionTriggersEditor.tsx +581 -0
- package/src/modules/workflows/components/EventTriggersEditor.tsx +664 -0
- package/src/modules/workflows/data/entities.ts +124 -0
- package/src/modules/workflows/data/validators.ts +138 -0
- package/src/modules/workflows/events.ts +49 -0
- package/src/modules/workflows/examples/checkout-demo-definition.json +1 -5
- package/src/modules/workflows/examples/order-approval-definition.json +257 -0
- package/src/modules/workflows/examples/order-approval-guard-rules.json +32 -0
- package/src/modules/workflows/i18n/en.json +71 -0
- package/src/modules/workflows/lib/__tests__/activity-executor.test.ts +43 -36
- package/src/modules/workflows/lib/__tests__/transition-handler.test.ts +170 -90
- package/src/modules/workflows/lib/activity-executor.ts +129 -16
- package/src/modules/workflows/lib/event-trigger-service.ts +557 -0
- package/src/modules/workflows/lib/graph-utils.ts +117 -2
- package/src/modules/workflows/lib/seeds.ts +29 -8
- package/src/modules/workflows/lib/start-validator.ts +38 -28
- package/src/modules/workflows/lib/transition-handler.ts +208 -55
- package/src/modules/workflows/migrations/Migration20260123143500.ts +38 -0
- package/src/modules/workflows/subscribers/event-trigger.ts +109 -0
- package/src/modules/workflows/widgets/injection/order-approval/widget.client.tsx +446 -0
- package/src/modules/workflows/widgets/injection/order-approval/widget.ts +16 -0
- package/src/modules/workflows/widgets/injection-table.ts +21 -0
|
@@ -72,7 +72,6 @@ export default function UserTasksListPage() {
|
|
|
72
72
|
params.set('offset', offset.toString())
|
|
73
73
|
|
|
74
74
|
if (filterValues.status) params.set('status', filterValues.status as string)
|
|
75
|
-
if (filterValues.myTasks === 'true') params.set('myTasks', 'true')
|
|
76
75
|
if (filterValues.overdue === 'true') params.set('overdue', 'true')
|
|
77
76
|
if (filterValues.workflowInstanceId) params.set('workflowInstanceId', filterValues.workflowInstanceId as string)
|
|
78
77
|
|
|
@@ -155,10 +154,10 @@ export default function UserTasksListPage() {
|
|
|
155
154
|
label: t('workflows.tasks.filters.status'),
|
|
156
155
|
options: [
|
|
157
156
|
{ label: t('common.all'), value: '' },
|
|
158
|
-
{ label: t('workflows.tasks.
|
|
159
|
-
{ label: t('workflows.tasks.
|
|
160
|
-
{ label: t('workflows.tasks.
|
|
161
|
-
{ label: t('workflows.tasks.
|
|
157
|
+
{ label: t('workflows.tasks.statuses.PENDING'), value: 'PENDING' },
|
|
158
|
+
{ label: t('workflows.tasks.statuses.IN_PROGRESS'), value: 'IN_PROGRESS' },
|
|
159
|
+
{ label: t('workflows.tasks.statuses.COMPLETED'), value: 'COMPLETED' },
|
|
160
|
+
{ label: t('workflows.tasks.statuses.CANCELLED'), value: 'CANCELLED' },
|
|
162
161
|
],
|
|
163
162
|
},
|
|
164
163
|
{
|
|
@@ -214,7 +213,7 @@ export default function UserTasksListPage() {
|
|
|
214
213
|
accessorKey: 'status',
|
|
215
214
|
cell: ({ row }) => (
|
|
216
215
|
<span className={`inline-flex items-center px-2 py-1 rounded text-xs font-medium ${getStatusBadgeClass(row.original.status)}`}>
|
|
217
|
-
{t(`workflows.tasks.
|
|
216
|
+
{t(`workflows.tasks.statuses.${row.original.status}`)}
|
|
218
217
|
</span>
|
|
219
218
|
),
|
|
220
219
|
},
|
|
@@ -2,6 +2,7 @@ import type { ModuleCli } from '@open-mercato/shared/modules/registry'
|
|
|
2
2
|
import { createRequestContainer } from '@open-mercato/shared/lib/di/container'
|
|
3
3
|
import type { EntityManager } from '@mikro-orm/postgresql'
|
|
4
4
|
import { WorkflowDefinition } from './data/entities'
|
|
5
|
+
import { BusinessRule, type RuleType } from '@open-mercato/core/modules/business_rules/data/entities'
|
|
5
6
|
import * as fs from 'fs'
|
|
6
7
|
import * as path from 'path'
|
|
7
8
|
import { fileURLToPath } from 'url'
|
|
@@ -283,6 +284,111 @@ const seedSimpleApproval: ModuleCli = {
|
|
|
283
284
|
},
|
|
284
285
|
}
|
|
285
286
|
|
|
287
|
+
/**
|
|
288
|
+
* Seed order approval example
|
|
289
|
+
*/
|
|
290
|
+
const seedOrderApproval: ModuleCli = {
|
|
291
|
+
command: 'seed-order-approval',
|
|
292
|
+
async run(rest: string[]) {
|
|
293
|
+
const args = parseArgs(rest)
|
|
294
|
+
const tenantId = String(args.tenantId ?? args.tenant ?? args.t ?? '')
|
|
295
|
+
const organizationId = String(args.organizationId ?? args.orgId ?? args.org ?? args.o ?? '')
|
|
296
|
+
|
|
297
|
+
if (!tenantId || !organizationId) {
|
|
298
|
+
console.error('Usage: mercato workflows seed-order-approval --tenant <tenantId> --org <organizationId>')
|
|
299
|
+
return
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
try {
|
|
303
|
+
const { resolve } = await createRequestContainer()
|
|
304
|
+
const em = resolve<EntityManager>('em')
|
|
305
|
+
|
|
306
|
+
// 1. Seed order approval guard rules first
|
|
307
|
+
const guardRulesPath = path.join(__dirname, 'examples', 'order-approval-guard-rules.json')
|
|
308
|
+
const guardRulesData = JSON.parse(fs.readFileSync(guardRulesPath, 'utf8')) as Array<{
|
|
309
|
+
ruleId: string
|
|
310
|
+
ruleName: string
|
|
311
|
+
ruleType: RuleType
|
|
312
|
+
entityType: string
|
|
313
|
+
description?: string
|
|
314
|
+
eventType?: string
|
|
315
|
+
conditionExpression?: Record<string, unknown>
|
|
316
|
+
enabled?: boolean
|
|
317
|
+
priority?: number
|
|
318
|
+
}>
|
|
319
|
+
|
|
320
|
+
let rulesSeeded = 0
|
|
321
|
+
let rulesSkipped = 0
|
|
322
|
+
for (const rule of guardRulesData) {
|
|
323
|
+
const existingRule = await em.findOne(BusinessRule, {
|
|
324
|
+
ruleId: rule.ruleId,
|
|
325
|
+
tenantId,
|
|
326
|
+
organizationId,
|
|
327
|
+
})
|
|
328
|
+
|
|
329
|
+
if (existingRule) {
|
|
330
|
+
rulesSkipped++
|
|
331
|
+
continue
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
const newRule = em.create(BusinessRule, {
|
|
335
|
+
...rule,
|
|
336
|
+
tenantId,
|
|
337
|
+
organizationId,
|
|
338
|
+
})
|
|
339
|
+
em.persist(newRule)
|
|
340
|
+
console.log(` ✓ Seeded guard rule: ${rule.ruleName}`)
|
|
341
|
+
rulesSeeded++
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (rulesSeeded > 0) {
|
|
345
|
+
await em.flush()
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
// 2. Read the order approval workflow definition
|
|
349
|
+
const approvalPath = path.join(__dirname, 'examples', 'order-approval-definition.json')
|
|
350
|
+
const approvalData = JSON.parse(fs.readFileSync(approvalPath, 'utf8'))
|
|
351
|
+
|
|
352
|
+
// Check if it already exists
|
|
353
|
+
const existing = await em.findOne(WorkflowDefinition, {
|
|
354
|
+
workflowId: approvalData.workflowId,
|
|
355
|
+
tenantId,
|
|
356
|
+
organizationId,
|
|
357
|
+
})
|
|
358
|
+
|
|
359
|
+
if (existing) {
|
|
360
|
+
console.log(`✅ Order approval workflow '${approvalData.workflowId}' already exists (ID: ${existing.id})`)
|
|
361
|
+
console.log(` - Guard rules seeded: ${rulesSeeded}`)
|
|
362
|
+
console.log(` - Guard rules skipped: ${rulesSkipped}`)
|
|
363
|
+
return
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
// Create the workflow definition
|
|
367
|
+
const workflow = em.create(WorkflowDefinition, {
|
|
368
|
+
...approvalData,
|
|
369
|
+
tenantId,
|
|
370
|
+
organizationId,
|
|
371
|
+
})
|
|
372
|
+
|
|
373
|
+
await em.persistAndFlush(workflow)
|
|
374
|
+
|
|
375
|
+
console.log(`✅ Seeded order approval workflow: ${workflow.workflowName}`)
|
|
376
|
+
console.log(` - ID: ${workflow.id}`)
|
|
377
|
+
console.log(` - Workflow ID: ${workflow.workflowId}`)
|
|
378
|
+
console.log(` - Version: ${workflow.version}`)
|
|
379
|
+
console.log(` - Steps: ${workflow.definition.steps.length}`)
|
|
380
|
+
console.log(` - Transitions: ${workflow.definition.transitions.length}`)
|
|
381
|
+
console.log(` - Guard rules seeded: ${rulesSeeded}`)
|
|
382
|
+
console.log(` - Guard rules skipped: ${rulesSkipped}`)
|
|
383
|
+
console.log('')
|
|
384
|
+
console.log('Order approval workflow is ready!')
|
|
385
|
+
} catch (error) {
|
|
386
|
+
console.error('Error seeding order approval workflow:', error)
|
|
387
|
+
throw error
|
|
388
|
+
}
|
|
389
|
+
},
|
|
390
|
+
}
|
|
391
|
+
|
|
286
392
|
/**
|
|
287
393
|
* Start workflow activity worker
|
|
288
394
|
*/
|
|
@@ -366,6 +472,10 @@ const seedAll: ModuleCli = {
|
|
|
366
472
|
await seedSimpleApproval.run(rest)
|
|
367
473
|
console.log('')
|
|
368
474
|
|
|
475
|
+
// Seed order approval
|
|
476
|
+
await seedOrderApproval.run(rest)
|
|
477
|
+
console.log('')
|
|
478
|
+
|
|
369
479
|
console.log('✅ All example workflows seeded successfully!')
|
|
370
480
|
} catch (error) {
|
|
371
481
|
console.error('Error seeding workflows:', error)
|
|
@@ -444,6 +554,7 @@ const workflowsCliCommands = [
|
|
|
444
554
|
seedDemoWithRules,
|
|
445
555
|
seedSalesPipeline,
|
|
446
556
|
seedSimpleApproval,
|
|
557
|
+
seedOrderApproval,
|
|
447
558
|
seedAll,
|
|
448
559
|
]
|
|
449
560
|
|