@things-factory/mlops 9.1.19

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.
Files changed (94) hide show
  1. package/README.md +341 -0
  2. package/client/bootstrap.ts +41 -0
  3. package/client/index.ts +2 -0
  4. package/client/pages/ml-deployment/ml-deployment-list-page.ts +46 -0
  5. package/client/pages/ml-model/ml-model-list-page.ts +46 -0
  6. package/client/pages/ml-pipeline/ml-pipeline-list-page.ts +46 -0
  7. package/client/pages/mlops-dashboard/mlops-dashboard-page.ts +90 -0
  8. package/client/route.ts +19 -0
  9. package/client/tsconfig.json +12 -0
  10. package/dist-client/bootstrap.d.ts +1 -0
  11. package/dist-client/bootstrap.js +40 -0
  12. package/dist-client/bootstrap.js.map +1 -0
  13. package/dist-client/index.d.ts +2 -0
  14. package/dist-client/index.js +3 -0
  15. package/dist-client/index.js.map +1 -0
  16. package/dist-client/pages/ml-deployment/ml-deployment-list-page.d.ts +5 -0
  17. package/dist-client/pages/ml-deployment/ml-deployment-list-page.js +49 -0
  18. package/dist-client/pages/ml-deployment/ml-deployment-list-page.js.map +1 -0
  19. package/dist-client/pages/ml-model/ml-model-list-page.d.ts +5 -0
  20. package/dist-client/pages/ml-model/ml-model-list-page.js +49 -0
  21. package/dist-client/pages/ml-model/ml-model-list-page.js.map +1 -0
  22. package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.d.ts +5 -0
  23. package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.js +49 -0
  24. package/dist-client/pages/ml-pipeline/ml-pipeline-list-page.js.map +1 -0
  25. package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.d.ts +5 -0
  26. package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.js +93 -0
  27. package/dist-client/pages/mlops-dashboard/mlops-dashboard-page.js.map +1 -0
  28. package/dist-client/route.d.ts +1 -0
  29. package/dist-client/route.js +17 -0
  30. package/dist-client/route.js.map +1 -0
  31. package/dist-client/tsconfig.tsbuildinfo +1 -0
  32. package/dist-server/index.d.ts +2 -0
  33. package/dist-server/index.js +6 -0
  34. package/dist-server/index.js.map +1 -0
  35. package/dist-server/routes.d.ts +5 -0
  36. package/dist-server/routes.js +12 -0
  37. package/dist-server/routes.js.map +1 -0
  38. package/dist-server/service/index.d.ts +8 -0
  39. package/dist-server/service/index.js +31 -0
  40. package/dist-server/service/index.js.map +1 -0
  41. package/dist-server/service/ml-deployment/index.d.ts +3 -0
  42. package/dist-server/service/ml-deployment/index.js +8 -0
  43. package/dist-server/service/ml-deployment/index.js.map +1 -0
  44. package/dist-server/service/ml-deployment/ml-deployment.d.ts +48 -0
  45. package/dist-server/service/ml-deployment/ml-deployment.js +153 -0
  46. package/dist-server/service/ml-deployment/ml-deployment.js.map +1 -0
  47. package/dist-server/service/ml-model/index.d.ts +5 -0
  48. package/dist-server/service/ml-model/index.js +11 -0
  49. package/dist-server/service/ml-model/index.js.map +1 -0
  50. package/dist-server/service/ml-model/ml-model-mutation.d.ts +24 -0
  51. package/dist-server/service/ml-model/ml-model-mutation.js +177 -0
  52. package/dist-server/service/ml-model/ml-model-mutation.js.map +1 -0
  53. package/dist-server/service/ml-model/ml-model-query.d.ts +23 -0
  54. package/dist-server/service/ml-model/ml-model-query.js +123 -0
  55. package/dist-server/service/ml-model/ml-model-query.js.map +1 -0
  56. package/dist-server/service/ml-model/ml-model-types.d.ts +27 -0
  57. package/dist-server/service/ml-model/ml-model-types.js +105 -0
  58. package/dist-server/service/ml-model/ml-model-types.js.map +1 -0
  59. package/dist-server/service/ml-model/ml-model.d.ts +52 -0
  60. package/dist-server/service/ml-model/ml-model.js +161 -0
  61. package/dist-server/service/ml-model/ml-model.js.map +1 -0
  62. package/dist-server/service/ml-pipeline/index.d.ts +3 -0
  63. package/dist-server/service/ml-pipeline/index.js +8 -0
  64. package/dist-server/service/ml-pipeline/index.js.map +1 -0
  65. package/dist-server/service/ml-pipeline/ml-pipeline.d.ts +50 -0
  66. package/dist-server/service/ml-pipeline/ml-pipeline.js +163 -0
  67. package/dist-server/service/ml-pipeline/ml-pipeline.js.map +1 -0
  68. package/dist-server/service/ml-pipeline-run/index.d.ts +3 -0
  69. package/dist-server/service/ml-pipeline-run/index.js +8 -0
  70. package/dist-server/service/ml-pipeline-run/index.js.map +1 -0
  71. package/dist-server/service/ml-pipeline-run/ml-pipeline-run.d.ts +40 -0
  72. package/dist-server/service/ml-pipeline-run/ml-pipeline-run.js +136 -0
  73. package/dist-server/service/ml-pipeline-run/ml-pipeline-run.js.map +1 -0
  74. package/dist-server/tsconfig.json +11 -0
  75. package/dist-server/tsconfig.tsbuildinfo +1 -0
  76. package/package.json +52 -0
  77. package/server/index.ts +3 -0
  78. package/server/routes.ts +13 -0
  79. package/server/service/index.ts +29 -0
  80. package/server/service/ml-deployment/index.ts +6 -0
  81. package/server/service/ml-deployment/ml-deployment.ts +136 -0
  82. package/server/service/ml-model/index.ts +9 -0
  83. package/server/service/ml-model/ml-model-mutation.ts +171 -0
  84. package/server/service/ml-model/ml-model-query.ts +97 -0
  85. package/server/service/ml-model/ml-model-types.ts +71 -0
  86. package/server/service/ml-model/ml-model.ts +143 -0
  87. package/server/service/ml-pipeline/index.ts +6 -0
  88. package/server/service/ml-pipeline/ml-pipeline.ts +144 -0
  89. package/server/service/ml-pipeline-run/index.ts +6 -0
  90. package/server/service/ml-pipeline-run/ml-pipeline-run.ts +118 -0
  91. package/server/tsconfig.json +11 -0
  92. package/things-factory.config.js +13 -0
  93. package/translations/en.json +30 -0
  94. package/translations/ko.json +30 -0
@@ -0,0 +1,143 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn
11
+ } from 'typeorm'
12
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
13
+ import { Domain } from '@things-factory/shell'
14
+ import { User } from '@things-factory/auth-base'
15
+
16
+ /**
17
+ * ML Model Stage
18
+ */
19
+ export enum ModelStage {
20
+ NONE = 'None',
21
+ STAGING = 'Staging',
22
+ PRODUCTION = 'Production',
23
+ ARCHIVED = 'Archived'
24
+ }
25
+
26
+ registerEnumType(ModelStage, {
27
+ name: 'ModelStage',
28
+ description: 'ML model deployment stage'
29
+ })
30
+
31
+ /**
32
+ * Model Framework
33
+ */
34
+ export enum ModelFramework {
35
+ TENSORFLOW = 'TensorFlow',
36
+ PYTORCH = 'PyTorch',
37
+ SKLEARN = 'Scikit-Learn',
38
+ XGBOOST = 'XGBoost',
39
+ LIGHTGBM = 'LightGBM',
40
+ ONNX = 'ONNX',
41
+ CUSTOM = 'Custom'
42
+ }
43
+
44
+ registerEnumType(ModelFramework, {
45
+ name: 'ModelFramework',
46
+ description: 'ML framework used for model training'
47
+ })
48
+
49
+ /**
50
+ * ML Model Entity
51
+ *
52
+ * Represents a registered ML model with version management
53
+ */
54
+ @Entity('ml_models')
55
+ @Index('ix_ml_model_0', ['domain', 'name', 'version'], { unique: true })
56
+ @Index('ix_ml_model_1', ['domain', 'stage'])
57
+ @ObjectType({ description: 'ML Model registered in the system' })
58
+ export class MLModel {
59
+ @PrimaryGeneratedColumn('uuid')
60
+ @Field(type => ID, { description: 'Model ID' })
61
+ id: string
62
+
63
+ @Column({ nullable: true, comment: 'Model name' })
64
+ @Field({ description: 'Model name' })
65
+ name: string
66
+
67
+ @Column({ nullable: true, comment: 'Model version' })
68
+ @Field({ description: 'Model version' })
69
+ version: string
70
+
71
+ @Column({ nullable: true, comment: 'Model description' })
72
+ @Field({ nullable: true, description: 'Model description' })
73
+ description?: string
74
+
75
+ @Column({ type: 'varchar', default: ModelStage.NONE, comment: 'Deployment stage' })
76
+ @Field(type => ModelStage, { description: 'Current deployment stage' })
77
+ stage: ModelStage
78
+
79
+ @Column({ type: 'varchar', nullable: true, comment: 'ML framework' })
80
+ @Field(type => ModelFramework, { nullable: true, description: 'Framework used for training' })
81
+ framework?: ModelFramework
82
+
83
+ @Column({ type: 'simple-json', nullable: true, comment: 'Model metrics (accuracy, loss, etc.)' })
84
+ @Field(type => String, { nullable: true, description: 'Model metrics as JSON' })
85
+ metrics?: string
86
+
87
+ @Column({ type: 'simple-json', nullable: true, comment: 'Model metadata' })
88
+ @Field(type => String, { nullable: true, description: 'Model metadata as JSON' })
89
+ metadata?: string
90
+
91
+ @Column({ nullable: true, comment: 'Model artifact URI (S3, local path, etc.)' })
92
+ @Field({ nullable: true, description: 'Model artifact storage URI' })
93
+ artifactUri?: string
94
+
95
+ @Column({ nullable: true, comment: 'MLflow run ID' })
96
+ @Field({ nullable: true, description: 'MLflow run ID for tracking' })
97
+ mlflowRunId?: string
98
+
99
+ @Column({ nullable: true, comment: 'MLflow experiment ID' })
100
+ @Field({ nullable: true, description: 'MLflow experiment ID' })
101
+ mlflowExperimentId?: string
102
+
103
+ @Column({ type: 'int', nullable: true, comment: 'Label Studio project ID' })
104
+ @Field(type => Int, { nullable: true, description: 'Associated Label Studio project' })
105
+ labelStudioProjectId?: number
106
+
107
+ @Column({ type: 'simple-json', nullable: true, comment: 'Model tags' })
108
+ @Field(type => String, { nullable: true, description: 'Tags as JSON array' })
109
+ tags?: string
110
+
111
+ @ManyToOne(() => Domain)
112
+ @Field({ nullable: true, description: 'Domain' })
113
+ domain?: Domain
114
+
115
+ @RelationId((model: MLModel) => model.domain)
116
+ domainId?: string
117
+
118
+ @ManyToOne(() => User, { nullable: true })
119
+ @Field(type => User, { nullable: true, description: 'Creator' })
120
+ creator?: User
121
+
122
+ @RelationId((model: MLModel) => model.creator)
123
+ creatorId?: string
124
+
125
+ @ManyToOne(() => User, { nullable: true })
126
+ @Field(type => User, { nullable: true, description: 'Last updater' })
127
+ updater?: User
128
+
129
+ @RelationId((model: MLModel) => model.updater)
130
+ updaterId?: string
131
+
132
+ @CreateDateColumn()
133
+ @Field({ description: 'Created at' })
134
+ createdAt: Date
135
+
136
+ @UpdateDateColumn()
137
+ @Field({ description: 'Updated at' })
138
+ updatedAt: Date
139
+
140
+ @DeleteDateColumn()
141
+ @Field({ nullable: true, description: 'Deleted at' })
142
+ deletedAt?: Date
143
+ }
@@ -0,0 +1,6 @@
1
+ import { MLPipeline } from './ml-pipeline'
2
+
3
+ export const entities = [MLPipeline]
4
+ export const resolvers = []
5
+
6
+ // export * from './ml-pipeline'
@@ -0,0 +1,144 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ DeleteDateColumn,
5
+ Entity,
6
+ Index,
7
+ Column,
8
+ RelationId,
9
+ ManyToOne,
10
+ PrimaryGeneratedColumn
11
+ } from 'typeorm'
12
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
13
+ import { Domain } from '@things-factory/shell'
14
+ import { User } from '@things-factory/auth-base'
15
+
16
+ /**
17
+ * Pipeline Status
18
+ */
19
+ export enum PipelineStatus {
20
+ DRAFT = 'DRAFT',
21
+ ACTIVE = 'ACTIVE',
22
+ PAUSED = 'PAUSED',
23
+ ARCHIVED = 'ARCHIVED'
24
+ }
25
+
26
+ registerEnumType(PipelineStatus, {
27
+ name: 'PipelineStatus',
28
+ description: 'ML pipeline status'
29
+ })
30
+
31
+ /**
32
+ * Pipeline Trigger Type
33
+ */
34
+ export enum PipelineTriggerType {
35
+ MANUAL = 'MANUAL',
36
+ SCHEDULE = 'SCHEDULE',
37
+ WEBHOOK = 'WEBHOOK',
38
+ EVENT = 'EVENT'
39
+ }
40
+
41
+ registerEnumType(PipelineTriggerType, {
42
+ name: 'PipelineTriggerType',
43
+ description: 'How pipeline is triggered'
44
+ })
45
+
46
+ /**
47
+ * ML Pipeline Entity
48
+ *
49
+ * Represents an end-to-end ML pipeline for auto-training
50
+ */
51
+ @Entity('ml_pipelines')
52
+ @Index('ix_ml_pipeline_0', ['domain', 'name'])
53
+ @Index('ix_ml_pipeline_1', ['domain', 'status'])
54
+ @ObjectType({ description: 'ML Pipeline for automated training workflow' })
55
+ export class MLPipeline {
56
+ @PrimaryGeneratedColumn('uuid')
57
+ @Field(type => ID, { description: 'Pipeline ID' })
58
+ id: string
59
+
60
+ @Column({ nullable: true, comment: 'Pipeline name' })
61
+ @Field({ description: 'Pipeline name' })
62
+ name: string
63
+
64
+ @Column({ nullable: true, comment: 'Pipeline description' })
65
+ @Field({ nullable: true, description: 'Pipeline description' })
66
+ description?: string
67
+
68
+ @Column({ type: 'varchar', default: PipelineStatus.DRAFT, comment: 'Pipeline status' })
69
+ @Field(type => PipelineStatus, { description: 'Current pipeline status' })
70
+ status: PipelineStatus
71
+
72
+ @Column({ type: 'varchar', default: PipelineTriggerType.MANUAL, comment: 'Trigger type' })
73
+ @Field(type => PipelineTriggerType, { description: 'How pipeline is triggered' })
74
+ triggerType: PipelineTriggerType
75
+
76
+ @Column({ nullable: true, comment: 'Cron schedule (if SCHEDULE trigger)' })
77
+ @Field({ nullable: true, description: 'Cron expression for scheduling' })
78
+ schedule?: string
79
+
80
+ @Column({ type: 'int', nullable: true, comment: 'Label Studio project ID' })
81
+ @Field(type => Int, { nullable: true, description: 'Source Label Studio project' })
82
+ labelStudioProjectId?: number
83
+
84
+ @Column({ type: 'int', nullable: true, comment: 'Minimum new annotations to trigger' })
85
+ @Field(type => Int, { nullable: true, description: 'Min annotations threshold' })
86
+ annotationThreshold?: number
87
+
88
+ @Column({ type: 'simple-json', nullable: true, comment: 'Pipeline configuration' })
89
+ @Field(type => String, { nullable: true, description: 'Pipeline config as JSON' })
90
+ config?: string
91
+
92
+ @Column({ type: 'simple-json', nullable: true, comment: 'Training parameters' })
93
+ @Field(type => String, { nullable: true, description: 'Training params as JSON' })
94
+ trainingParams?: string
95
+
96
+ @Column({ type: 'float', nullable: true, comment: 'Auto-promotion accuracy threshold' })
97
+ @Field({ nullable: true, description: 'Auto-promote if accuracy exceeds this' })
98
+ promotionThreshold?: number
99
+
100
+ @Column({ type: 'simple-json', nullable: true, comment: 'Notification settings' })
101
+ @Field(type => String, { nullable: true, description: 'Notification config as JSON' })
102
+ notifications?: string
103
+
104
+ @Column({ type: 'timestamp', nullable: true, comment: 'Last execution time' })
105
+ @Field({ nullable: true, description: 'Last executed at' })
106
+ lastExecutedAt?: Date
107
+
108
+ @Column({ type: 'int', default: 0, comment: 'Total execution count' })
109
+ @Field(type => Int, { description: 'Total times executed' })
110
+ executionCount: number
111
+
112
+ @ManyToOne(() => Domain)
113
+ @Field({ nullable: true, description: 'Domain' })
114
+ domain?: Domain
115
+
116
+ @RelationId((pipeline: MLPipeline) => pipeline.domain)
117
+ domainId?: string
118
+
119
+ @ManyToOne(() => User, { nullable: true })
120
+ @Field(type => User, { nullable: true, description: 'Creator' })
121
+ creator?: User
122
+
123
+ @RelationId((pipeline: MLPipeline) => pipeline.creator)
124
+ creatorId?: string
125
+
126
+ @ManyToOne(() => User, { nullable: true })
127
+ @Field(type => User, { nullable: true, description: 'Last updater' })
128
+ updater?: User
129
+
130
+ @RelationId((pipeline: MLPipeline) => pipeline.updater)
131
+ updaterId?: string
132
+
133
+ @CreateDateColumn()
134
+ @Field({ description: 'Created at' })
135
+ createdAt: Date
136
+
137
+ @UpdateDateColumn()
138
+ @Field({ description: 'Updated at' })
139
+ updatedAt: Date
140
+
141
+ @DeleteDateColumn()
142
+ @Field({ nullable: true, description: 'Deleted at' })
143
+ deletedAt?: Date
144
+ }
@@ -0,0 +1,6 @@
1
+ import { MLPipelineRun } from './ml-pipeline-run'
2
+
3
+ export const entities = [MLPipelineRun]
4
+ export const resolvers = []
5
+
6
+ // export * from './ml-pipeline-run'
@@ -0,0 +1,118 @@
1
+ import {
2
+ CreateDateColumn,
3
+ UpdateDateColumn,
4
+ Entity,
5
+ Index,
6
+ Column,
7
+ RelationId,
8
+ ManyToOne,
9
+ PrimaryGeneratedColumn
10
+ } from 'typeorm'
11
+ import { ObjectType, Field, Int, ID, registerEnumType } from 'type-graphql'
12
+ import { Domain } from '@things-factory/shell'
13
+ import { User } from '@things-factory/auth-base'
14
+ import { MLPipeline } from '../ml-pipeline/ml-pipeline'
15
+
16
+ /**
17
+ * Pipeline Run Status
18
+ */
19
+ export enum PipelineRunStatus {
20
+ PENDING = 'PENDING',
21
+ RUNNING = 'RUNNING',
22
+ SUCCEEDED = 'SUCCEEDED',
23
+ FAILED = 'FAILED',
24
+ CANCELLED = 'CANCELLED'
25
+ }
26
+
27
+ registerEnumType(PipelineRunStatus, {
28
+ name: 'PipelineRunStatus',
29
+ description: 'Status of pipeline execution'
30
+ })
31
+
32
+ /**
33
+ * ML Pipeline Run Entity
34
+ *
35
+ * Tracks individual pipeline executions
36
+ */
37
+ @Entity('ml_pipeline_runs')
38
+ @Index('ix_ml_pipeline_run_0', ['domain', 'pipeline'])
39
+ @Index('ix_ml_pipeline_run_1', ['status', 'startedAt'])
40
+ @ObjectType({ description: 'Individual ML pipeline execution record' })
41
+ export class MLPipelineRun {
42
+ @PrimaryGeneratedColumn('uuid')
43
+ @Field(type => ID, { description: 'Run ID' })
44
+ id: string
45
+
46
+ @ManyToOne(() => MLPipeline)
47
+ @Field(type => MLPipeline, { description: 'Parent pipeline' })
48
+ pipeline: MLPipeline
49
+
50
+ @RelationId((run: MLPipelineRun) => run.pipeline)
51
+ pipelineId: string
52
+
53
+ @Column({ type: 'varchar', default: PipelineRunStatus.PENDING, comment: 'Run status' })
54
+ @Field(type => PipelineRunStatus, { description: 'Current run status' })
55
+ status: PipelineRunStatus
56
+
57
+ @Column({ type: 'timestamp', nullable: true, comment: 'Start time' })
58
+ @Field({ nullable: true, description: 'Started at' })
59
+ startedAt?: Date
60
+
61
+ @Column({ type: 'timestamp', nullable: true, comment: 'End time' })
62
+ @Field({ nullable: true, description: 'Completed at' })
63
+ completedAt?: Date
64
+
65
+ @Column({ type: 'int', nullable: true, comment: 'Duration in seconds' })
66
+ @Field(type => Int, { nullable: true, description: 'Duration in seconds' })
67
+ duration?: number
68
+
69
+ @Column({ type: 'text', nullable: true, comment: 'Error message if failed' })
70
+ @Field({ nullable: true, description: 'Error message' })
71
+ errorMessage?: string
72
+
73
+ @Column({ type: 'simple-json', nullable: true, comment: 'Run parameters' })
74
+ @Field(type => String, { nullable: true, description: 'Parameters used as JSON' })
75
+ params?: string
76
+
77
+ @Column({ type: 'simple-json', nullable: true, comment: 'Run results and metrics' })
78
+ @Field(type => String, { nullable: true, description: 'Results as JSON' })
79
+ results?: string
80
+
81
+ @Column({ type: 'int', nullable: true, comment: 'Training data count' })
82
+ @Field(type => Int, { nullable: true, description: 'Number of training samples' })
83
+ trainingDataCount?: number
84
+
85
+ @Column({ nullable: true, comment: 'Generated model ID' })
86
+ @Field({ nullable: true, description: 'Model ID created by this run' })
87
+ modelId?: string
88
+
89
+ @Column({ nullable: true, comment: 'MLflow run ID' })
90
+ @Field({ nullable: true, description: 'MLflow run ID' })
91
+ mlflowRunId?: string
92
+
93
+ @Column({ type: 'simple-json', nullable: true, comment: 'Logs or execution trace' })
94
+ @Field(type => String, { nullable: true, description: 'Execution logs as JSON' })
95
+ logs?: string
96
+
97
+ @ManyToOne(() => Domain)
98
+ @Field({ nullable: true, description: 'Domain' })
99
+ domain?: Domain
100
+
101
+ @RelationId((run: MLPipelineRun) => run.domain)
102
+ domainId?: string
103
+
104
+ @ManyToOne(() => User, { nullable: true })
105
+ @Field(type => User, { nullable: true, description: 'Triggered by' })
106
+ triggeredBy?: User
107
+
108
+ @RelationId((run: MLPipelineRun) => run.triggeredBy)
109
+ triggeredById?: string
110
+
111
+ @CreateDateColumn()
112
+ @Field({ description: 'Created at' })
113
+ createdAt: Date
114
+
115
+ @UpdateDateColumn()
116
+ @Field({ description: 'Updated at' })
117
+ updatedAt: Date
118
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "extends": "../../tsconfig-base.json",
3
+ "compilerOptions": {
4
+ "strict": false,
5
+ "declaration": true,
6
+ "module": "commonjs",
7
+ "outDir": "../dist-server",
8
+ "baseUrl": "./"
9
+ },
10
+ "include": ["./**/*"]
11
+ }
@@ -0,0 +1,13 @@
1
+ import route from './dist-client/route'
2
+ import bootstrap from './dist-client/bootstrap'
3
+
4
+ export default {
5
+ route,
6
+ routes: [
7
+ { tagname: 'mlops-dashboard-page', page: 'mlops-dashboard' },
8
+ { tagname: 'ml-model-list-page', page: 'ml-model-list' },
9
+ { tagname: 'ml-pipeline-list-page', page: 'ml-pipeline-list' },
10
+ { tagname: 'ml-deployment-list-page', page: 'ml-deployment-list' }
11
+ ],
12
+ bootstrap
13
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "menu": {
3
+ "mlops": "MLOps",
4
+ "ml-models": "ML Models",
5
+ "ml-pipelines": "Pipelines",
6
+ "ml-deployments": "Deployments",
7
+ "mlops-dashboard": "Dashboard"
8
+ },
9
+ "label": {
10
+ "model-name": "Model Name",
11
+ "model-version": "Version",
12
+ "model-stage": "Stage",
13
+ "model-framework": "Framework",
14
+ "model-metrics": "Metrics",
15
+ "pipeline-name": "Pipeline Name",
16
+ "pipeline-status": "Status",
17
+ "pipeline-trigger": "Trigger",
18
+ "deployment-environment": "Environment",
19
+ "deployment-status": "Status",
20
+ "deployment-endpoint": "Endpoint"
21
+ },
22
+ "button": {
23
+ "register-model": "Register Model",
24
+ "promote-model": "Promote",
25
+ "archive-model": "Archive",
26
+ "create-pipeline": "Create Pipeline",
27
+ "run-pipeline": "Run",
28
+ "deploy-model": "Deploy"
29
+ }
30
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "menu": {
3
+ "mlops": "MLOps",
4
+ "ml-models": "ML 모델",
5
+ "ml-pipelines": "파이프라인",
6
+ "ml-deployments": "배포",
7
+ "mlops-dashboard": "대시보드"
8
+ },
9
+ "label": {
10
+ "model-name": "모델 이름",
11
+ "model-version": "버전",
12
+ "model-stage": "단계",
13
+ "model-framework": "프레임워크",
14
+ "model-metrics": "메트릭",
15
+ "pipeline-name": "파이프라인 이름",
16
+ "pipeline-status": "상태",
17
+ "pipeline-trigger": "트리거",
18
+ "deployment-environment": "환경",
19
+ "deployment-status": "상태",
20
+ "deployment-endpoint": "엔드포인트"
21
+ },
22
+ "button": {
23
+ "register-model": "모델 등록",
24
+ "promote-model": "프로모션",
25
+ "archive-model": "아카이브",
26
+ "create-pipeline": "파이프라인 생성",
27
+ "run-pipeline": "실행",
28
+ "deploy-model": "배포"
29
+ }
30
+ }