@things-factory/ops-master 10.1.36 → 10.1.38

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 (81) hide show
  1. package/dist-client/bootstrap.d.ts +1 -0
  2. package/dist-client/bootstrap.js +12 -0
  3. package/dist-client/bootstrap.js.map +1 -1
  4. package/dist-client/master-change-policy-axes.d.ts +43 -0
  5. package/dist-client/master-change-policy-axes.js +35 -0
  6. package/dist-client/master-change-policy-axes.js.map +1 -0
  7. package/dist-client/master-change-policy-panel.d.ts +59 -0
  8. package/dist-client/master-change-policy-panel.js +452 -0
  9. package/dist-client/master-change-policy-panel.js.map +1 -0
  10. package/dist-client/pages/master/applied-when-dialog.d.ts +2 -2
  11. package/dist-client/pages/master/applied-when-dialog.js +2 -2
  12. package/dist-client/pages/master/applied-when-dialog.js.map +1 -1
  13. package/dist-client/pages/master/assignment-fields.d.ts +8 -9
  14. package/dist-client/pages/master/assignment-fields.js +25 -18
  15. package/dist-client/pages/master/assignment-fields.js.map +1 -1
  16. package/dist-client/pages/master/master-page-base.d.ts +0 -2
  17. package/dist-client/pages/master/master-page-base.js +1 -3
  18. package/dist-client/pages/master/master-page-base.js.map +1 -1
  19. package/dist-client/tsconfig.tsbuildinfo +1 -1
  20. package/dist-server/index.js +10 -0
  21. package/dist-server/index.js.map +1 -1
  22. package/dist-server/service/approval-route.d.ts +37 -0
  23. package/dist-server/service/approval-route.js +34 -0
  24. package/dist-server/service/approval-route.js.map +1 -0
  25. package/dist-server/service/assignment/assignment-history.d.ts +21 -16
  26. package/dist-server/service/assignment/assignment-history.js +91 -52
  27. package/dist-server/service/assignment/assignment-history.js.map +1 -1
  28. package/dist-server/service/assignment/assignment-write.d.ts +21 -4
  29. package/dist-server/service/assignment/assignment-write.js +41 -9
  30. package/dist-server/service/assignment/assignment-write.js.map +1 -1
  31. package/dist-server/service/assignment/{assignment-claim.d.ts → master-value-claim.d.ts} +31 -7
  32. package/dist-server/service/assignment/{assignment-claim.js → master-value-claim.js} +45 -31
  33. package/dist-server/service/assignment/master-value-claim.js.map +1 -0
  34. package/dist-server/service/index.d.ts +5 -2
  35. package/dist-server/service/index.js +9 -1
  36. package/dist-server/service/index.js.map +1 -1
  37. package/dist-server/service/master-axis.d.ts +14 -3
  38. package/dist-server/service/master-axis.js +16 -15
  39. package/dist-server/service/master-axis.js.map +1 -1
  40. package/dist-server/service/master-change-policy.d.ts +74 -2
  41. package/dist-server/service/master-change-policy.js +187 -21
  42. package/dist-server/service/master-change-policy.js.map +1 -1
  43. package/dist-server/service/material/material-revision-resolver.d.ts +7 -2
  44. package/dist-server/service/material/material-revision-resolver.js +18 -0
  45. package/dist-server/service/material/material-revision-resolver.js.map +1 -1
  46. package/dist-server/service/material/material-revision-service.d.ts +32 -2
  47. package/dist-server/service/material/material-revision-service.js +129 -0
  48. package/dist-server/service/material/material-revision-service.js.map +1 -1
  49. package/dist-server/service/material/material-revision.d.ts +7 -5
  50. package/dist-server/service/material/material-revision.js +2 -2
  51. package/dist-server/service/material/material-revision.js.map +1 -1
  52. package/dist-server/service/recipe/index.d.ts +1 -1
  53. package/dist-server/service/recipe/recipe-revision-resolver.d.ts +7 -2
  54. package/dist-server/service/recipe/recipe-revision-resolver.js +18 -0
  55. package/dist-server/service/recipe/recipe-revision-resolver.js.map +1 -1
  56. package/dist-server/service/recipe/recipe-revision-service.d.ts +33 -2
  57. package/dist-server/service/recipe/recipe-revision-service.js +139 -0
  58. package/dist-server/service/recipe/recipe-revision-service.js.map +1 -1
  59. package/dist-server/service/recipe/recipe-revision.d.ts +8 -6
  60. package/dist-server/service/recipe/recipe-revision.js +2 -2
  61. package/dist-server/service/recipe/recipe-revision.js.map +1 -1
  62. package/dist-server/service/revision-baseline.d.ts +63 -0
  63. package/dist-server/service/revision-baseline.js +72 -0
  64. package/dist-server/service/revision-baseline.js.map +1 -0
  65. package/dist-server/service/test-spec/test-spec-revision-resolver.d.ts +7 -2
  66. package/dist-server/service/test-spec/test-spec-revision-resolver.js +18 -0
  67. package/dist-server/service/test-spec/test-spec-revision-resolver.js.map +1 -1
  68. package/dist-server/service/test-spec/test-spec-revision-service.d.ts +37 -2
  69. package/dist-server/service/test-spec/test-spec-revision-service.js +122 -0
  70. package/dist-server/service/test-spec/test-spec-revision-service.js.map +1 -1
  71. package/dist-server/service/test-spec/test-spec-revision.d.ts +7 -5
  72. package/dist-server/service/test-spec/test-spec-revision.js +2 -2
  73. package/dist-server/service/test-spec/test-spec-revision.js.map +1 -1
  74. package/dist-server/tsconfig.tsbuildinfo +1 -1
  75. package/package.json +5 -4
  76. package/translations/en.json +63 -2
  77. package/translations/ja.json +62 -1
  78. package/translations/ko.json +63 -2
  79. package/translations/ms.json +62 -1
  80. package/translations/zh.json +64 -1
  81. package/dist-server/service/assignment/assignment-claim.js.map +0 -1
@@ -82,7 +82,7 @@ tslib_1.__decorate([
82
82
  tslib_1.__metadata("design:type", String)
83
83
  ], TestSpecificationRevision.prototype, "reason", void 0);
84
84
  tslib_1.__decorate([
85
- (0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: false }),
85
+ (0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: true }),
86
86
  tslib_1.__metadata("design:type", auth_base_1.User)
87
87
  ], TestSpecificationRevision.prototype, "creator", void 0);
88
88
  tslib_1.__decorate([
@@ -141,7 +141,7 @@ tslib_1.__decorate([
141
141
  tslib_1.__metadata("design:type", String)
142
142
  ], TestSpecificationPlan.prototype, "releaseKind", void 0);
143
143
  tslib_1.__decorate([
144
- (0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: false }),
144
+ (0, typeorm_1.ManyToOne)(() => auth_base_1.User, { nullable: true }),
145
145
  tslib_1.__metadata("design:type", auth_base_1.User)
146
146
  ], TestSpecificationPlan.prototype, "publisher", void 0);
147
147
  tslib_1.__decorate([
@@ -1 +1 @@
1
- {"version":3,"file":"test-spec-revision.js","sourceRoot":"","sources":["../../../server/service/test-spec/test-spec-revision.ts"],"names":[],"mappings":"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","sourcesContent":["import { Column, Entity, ForeignKey, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport type { TestSpecification } from './test-specification'\nimport { MasterChangePolicy } from '../master-change-policy'\nimport type { TestSpecificationCriterion } from '@operato/ops-contract'\n\n// Relations own the columns and RelationId exposes read-only identifiers.\n// Where a composite FK is declared, disable only the redundant single-column FK;\n// the database still enforces existence, domain and specification together.\n\n/** Content and the proposed effective date freeze together. Worklist owns the decision. */\n@Entity('ops_test_spec_revision')\n@Index('ix_test_spec_revision_subject', ['domain', 'spec', 'id'], { unique: true })\n@Index('ix_test_spec_revision_list', ['domain', 'spec', 'createdAt'])\n@ForeignKey(() => MasterChangePolicy, ['domain', 'policy'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecificationRevision', ['domain', 'spec', 'baseRevision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\n@Index('ix_spec_revision_number', ['domain', 'spec', 'revisionNumber'], { unique: true })\nexport class TestSpecificationRevision {\n /** Human revision number within one identity; assigned once under the subject write lock. */\n @Column('int') revisionNumber: number\n @ManyToOne(() => MasterChangePolicy, { nullable: false, createForeignKeyConstraints: false })\n policy: MasterChangePolicy\n @RelationId((row: TestSpecificationRevision) => row.policy)\n policyId: string\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationRevision) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationRevision) => row.spec)\n specId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: true, createForeignKeyConstraints: false })\n baseRevision: TestSpecificationRevision | null\n @RelationId((row: TestSpecificationRevision) => row.baseRevision)\n baseRevisionId: string | null\n @Column('int') baseGeneration: number\n @Column('int', { default: 0 }) editGeneration: number\n @Column('varchar') version: string\n @Column('text', { nullable: true }) description: string | null\n @Column('simple-json') criteria: TestSpecificationCriterion[]\n @Column({ type: Date }) effectiveFrom: Date\n @Column('text') reason: string\n @ManyToOne(() => User, { nullable: false })\n creator: User\n @RelationId((row: TestSpecificationRevision) => row.creator)\n creatorId: string\n @Column({ type: Date }) createdAt: Date\n @Column({ type: Date, nullable: true }) frozenAt: Date | null\n @Column('varchar', { nullable: true }) contentHash: string | null\n /** Opaque product decision ID: the common master module does not depend on worklist. */\n @Column('varchar', { nullable: true }) activityInstanceId: string | null\n}\n\n/** An append-only generation of the complete schedule for one specification. */\n@Entity('ops_test_spec_plan')\n@Index('ix_test_spec_plan_generation', ['domain', 'spec', 'generation'], { unique: true })\n@Index('ix_test_spec_plan_identity', ['domain', 'spec', 'id'], { unique: true })\n@Index('ix_test_spec_plan_decision', ['activityInstanceId'], { unique: true })\n@Index('ix_test_spec_plan_publication', ['publishedRevision'], { unique: true })\n@ForeignKey(() => MasterChangePolicy, ['domain', 'policy'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'publishedRevision'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\nexport class TestSpecificationPlan {\n @ManyToOne(() => MasterChangePolicy, { nullable: false, createForeignKeyConstraints: false })\n policy: MasterChangePolicy\n @RelationId((row: TestSpecificationPlan) => row.policy)\n policyId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n publishedRevision: TestSpecificationRevision\n @RelationId((row: TestSpecificationPlan) => row.publishedRevision)\n publishedRevisionId: string\n @Column('varchar') releaseKind: 'approved' | 'policy'\n @ManyToOne(() => User, { nullable: false }) publisher: User\n @RelationId((row: TestSpecificationPlan) => row.publisher) publisherId: string\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationPlan) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationPlan) => row.spec)\n specId: string\n @Column('int') generation: number\n @Column({ type: Date }) recordedAt: Date\n @Column('varchar', { nullable: true }) activityInstanceId: string | null\n @ManyToOne(() => User, { nullable: true })\n approver: User\n @RelationId((row: TestSpecificationPlan) => row.approver)\n approverId: string\n @Column('varchar') submissionHash: string\n}\n\n@Entity('ops_test_spec_segment')\n@Index('ix_test_spec_segment_lookup', ['domain', 'spec', 'plan', 'validFrom'])\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationPlan, ['domain', 'spec', 'plan'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'revision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\nexport class TestSpecificationSegment {\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationSegment) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationSegment) => row.spec)\n specId: string\n @ManyToOne(() => TestSpecificationPlan, { nullable: false, createForeignKeyConstraints: false })\n plan: TestSpecificationPlan\n @RelationId((row: TestSpecificationSegment) => row.plan)\n planId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n revision: TestSpecificationRevision\n @RelationId((row: TestSpecificationSegment) => row.revision)\n revisionId: string\n @Column({ type: Date }) validFrom: Date\n @Column({ type: Date, nullable: true }) validTo: Date | null\n}\n\n/** Permanent evidence of the selected revision, also the retroactivity interlock. */\n@Entity('ops_test_spec_basis')\n@Index('ix_test_spec_basis_identity', ['domain', 'id', 'revision'], { unique: true })\n@Index('ix_test_spec_basis_record', ['domain', 'recordKey'], { unique: true })\n@Index('ix_test_spec_basis_time', ['domain', 'spec', 'businessTime'])\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationPlan, ['domain', 'spec', 'plan'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'revision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\nexport class TestSpecificationBasis {\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationBasis) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationBasis) => row.spec)\n specId: string\n @Column('varchar') recordKey: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n revision: TestSpecificationRevision\n @RelationId((row: TestSpecificationBasis) => row.revision)\n revisionId: string\n @ManyToOne(() => TestSpecificationPlan, { nullable: false, createForeignKeyConstraints: false })\n plan: TestSpecificationPlan\n @RelationId((row: TestSpecificationBasis) => row.plan)\n planId: string\n @Column('varchar') contentHash: string\n @Column({ type: Date }) businessTime: Date\n @Column({ type: Date }) resolvedAt: Date\n}\n\nexport const TEST_SPEC_REVISION_ENTITIES = [\n TestSpecificationRevision,\n TestSpecificationPlan,\n TestSpecificationSegment,\n TestSpecificationBasis\n]\n"]}
1
+ {"version":3,"file":"test-spec-revision.js","sourceRoot":"","sources":["../../../server/service/test-spec/test-spec-revision.ts"],"names":[],"mappings":"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","sourcesContent":["import { Column, Entity, ForeignKey, Index, ManyToOne, PrimaryGeneratedColumn, RelationId } from 'typeorm'\nimport { Domain } from '@things-factory/shell'\nimport { User } from '@things-factory/auth-base'\nimport type { TestSpecification } from './test-specification'\nimport { MasterChangePolicy } from '../master-change-policy'\nimport type { TestSpecificationCriterion } from '@operato/ops-contract'\n\n// Relations own the columns and RelationId exposes read-only identifiers.\n// Where a composite FK is declared, disable only the redundant single-column FK;\n// the database still enforces existence, domain and specification together.\n\n/** Content and the proposed effective date freeze together. Worklist owns the decision. */\n@Entity('ops_test_spec_revision')\n@Index('ix_test_spec_revision_subject', ['domain', 'spec', 'id'], { unique: true })\n@Index('ix_test_spec_revision_list', ['domain', 'spec', 'createdAt'])\n@ForeignKey(() => MasterChangePolicy, ['domain', 'policy'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecificationRevision', ['domain', 'spec', 'baseRevision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\n@Index('ix_spec_revision_number', ['domain', 'spec', 'revisionNumber'], { unique: true })\nexport class TestSpecificationRevision {\n /** Human revision number within one identity; assigned once under the subject write lock. */\n @Column('int') revisionNumber: number\n @ManyToOne(() => MasterChangePolicy, { nullable: false, createForeignKeyConstraints: false })\n policy: MasterChangePolicy\n @RelationId((row: TestSpecificationRevision) => row.policy)\n policyId: string\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationRevision) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationRevision) => row.spec)\n specId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: true, createForeignKeyConstraints: false })\n baseRevision: TestSpecificationRevision | null\n @RelationId((row: TestSpecificationRevision) => row.baseRevision)\n baseRevisionId: string | null\n @Column('int') baseGeneration: number\n @Column('int', { default: 0 }) editGeneration: number\n @Column('varchar') version: string\n @Column('text', { nullable: true }) description: string | null\n @Column('simple-json') criteria: TestSpecificationCriterion[]\n @Column({ type: Date }) effectiveFrom: Date\n @Column('text') reason: string\n /** Empty only on a baseline: nobody wrote it, it records the row as it already stood. */\n @ManyToOne(() => User, { nullable: true })\n creator: User | null\n @RelationId((row: TestSpecificationRevision) => row.creator)\n creatorId: string | null\n @Column({ type: Date }) createdAt: Date\n @Column({ type: Date, nullable: true }) frozenAt: Date | null\n @Column('varchar', { nullable: true }) contentHash: string | null\n /** Opaque product decision ID: the common master module does not depend on worklist. */\n @Column('varchar', { nullable: true }) activityInstanceId: string | null\n}\n\n/** An append-only generation of the complete schedule for one specification. */\n@Entity('ops_test_spec_plan')\n@Index('ix_test_spec_plan_generation', ['domain', 'spec', 'generation'], { unique: true })\n@Index('ix_test_spec_plan_identity', ['domain', 'spec', 'id'], { unique: true })\n@Index('ix_test_spec_plan_decision', ['activityInstanceId'], { unique: true })\n@Index('ix_test_spec_plan_publication', ['publishedRevision'], { unique: true })\n@ForeignKey(() => MasterChangePolicy, ['domain', 'policy'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'publishedRevision'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\nexport class TestSpecificationPlan {\n @ManyToOne(() => MasterChangePolicy, { nullable: false, createForeignKeyConstraints: false })\n policy: MasterChangePolicy\n @RelationId((row: TestSpecificationPlan) => row.policy)\n policyId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n publishedRevision: TestSpecificationRevision\n @RelationId((row: TestSpecificationPlan) => row.publishedRevision)\n publishedRevisionId: string\n /** `baseline`: stood at boot from a row that predates revisions. No approver, no publisher. */\n @Column('varchar') releaseKind: 'approved' | 'policy' | 'baseline'\n @ManyToOne(() => User, { nullable: true }) publisher: User | null\n @RelationId((row: TestSpecificationPlan) => row.publisher) publisherId: string | null\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationPlan) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationPlan) => row.spec)\n specId: string\n @Column('int') generation: number\n @Column({ type: Date }) recordedAt: Date\n @Column('varchar', { nullable: true }) activityInstanceId: string | null\n @ManyToOne(() => User, { nullable: true })\n approver: User\n @RelationId((row: TestSpecificationPlan) => row.approver)\n approverId: string\n @Column('varchar') submissionHash: string\n}\n\n@Entity('ops_test_spec_segment')\n@Index('ix_test_spec_segment_lookup', ['domain', 'spec', 'plan', 'validFrom'])\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationPlan, ['domain', 'spec', 'plan'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'revision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\nexport class TestSpecificationSegment {\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationSegment) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationSegment) => row.spec)\n specId: string\n @ManyToOne(() => TestSpecificationPlan, { nullable: false, createForeignKeyConstraints: false })\n plan: TestSpecificationPlan\n @RelationId((row: TestSpecificationSegment) => row.plan)\n planId: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n revision: TestSpecificationRevision\n @RelationId((row: TestSpecificationSegment) => row.revision)\n revisionId: string\n @Column({ type: Date }) validFrom: Date\n @Column({ type: Date, nullable: true }) validTo: Date | null\n}\n\n/** Permanent evidence of the selected revision, also the retroactivity interlock. */\n@Entity('ops_test_spec_basis')\n@Index('ix_test_spec_basis_identity', ['domain', 'id', 'revision'], { unique: true })\n@Index('ix_test_spec_basis_record', ['domain', 'recordKey'], { unique: true })\n@Index('ix_test_spec_basis_time', ['domain', 'spec', 'businessTime'])\n@ForeignKey('TestSpecification', ['domain', 'spec'], ['domain', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationPlan, ['domain', 'spec', 'plan'], ['domain', 'spec', 'id'], { onDelete: 'RESTRICT' })\n@ForeignKey(() => TestSpecificationRevision, ['domain', 'spec', 'revision'], ['domain', 'spec', 'id'], {\n onDelete: 'RESTRICT'\n})\nexport class TestSpecificationBasis {\n @PrimaryGeneratedColumn('uuid') id: string\n @ManyToOne(() => Domain, { nullable: false })\n domain: Domain\n @RelationId((row: TestSpecificationBasis) => row.domain)\n domainId: string\n @ManyToOne('TestSpecification', { nullable: false, createForeignKeyConstraints: false })\n spec: TestSpecification\n @RelationId((row: TestSpecificationBasis) => row.spec)\n specId: string\n @Column('varchar') recordKey: string\n @ManyToOne(() => TestSpecificationRevision, { nullable: false, createForeignKeyConstraints: false })\n revision: TestSpecificationRevision\n @RelationId((row: TestSpecificationBasis) => row.revision)\n revisionId: string\n @ManyToOne(() => TestSpecificationPlan, { nullable: false, createForeignKeyConstraints: false })\n plan: TestSpecificationPlan\n @RelationId((row: TestSpecificationBasis) => row.plan)\n planId: string\n @Column('varchar') contentHash: string\n @Column({ type: Date }) businessTime: Date\n @Column({ type: Date }) resolvedAt: Date\n}\n\nexport const TEST_SPEC_REVISION_ENTITIES = [\n TestSpecificationRevision,\n TestSpecificationPlan,\n TestSpecificationSegment,\n TestSpecificationBasis\n]\n"]}