diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ef2e51b..2bbf38ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,201 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v2.1.0](https://github.com/eclipse-tractusx/puris/releases/tag/2.1.0) + +The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs +and understanding the concept changes. + +The **need for configuration updates** is **marked bold**. + +### Added + +* **ERP Adapter** + * Added client ([#443](https://github.com/eclipse-tractusx/puris/pull/443)) + * Added trigger service ([#474](https://github.com/eclipse-tractusx/puris/pull/474)) + * Added button to frontend ([#504](https://github.com/eclipse-tractusx/puris/pull/504)) +* backend implementation for Days of Supply ([CX-0145](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange)) ([#441](https://github.com/eclipse-tractusx/puris/pull/441)) +* Demand and Capacity Notifications ([CX-0146](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications)) can be sent between partners ([#447](https://github.com/eclipse-tractusx/puris/pull/447), [#451](https://github.com/eclipse-tractusx/puris/pull/451)) + +### Changed + +Fixes + +* Fail contract negotiation if non-empty obligations or prohibitions are set ([#509](https://github.com/eclipse-tractusx/puris/pull/509)) +* Use expanded jsonLD when evaluating catalog offers ([#416](https://github.com/eclipse-tractusx/puris/pull/416)) +* Publish cxId to DTR when retrieving Part Type later ([#483](https://github.com/eclipse-tractusx/puris/pull/483)) + +CI + +* Trivy Workflow ([#452](https://github.com/eclipse-tractusx/puris/pull/452)) +* Helm Test to only check for version bump in the end so that version bumps are not enforced anymore ([#450](https://github.com/eclipse-tractusx/puris/pull/450)) + +Chore + +* Updated license information ([#468](https://github.com/eclipse-tractusx/puris/pull/468), [#476](https://github.com/eclipse-tractusx/puris/pull/476)) +* Update of swagger documentation ([#514](https://github.com/eclipse-tractusx/puris/pull/514), [#516](https://github.com/eclipse-tractusx/puris/pull/516)) +* Version Bumps + * Infrastructure Components + * Tractus-X EDC to 0.7.3 ([#508](https://github.com/eclipse-tractusx/puris/pull/508)) + * Digital Twin Registry to 0.5.0 ([#496](https://github.com/eclipse-tractusx/puris/pull/496)) + * Backend Dependencies + * spring boot starter parent to 3.3.1 ([#471](https://github.com/eclipse-tractusx/puris/pull/471)) + * Frontend Dependencies + * vite to 5.3.3 ([#481](https://github.com/eclipse-tractusx/puris/pull/481)) + * postcss to 8.4.39 ([#478](https://github.com/eclipse-tractusx/puris/pull/478)) + * braces to 3.0.3 ([#453](https://github.com/eclipse-tractusx/puris/pull/453)) + * typescript-eslint/eslint-plugin to 7.0.0 (7.0.0) + * IAM Mock (Local Deployment): certify to 2024.7.4 ([#484](https://github.com/eclipse-tractusx/puris/pull/484)) + * CI + * actions/setup-python to 5.1.1 ([#492](https://github.com/eclipse-tractusx/puris/pull/492)) + * github/codeql-action to 3.25.10 ([#448](https://github.com/eclipse-tractusx/puris/pull/448)) + * checkmarx/kics-github-action to 2.1.0 ([#446](https://github.com/eclipse-tractusx/puris/pull/446)) + * actions/download-artifact to 4.1.7 ([#396](https://github.com/eclipse-tractusx/puris/pull/396)) + * azure/setup-helm to 4 ([#395](https://github.com/eclipse-tractusx/puris/pull/395)) + +### Removed + +N.A. + +### Known Knowns + +#### Security + +The Backend is currently secured via API Key while the Frontend already uses an API-KEY. +See [Admin Guide](./docs/admin/Admin_Guide.md) for further information. + +#### Upgradeability + +As currently no active user was known migrations of data are not yet supported. The chart technically is upgradeable. + +#### Data Sovereignty + +For productive use the following enhancements are encouraged + +* User FrontEnd available: Role Company Admin is able to query catalogue and see negotiations and transfers + But company rules / policies need to be configured upfront in backend (via postman) to enable automatic contract + negotiations, responsibility lies with Company Admin role + --> add section in the User Manual describing this and the (legal) importance and responsibility behind defining these + rules +* Currently only one standard policy per reg. connector / customer instance is supported (more precisely one for DTR, + one for all submodels), negotiation happens automatically based on this + --> enhance option to select partner and define specific policies (to be planned in context of BPDM Integration) + --> UI for specific configuration by dedicated role (e.g. Comp Admin) and more flexible policy configuration (without + code changes) is needed +* As a non-Admin user I do not have ability to view policies in detail --> transparency for users when interacting with + and requesting / consuming data via dashboard / views on underlying usage policies to be enhanced +* ContractReference Constraint or configuration of policies specific to one partner only not implemented --> + clarification of potential reference to "PURIS standard contract" and enabling of ContractReference for 24.08. +* unclear meaning of different stati in negotations --> add view of successfull contract agreeements wrt which data have + been closed +* current logging only done on info level --> enhance logging of policies (currently only available at debug level) +* in case of non-matching policies (tested in various scenarios) no negotiation takes place --> + **enhance visualization or specific Error message to user** +* no validation of the Schema "profile": "cx-policy:profile2405" (required to ensure interop with other PURIS apps) + +#### Styleguide + +Overall + +* Brief description at the top of each page describing content would be nice for better user experience. + + +Stocks + +* user needs better guidance to click on a stock to update it (else error prone to enter one + slightly different attribute and Add instead of update) +* Refresh -- update request has been sent successfully. -> more information regarding data transfer needed for user + +Catalog + +* No action possible -> unclear to user when and how user will consume an offer + +Negotiations + +* Add filters for transparency (bpnl, state) + +## [v2.0.2](https://github.com/eclipse-tractusx/puris/releases/tag/2.0.2) + +The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs +and understanding the concept changes. + +The **need for configuration updates** is **marked bold**. + +### Added + +* Added backend implementation to CRUD Demand and Capacity + Notifications ([#415](https://github.com/eclipse-tractusx/puris/pull/415)) +* Added ERP response interface ([#418](https://github.com/eclipse-tractusx/puris/pull/418)) + +### Changed + +* Fixed check when answering delivery information request from a customer which prevented always to + answer ([#435](https://github.com/eclipse-tractusx/puris/pull/435)) + +### Removed + +N.A. + +### Known Knowns + +#### Security + +The Backend is currently secured via API Key while the Frontend already uses an API-KEY. +See [Admin Guide](./docs/admin/Admin_Guide.md) for further information. + +#### Upgradeability + +As currently no active user was known migrations of data are not yet supported. The chart technically is upgradeable. + +#### Data Sovereignty + +For productive use the following enhancements are encouraged + +* User FrontEnd available: Role Company Admin is able to query catalogue and see negotiations and transfers + But company rules / policies need to be configured upfront in backend (via postman) to enable automatic contract + negotiations, responsibility lies with Company Admin role + --> add section in the User Manual describing this and the (legal) importance and responsibility behind defining these + rules +* Currently only one standard policy per reg. connector / customer instance is supported (more precisely one for DTR, + one for all submodels), negotiation happens automatically based on this + --> enhance option to select partner and define specific policies (to be planned in context of BPDM Integration) + --> UI for specific configuration by dedicated role (e.g. Comp Admin) and more flexible policy configuration (without + code changes) is needed +* As a non-Admin user I do not have ability to view policies in detail --> transparency for users when interacting with + and requesting / consuming data via dashboard / views on underlying usage policies to be enhanced +* ContractReference Constraint or configuration of policies specific to one partner only not implemented --> + clarification of potential reference to "PURIS standard contract" and enabling of ContractReference for 24.08. +* unclear meaning of different stati in negotations --> add view of successfull contract agreeements wrt which data have + been closed +* current logging only done on info level --> enhance logging of policies (currently only available at debug level) +* in case of non-matching policies (tested in various scenarios) no negotiation takes place --> + **enhance visualization or specific Error message to user** +* no validation of the Schema "profile": "cx-policy:profile2405" (required to ensure interop with other PURIS apps) + +#### Styleguide + +Overall + +* Brief description at the top of each page describing content would be nice for better user experience. + +Dashboard + +* Similar for Create Delivery (here SOME entries are reset but warnings stay) (**block**) + +Stocks + +* user needs better guidance to click on a stock to update it (else error prone to enter one + slightly different attribute and Add instead of update) +* Refresh -- update request has been sent successfully. -> more information regarding data transfer needed for user + +Catalog + +* No action possible -> unclear to user when and how user will consume an offer + +Negotiations + +* Add filters for transparency (bpnl, state) + ## [v2.0.1](https://github.com/eclipse-tractusx/puris/releases/tag/2.0.1) The following Changelog lists the changes. Please refer to the [documentation](docs/README.md) for configuration needs diff --git a/README.md b/README.md index 543db7c4..c0d3ab72 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,19 @@ Beside the dependencies provided in the Helm Chart, the following dependencies h | [Tractus-X Connector](https://github.com/eclipse-tractusx/tractusx-edc/tree/main/charts/tractusx-connector) | 0.7.3 | 0.7.3 | | [Digital Twin Registry](https://github.com/eclipse-tractusx/sldt-digital-twin-registry/tree/main/charts/registry) | 0.5.0 | 0.5.0 | +## Overview of Implemented Standards + +The application follows the following Catena-X standards (business-wise) to the following degree: + +| Standard | Level of implementation | +|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| +| [CX-0118 Delivery Information Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0118-ActualDeliveryInformationExchange) | Compliant. | +| [CX-0120 Short-Term Material Demand Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0120-ShortTermMaterialDemandExchange) | Compliant. | +| [CX-0121 Planned Production Output Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0121-PlannedProductionOutputExchange) | Compliant. | +| [CX-0122 Item Stock Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0122-ItemStockExchange) | Compliant. | +| [CX-0145 Days of Supply Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange) | Missing EDC and Frontend integration. | +| [CX-0146 Supply Chain Disruption Notifications 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications) | Missing functionality to react and close. | + ## Known Knows ### Data Sovereignty diff --git a/backend/pom.xml b/backend/pom.xml index 744a82df..9ac092b3 100644 --- a/backend/pom.xml +++ b/backend/pom.xml @@ -33,7 +33,7 @@ org.eclipse.tractusx.puris puris-backend - 2.0.2 + 2.1.0 puris-backend PURIS Backend diff --git a/charts/puris/Chart.yaml b/charts/puris/Chart.yaml index de95772b..91911ff6 100644 --- a/charts/puris/Chart.yaml +++ b/charts/puris/Chart.yaml @@ -41,4 +41,4 @@ version: 2.7.0 # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "2.0.2" +appVersion: "2.1.0" diff --git a/charts/puris/README.md b/charts/puris/README.md index db408c0f..08c9798c 100644 --- a/charts/puris/README.md +++ b/charts/puris/README.md @@ -1,6 +1,6 @@ # puris -![Version: 2.7.0](https://img.shields.io/badge/Version-2.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.0.2](https://img.shields.io/badge/AppVersion-2.0.2-informational?style=flat-square) +![Version: 2.7.0](https://img.shields.io/badge/Version-2.7.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 2.1.0](https://img.shields.io/badge/AppVersion-2.1.0-informational?style=flat-square) A helm chart for Kubernetes deployment of PURIS @@ -16,12 +16,12 @@ To install the chart with the release name `puris`: ```shell $ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev -$ helm install puris tractusx-dev/policy-hub +$ helm install puris tractusx-dev/puris ``` To install the helm chart into your cluster with your values: ```shell -$ helm install -f your-values.yaml puris tractusx-dev/policy-hub +$ helm install -f your-values.yaml puris tractusx-dev/puris ``` To use the helm chart as a dependency: diff --git a/charts/puris/README.md.gotmpl b/charts/puris/README.md.gotmpl index cfa302ec..5c9ebf11 100644 --- a/charts/puris/README.md.gotmpl +++ b/charts/puris/README.md.gotmpl @@ -18,12 +18,12 @@ To install the chart with the release name `puris`: ```shell $ helm repo add tractusx-dev https://eclipse-tractusx.github.io/charts/dev -$ helm install puris tractusx-dev/policy-hub +$ helm install puris tractusx-dev/puris ``` To install the helm chart into your cluster with your values: ```shell -$ helm install -f your-values.yaml puris tractusx-dev/policy-hub +$ helm install -f your-values.yaml puris tractusx-dev/puris ``` To use the helm chart as a dependency: diff --git a/docs/admin/Admin_Guide.md b/docs/admin/Admin_Guide.md index 30ed9716..2a5fee9c 100644 --- a/docs/admin/Admin_Guide.md +++ b/docs/admin/Admin_Guide.md @@ -149,6 +149,26 @@ _**ATTENTION**: Usage Purposes are no credentials than can be enforced technical supported within Catena-X in the [odrl profile](https://github.com/catenax-eV/cx-odrl-profile/blob/main/profile.md) of the current release._ +## Configure ERP Update + +To use an ERP Adapter, you need to configure the information below `backend.puris.erpadapter`: + +| Helm | Docker | +|------------------------------------------|----------------------------------| +| backend.puris.erpadapter.enabled | PURIS_ERPADAPTER_ENABLED | +| backend.puris.erpadapter.url | PURIS_ERPADAPTER_URL | +| backend.puris.erpadapter.authkey | PURIS_ERPADAPTER_AUTHKEY | +| backend.puris.erpadapter.refreshinterval | PURIS_ERPADAPTER_REFRESHINTERVAL | +| backend.puris.erpadapter.timelimit | PURIS_ERPADAPTER_TIMELIMIT | + +The configuration of the refreshinterval and the timelimit are considered as follows: + +- timelimit: whenever an erp update has been scheduled, then it is scheduled for n days. It gets rescheduled for n days +whenever triggered. Thus, no further update will be done after n days of no trigger. +- refreshinterval: defines in minutes after which time an update is performed for the scheduled updates. + +Refer to the [helm chart's README](../../charts/puris/README.md) for further information. + ## Rate Limiting using nginx Rate limiting is by default enabled in the puris frontend served by nginx and can be dynamically configured. diff --git a/docs/api/openAPI.yaml b/docs/api/openAPI.yaml index 40d171f9..7710eab6 100644 --- a/docs/api/openAPI.yaml +++ b/docs/api/openAPI.yaml @@ -204,6 +204,188 @@ components: - day - demand type: object + DemandAndCapacityNotificationDto: + additionalProperties: false + properties: + affectedMaterialNumbers: + items: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + maxItems: 50 + type: array + affectedSitesBpnsRecipient: + items: + maxItems: 50 + pattern: ^BPNS[0-9a-zA-Z]{12}$ + type: string + maxItems: 50 + type: array + affectedSitesBpnsSender: + items: + maxItems: 50 + pattern: ^BPNS[0-9a-zA-Z]{12}$ + type: string + maxItems: 50 + type: array + effect: + enum: + - demand-reduction + - demand-increase + - capacity-reduction + - capacity-increase + maxItems: 50 + type: string + expectedEndDateOfEffect: + format: date-time + maxItems: 50 + type: string + leadingRootCause: + enum: + - strike + - natural-disaster + - production-incident + - pandemic-or-epidemic + - logistics-disruption + - war + - other + maxItems: 50 + type: string + notificationId: + format: uuid + maxItems: 50 + type: string + partnerBpnl: + maxItems: 50 + pattern: ^BPNL[0-9a-zA-Z]{12}$ + type: string + relatedNotificationId: + format: uuid + maxItems: 50 + type: string + reported: + type: boolean + sourceNotificationId: + format: uuid + maxItems: 50 + type: string + startDateOfEffect: + format: date-time + maxItems: 50 + type: string + status: + enum: + - resolved + - open + maxItems: 50 + type: string + text: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + uuid: + format: uuid + maxItems: 50 + type: string + type: object + DemandAndCapacityNotificationSamm: + additionalProperties: false + properties: + affectedSitesRecipient: + items: + maxItems: 50 + pattern: ^BPNS[0-9a-zA-Z]{12}$ + type: string + maxItems: 50 + type: array + affectedSitesSender: + items: + maxItems: 50 + pattern: ^BPNS[0-9a-zA-Z]{12}$ + type: string + maxItems: 50 + type: array + contentChangedAt: + format: date-time + maxItems: 50 + type: string + effect: + enum: + - demand-reduction + - demand-increase + - capacity-reduction + - capacity-increase + maxItems: 50 + type: string + expectedEndDateOfEffect: + format: date-time + maxItems: 50 + type: string + leadingRootCause: + enum: + - strike + - natural-disaster + - production-incident + - pandemic-or-epidemic + - logistics-disruption + - war + - other + maxItems: 50 + type: string + materialGlobalAssetId: + items: + maxItems: 50 + pattern: (^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$) + type: string + maxItems: 50 + type: array + materialNumberCustomer: + items: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + maxItems: 50 + type: array + materialNumberSupplier: + items: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + maxItems: 50 + type: array + notificationId: + maxItems: 50 + pattern: (^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$) + type: string + relatedNotificationId: + maxItems: 50 + pattern: (^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$) + type: string + sourceNotificationId: + maxItems: 50 + pattern: (^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$) + type: string + startDateOfEffect: + format: date-time + maxItems: 50 + type: string + status: + enum: + - resolved + - open + maxItems: 50 + type: string + text: + maxItems: 50 + type: string + required: + - contentChangedAt + - effect + - leadingRootCause + - notificationId + - startDateOfEffect + - status + type: object DemandDto: additionalProperties: false properties: @@ -415,6 +597,26 @@ components: type: object JsonNode: type: object + Material: + additionalProperties: false + properties: + materialFlag: + type: boolean + materialNumberCx: + maxItems: 50 + pattern: (^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$)|(^urn:uuid:[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$) + type: string + name: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + ownMaterialNumber: + maxItems: 50 + pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ + type: string + productFlag: + type: boolean + type: object MaterialDto: additionalProperties: false properties: @@ -977,6 +1179,17 @@ components: pattern: ^[^\n\x0B\f\r\x85\u2028\u2029]+$ type: string type: object + SupplyDto: + additionalProperties: false + properties: + date: + format: date-time + maxItems: 50 + type: string + daysOfSupply: + format: double + type: number + type: object securitySchemes: X-API-KEY: in: header @@ -984,9 +1197,173 @@ components: type: apiKey info: title: PURIS FOSS Open API - version: 1.0.0 + version: 2.1.0 openapi: 3.0.1 paths: + /days-of-supply/customer: + get: + description: Calculate days of supply for customer for given number of days. + Filtered by given material number, partner bpnl and site bpns. + operationId: calculateCustomerDaysOfSupply + parameters: + - in: query + name: materialNumber + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: siteBpns + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: numberOfDays + required: true + schema: + additionalProperties: false + format: int32 + type: integer + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/SupplyDto' + maxItems: 50 + type: array + description: OK + summary: Calculate days of supply for customer for given number of days. + tags: + - supply-controller + /days-of-supply/customer/reported: + get: + description: Get days of supply for customer for given material number and partner + bpnl. + operationId: getCustomerDaysOfSupply + parameters: + - in: query + name: materialNumber + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/SupplyDto' + maxItems: 50 + type: array + description: OK + summary: Get days of supply for customer. + tags: + - supply-controller + /days-of-supply/supplier: + get: + description: Calculate days of supply for supplier for given number of days. + Filtered by given material number, partner bpnl and site bpns. + operationId: calculateSupplierDaysOfSupply + parameters: + - in: query + name: materialNumber + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: siteBpns + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: numberOfDays + required: true + schema: + additionalProperties: false + format: int32 + type: integer + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/SupplyDto' + maxItems: 50 + type: array + description: OK + summary: Calculate days of supply for supplier for given number of days. + tags: + - supply-controller + /days-of-supply/supplier/reported: + get: + description: Get days of supply for supplier for given material number and partner + bpnl. + operationId: getSupplierDaysOfSupply + parameters: + - in: query + name: materialNumber + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/SupplyDto' + maxItems: 50 + type: array + description: OK + summary: Get days of supply for supplier. + tags: + - supply-controller /delivery: get: description: Get all planned deliveries for the given material number. Optionally @@ -1347,12 +1724,216 @@ paths: summary: Updates a demand by its UUID tags: - demand-controller - /demand/reported: + /demand-and-capacity-notification: get: - description: Get all demands of partners for a material number. Optionally the - partners can be filtered by their bpnl and the demanding site can be filtered - by its bpns. - operationId: getAllDemandsForPartner + description: Get all own notifications. Optionally the partner can be filtered + by its bpnl. + operationId: getAllNotifications + parameters: + - in: query + name: partnerBpnl + required: false + schema: + additionalProperties: false + maxItems: 50 + type: string + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + maxItems: 50 + type: array + description: OK + summary: Get all own notifications + tags: + - demand-and-capacity-notification-controller + post: + operationId: createNotification + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + required: true + responses: + '201': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Notification was created. + '400': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Malformed or invalid request body. + '409': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Notification already exists. Use PUT instead. + '500': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Internal Server Error. + summary: Creates a new notification + tags: + - demand-and-capacity-notification-controller + put: + operationId: updateNotification + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + required: true + responses: + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Notification was updated. + '400': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Malformed or invalid request body. + '404': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Notification does not exist. + '500': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + additionalProperties: false + description: Internal Server Error. + summary: Updates a notification by its UUID + tags: + - demand-and-capacity-notification-controller + /demand-and-capacity-notification/reported: + get: + description: Get all reported notifications. Optionally the partner can be filtered + by its bpnl. + operationId: getAllReportedNotifications + parameters: + - in: query + name: partnerBpnl + required: false + schema: + additionalProperties: false + maxItems: 50 + type: string + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/DemandAndCapacityNotificationDto' + maxItems: 50 + type: array + description: OK + summary: Get all reported notifications + tags: + - demand-and-capacity-notification-controller + /demand-and-capacity-notification/request: + post: + operationId: postDemandAndCapacityNotification + parameters: + - in: header + name: edc-bpn + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + requestBody: + content: + application/json: + schema: + additionalProperties: false + maxItems: 50 + type: string + required: true + responses: + '200': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationSamm' + additionalProperties: false + description: Ok + '400': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationSamm' + additionalProperties: false + description: Bad Request + '500': + content: + '*/*': + schema: + $ref: '#/components/schemas/DemandAndCapacityNotificationSamm' + additionalProperties: false + description: Internal Server Error + summary: This endpoint receives the DemandAndCapacityNotification 2.0.0 requests + tags: + - demand-and-capacity-notification-request-api-controller + /demand-and-capacity-notification/{id}: + delete: + operationId: deleteNotification + parameters: + - in: path + name: id + required: true + schema: + additionalProperties: false + format: uuid + maxItems: 50 + type: string + responses: + '204': + description: Notification was deleted. + '400': + description: Malformed or invalid request body. + '404': + description: Notification does not exist. + '500': + description: Internal Server Error. + summary: Deletes a notification by its UUID + tags: + - demand-and-capacity-notification-controller + /demand/reported: + get: + description: Get all demands of partners for a material number. Optionally the + partners can be filtered by their bpnl and the demanding site can be filtered + by its bpns. + operationId: getAllDemandsForPartner parameters: - in: query name: ownMaterialNumber @@ -1516,7 +2097,216 @@ paths: additionalProperties: false description: OK tags: - - edc-controller + - edc-controller + /erp-adapter: + put: + description: "This endpoint accepts responses from the ERP adapter. Incoming\ + \ messages are expected to carry a SAMM of the previously requested type.\ + \ \n\nCurrently supported: \n\n| response-type | samm-version |\n|---------------|--------------|\n\ + | ItemStock | 2.0 |" + operationId: putMethod + parameters: + - in: query + name: request-id + required: true + schema: + additionalProperties: false + format: uuid + maxItems: 50 + type: string + - in: query + name: bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: response-type + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: samm-version + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - description: Represented as the number of milliseconds since January 1, 1970, + 00:00:00 GMT + example: 1719295545654 + in: query + name: response-timestamp + required: true + schema: + additionalProperties: false + format: int64 + type: integer + requestBody: + content: + application/json: + example: + direction: INBOUND + materialGlobalAssetId: null + positions: + - allocatedStocks: + - isBlocked: false + lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00' + quantityOnAllocatedStock: + unit: unit:piece + value: 22.0 + stockLocationBPNA: BPNA4444444444AA + stockLocationBPNS: BPNS4444444444XX + orderPositionReference: + customerOrderId: C-Nbr-4711 + customerOrderPositionId: PositionId-01 + supplierOrderId: M-Nbr-4711 + - allocatedStocks: + - isBlocked: false + lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00' + quantityOnAllocatedStock: + unit: unit:piece + value: 66.0 + stockLocationBPNA: BPNA4444444444AA + stockLocationBPNS: BPNS4444444444XX + orderPositionReference: + customerOrderId: C-Nbr-4711 + customerOrderPositionId: PositionId-03 + supplierOrderId: M-Nbr-4711 + - allocatedStocks: + - isBlocked: true + lastUpdatedOnDateTime: '2023-04-28T14:23:00.123456+14:00' + quantityOnAllocatedStock: + unit: unit:piece + value: 44.0 + stockLocationBPNA: BPNA4444444444AA + stockLocationBPNS: BPNS4444444444XX + orderPositionReference: + customerOrderId: C-Nbr-4711 + customerOrderPositionId: PositionId-02 + supplierOrderId: M-Nbr-4711 + schema: + $ref: '#/components/schemas/JsonNode' + additionalProperties: false + required: true + responses: + '201': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: accepted + '400': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: bad request + '404': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: unknown request-id + '409': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: repeated answer for request-id + '500': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: internal server error + '501': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: unsupported response-type + tags: + - erp-adapter-controller + /erp-adapter/trigger: + post: + description: 'This endpoint is used to trigger scheduled updates from the ErpAdapter. + This is useful if you are expecting a specific request from a partner in the + near future and want to make a best-effort attempt to ensure that your PURIS + backend has already obtained current data to respond to that expected request, + when it arrives. Please note, that calling this endpoint has no significant + effect, if a request with the exact same specifics is already currently in + place. In that case, a call to this endpoint will only extend the period, + after which the scheduled request will be assumed to be irrelevant (see the + puris.erpadapter.timelimit property and its documentation for details in this + regard). ' + operationId: scheduleErpUpdate + parameters: + - in: query + name: partner-bpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: own-materialnumber + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + - in: query + name: asset-type + required: true + schema: + additionalProperties: false + enum: + - DTR + - ITEM_STOCK_SUBMODEL + - PRODUCTION_SUBMODEL + - DEMAND_SUBMODEL + - DELIVERY_SUBMODEL + - NOTIFICATION + - PART_TYPE_INFORMATION_SUBMODEL + maxItems: 50 + type: string + - in: query + name: direction + required: false + schema: + additionalProperties: false + enum: + - INBOUND + - OUTBOUND + maxItems: 50 + type: string + responses: + '201': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: accepted + '400': + content: + '*/*': + schema: + additionalProperties: false + type: object + description: bad request + tags: + - erp-adapter-controller /health/: get: operationId: getHealth @@ -2223,6 +3013,31 @@ paths: description: Internal Server Error. tags: - partner-controller + /partners/{partnerBpnl}/materials: + get: + description: Returns all materials the specified partner is associated with. + operationId: getMaterials_1 + parameters: + - in: path + name: partnerBpnl + required: true + schema: + additionalProperties: false + maxItems: 50 + type: string + responses: + '200': + content: + '*/*': + schema: + additionalProperties: false + items: + $ref: '#/components/schemas/Material' + maxItems: 50 + type: array + description: OK + tags: + - partner-controller /parttypeinformation/{materialnumber}/{representation}: get: description: Endpoint that delivers PartTypeInformation of own products to customer diff --git a/docs/architecture/03_system_scope_and_context.md b/docs/architecture/03_system_scope_and_context.md index ee3d940b..c9b1b3f1 100644 --- a/docs/architecture/03_system_scope_and_context.md +++ b/docs/architecture/03_system_scope_and_context.md @@ -6,7 +6,9 @@ related to partners. This application scope follows the following information. ## Business Context PURIS FOSS may be operated in any supply network, but currently will likely be operated in the -automotive supply network. +automotive supply network. Different functions within a company operate supply chain functions. They can either work on +long-term functions (such as demand and capacity management - not handled by this application) or short-term functions +(like supply reliability - supported by this application). ![Business Context](img/03-business-context.svg) diff --git a/docs/architecture/04_solution_strategy.md b/docs/architecture/04_solution_strategy.md index 09158e60..84e196e9 100644 --- a/docs/architecture/04_solution_strategy.md +++ b/docs/architecture/04_solution_strategy.md @@ -4,7 +4,7 @@ PURIS FOSS -- follows the related standardization candidates or even published standards (CX-0112). +- follows the related standardization candidates or even published standards (see below). - is developed parallel to the consortial SAFe project. **Up-to-dateness / real-time** @@ -21,6 +21,17 @@ PURIS FOSS - Data Consumers can consume a Data Provider's _Data Asset_. - Data is exchanged using an asynchronous pull and push mechanism. +Thus, the application follows the following Catena-X standards (business-wise) to the following degree: + +| Standard | Level of implementation | +|----------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------| +| [CX-0118 Delivery Information Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0118-ActualDeliveryInformationExchange) | Compliant. | +| [CX-0120 Short-Term Material Demand Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0120-ShortTermMaterialDemandExchange) | Compliant. | +| [CX-0121 Planned Production Output Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0121-PlannedProductionOutputExchange) | Compliant. | +| [CX-0122 Item Stock Exchange 2.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0122-ItemStockExchange) | Compliant. | +| [CX-0145 Days of Supply Exchange 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0145-DaysofsupplyExchange) | Missing EDC and Frontend integration. | +| [CX-0146 Supply Chain Disruption Notifications 1.0.0](https://catenax-ev.github.io/docs/next/standards/CX-0146-SupplyChainDisruptionNotifications) | Missing functionality to react and close. | + **Management of EDC and Digital Twins** PURIS FOSS diff --git a/docs/architecture/05_building_block_view.md b/docs/architecture/05_building_block_view.md index 3f67bf47..b90ff46f 100644 --- a/docs/architecture/05_building_block_view.md +++ b/docs/architecture/05_building_block_view.md @@ -30,7 +30,11 @@ The Frontend only handles visualization logic. The remaining logic is handled in | Stock View | Allows to manually add or update stock information that is allocated to partners. Also latest stock information for partners may be requested (via backend). | | Dashboard | The dashboard allows to compare material-related demands, production outputs and stocks in a mocked way. Only Stock information is currently implements. | | Authentication Service | Encapsulates keycloak authentication and session management to be used by the main app. | -| Access Service | Use to give control the access to views. | +| ERP Service | Encapsulates Logic to schedule an erp update for data. | +| Notification View | Allows to send and read notifications. | +| Catalog View | Allows an ADMIN to lookup a catalog of a registered partner. | +| Negotiation View | Allows an ADMIN to check past negotiations. | +| Transfer View | Allows an ADMIN to check past transfers. | **PURIS FOSS Backend** @@ -40,6 +44,7 @@ information objects is the same: - planed production output - short-term material demand (demand) - delivery information +- days of supply The building block view describes only the responsibilities of the components/ packages. @@ -51,6 +56,8 @@ The building block view describes only the responsibilities of the components/ p | MAD | Stores the partner and material related information. They may only be added via REST interfaces. | | Stock | Stores and handles stock related data. It provides interfaces to create and read stock data. Also it allows to exchange stock information via the EDC. | | DTR | The DTR component provides the DTR implementations to manage ShellDescriptors. May first need to get a OAuth 2 token for authentication. | +| ERP Adapter | Allows to ask the SAMM Adapter to get stock information from your ERP / internal system. | +| Notifications | Allows to send and receive demand and capacity notifications. | ## NOTICE diff --git a/docs/architecture/06_runtime_view.md b/docs/architecture/06_runtime_view.md index ab4f3e8c..832ad12c 100644 --- a/docs/architecture/06_runtime_view.md +++ b/docs/architecture/06_runtime_view.md @@ -63,6 +63,23 @@ as soon as a MaterialPartnerRelation is changed. The Digital Twin is always recr ![Overview of Digital Twin Creation](img/06-twin-creation.svg) +## Scenario: Exchange Notifications + +The notification feature allows users to inform partners about demand and capacity disruptions. The terms +`Data Provider` and `Data Consumer` are in this scenario somewhat misleading because: + +- The Data Consumer is the message sending party +- The Data Provider is the message receiving party (providing the endpoint consuming the data) + +The endpoint will decide the common scenarios to handle a message containing the notification: + +- Create a new notification +- Update an existing notification previously received including closing it + +The following diagram illustrates the exchange (create and update) process for notifications sent to a partner. + +![Overview of Notification Exchange](img/06-notification-api-flow-detailed.svg) + ## Scenario: Interact with Data in the Web-UI When reloading the UI, the latest data is pulled from the backend. Whenever a partner-related update on the information diff --git a/docs/architecture/08_concepts.md b/docs/architecture/08_concepts.md index 32ff587a..07373b35 100644 --- a/docs/architecture/08_concepts.md +++ b/docs/architecture/08_concepts.md @@ -107,7 +107,7 @@ which restricts the `specificAssetIds` based on BPNLs. Two different policies are used depending on the Asset Type: - Digital Twin Registry: Use Access Policy also as Contract Policy -- Submodels: Use Contract Policy as defined below +- Submodels & Notification Endpoint: Use Contract Policy as defined below _Note: The submodel `PartTypeInformation` is also registered with the same Contract Policy as the other Submodels._ @@ -217,6 +217,34 @@ a submodel is requested, the DTR of a partner is queried. Whenever a partner is created, all exchanged information APIs that comply to a Catena-X standard are registered as contract offer for the partner's BPNL. +## ERP Integration + +A first version of the erp integration for item stock is in preparation. It allows the application to schedule a +periodic update of the specific information. It uses an asynchronous request & response flow in which the request should +look like the semantic model of interest in which the `materialGlobalAssetId` is ignored. + +Currently, the following SAMM information is allowed: + +| response-type | samm-version | +|---------------|--------------| +| ItemStock | 2.0 | + +The update is always triggered for the following information: + +- partner +- material +- SAMM / response type +- direction (sometimes needed) + +An update is scheduled whenever: + +- a partner requested the data +- the user requested the data in the dashboard + +In case no update has been scheduled, the information is not updated. The update will then be performed periodically +until it has not been updated for a defined time. Please refer to the Admin Guide for more information to configure the +erp adapter. + ## Security Backend APIs are secured by an API Key. The Frontend may be configured to be accessed based on keycloak authentication. diff --git a/docs/architecture/img/03-business-context.svg.license b/docs/architecture/img/03-business-context.svg.license new file mode 100644 index 00000000..8e80bca2 --- /dev/null +++ b/docs/architecture/img/03-business-context.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/03-business-context.svg diff --git a/docs/architecture/img/03-technical-context.svg.license b/docs/architecture/img/03-technical-context.svg.license new file mode 100644 index 00000000..d8527524 --- /dev/null +++ b/docs/architecture/img/03-technical-context.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/03-technical-context.svg diff --git a/docs/architecture/img/05-level-0.svg.license b/docs/architecture/img/05-level-0.svg.license new file mode 100644 index 00000000..ca7dc731 --- /dev/null +++ b/docs/architecture/img/05-level-0.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-0.svg diff --git a/docs/architecture/img/05-level-1-backend.svg b/docs/architecture/img/05-level-1-backend.svg index 40116d3c..be8694c8 100755 --- a/docs/architecture/img/05-level-1-backend.svg +++ b/docs/architecture/img/05-level-1-backend.svg @@ -1,151 +1,4 @@ - - - - - - - «system» PURIS FOSS Backend - - - - - - - - DTR - - - - - - - - EDC - - - - - - - - Stock, Production, Demand, - - Delivery Information - - - - - - - - MAD - - - - - Registry & Discovery Interfaces - - - - - MAD Interface - - - - - EDC Client Interface - - - - - Submodel - - & internal interface - - - - - OAuth2 - - - - - - - - - - - - - - - - - - - - Register and discover twins - - & submodels - - - - - query catalog & - - get data (via edc) - - - - - - - - - uses for authentication of DTR - - - - +«system» PURIS FOSS BackendDTRERP AdapterStock, Production, Demand,Delivery, Days of SupplyInformationEDCNotificationsMADMAD InterfaceRegistry & Discovery InterfacesOAuth2ERP SAMMAdapter InterfaceEDC Management APINotification InterfaceFrontend Trigger InterfaceSubmodel& internal interfaceuse for authentication of DTRuse edc for communicationRegister and discover twins& submodelsquery catalog &get data (via edc) diff --git a/docs/architecture/img/05-level-1-backend.svg.license b/docs/architecture/img/05-level-1-backend.svg.license new file mode 100644 index 00000000..ab0aec7d --- /dev/null +++ b/docs/architecture/img/05-level-1-backend.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-1-backend.svg diff --git a/docs/architecture/img/05-level-1-frontend.svg b/docs/architecture/img/05-level-1-frontend.svg index a15499fe..4805a65c 100644 --- a/docs/architecture/img/05-level-1-frontend.svg +++ b/docs/architecture/img/05-level-1-frontend.svg @@ -1,114 +1,4 @@ - - - - - - - «system» PURIS FOSS Frontend - - - - - - - - Stock View - - - - - - - - Dashboard - - - - - - - - Authentication Service - - - - - - - - Access Service - - - - - - - - Keycloak - - - - - Stock Interface - - - - - MAD interface - - - - - - - - - - - - - - - - - - - - - - - - - - - +«system» PURIS FOSS FrontendERP ServiceStock ViewNotification ViewDashboardAuthentication ServiceCatalog ViewNegotiations ViewTransfer ViewFrontend Trigger InterfaceEDC InterfaceMAD InterfaceNotification InterfaceInterfaces for- Planned Production Output- Short-Term Material Demand- Delivery InformationKeycloakStock Interface diff --git a/docs/architecture/img/05-level-1-frontend.svg.license b/docs/architecture/img/05-level-1-frontend.svg.license new file mode 100644 index 00000000..7d01b347 --- /dev/null +++ b/docs/architecture/img/05-level-1-frontend.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/05-level-1-frontend.svg diff --git a/docs/architecture/img/06-api-flow-detailed.svg.license b/docs/architecture/img/06-api-flow-detailed.svg.license new file mode 100644 index 00000000..106e5492 --- /dev/null +++ b/docs/architecture/img/06-api-flow-detailed.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-api-flow-detailed.svg diff --git a/docs/architecture/img/06-notification-api-flow-detailed.svg b/docs/architecture/img/06-notification-api-flow-detailed.svg new file mode 100644 index 00000000..f7c14b7e --- /dev/null +++ b/docs/architecture/img/06-notification-api-flow-detailed.svg @@ -0,0 +1,4 @@ + +Data ConsumerData ProviderBusinessApplicationBusinessApplicationEDCConsumerEDCConsumerEDCProviderEDCProviderNotification EndpointProviderNotification EndpointProviderSend Message to PartnerContract Message Endpoint Usage1search for Notification assets at partner2catalog communication3catalog4identify Notification Endpoint offer(filter by dcat:type, cx:version)5negotiate contract for Notification Endpoint usage6negotiation7contract agreement (contractAgreementId)8initialize transfer9initialize transfer10transfer completed (transferProcessId)11get EDR for transferProcessId12get EDR for transfer13EDR (refreshed)Send Demand and Capacity Notification14prepare demand and capacity notification messageSend notification via EDCusing EDR for authentication15send message in body against endpointAccept or refuse message / notification.Notification may be one of the following:- new- update of a previously received message or- a closure of a previously received message16proxy message17result18result diff --git a/docs/architecture/img/06-notification-api-flow-detailed.svg.license b/docs/architecture/img/06-notification-api-flow-detailed.svg.license new file mode 100644 index 00000000..969b640f --- /dev/null +++ b/docs/architecture/img/06-notification-api-flow-detailed.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-notification-api-flow-detailed.svg diff --git a/docs/architecture/img/06-twin-creation.svg.license b/docs/architecture/img/06-twin-creation.svg.license new file mode 100644 index 00000000..d2dde4a8 --- /dev/null +++ b/docs/architecture/img/06-twin-creation.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/06-twin-creation.svg diff --git a/docs/architecture/img/07-deployment-argo.svg.license b/docs/architecture/img/07-deployment-argo.svg.license new file mode 100644 index 00000000..1a671fca --- /dev/null +++ b/docs/architecture/img/07-deployment-argo.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/07-deployment-argo.svg diff --git a/docs/architecture/img/07-deployment.svg.license b/docs/architecture/img/07-deployment.svg.license new file mode 100644 index 00000000..1ce1ee42 --- /dev/null +++ b/docs/architecture/img/07-deployment.svg.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/architecture/img/07-deployment.svg diff --git a/docs/architecture/puml/05-level-1-backend.puml b/docs/architecture/puml/05-level-1-backend.puml index 04d6df19..71adb255 100644 --- a/docs/architecture/puml/05-level-1-backend.puml +++ b/docs/architecture/puml/05-level-1-backend.puml @@ -3,23 +3,43 @@ skinparam linetype polyline skinparam nodesep 150 skinparam ranksep 50 +() mad_interface as "MAD Interface" +() dtr_interface as "Registry & Discovery Interfaces" +() oauth as "OAuth2" +() erp_interface as "ERP SAMM\nAdapter Interface" +() edc_interface as "EDC Management API" +() not_interface as "Notification Interface" +() erp_frontend_interface as "Frontend Trigger Interface" +() data_interface as "Submodel \n& internal interface" + package "<> PURIS FOSS Backend"{ [DTR] as dtr + [ERP Adapter] as erp + [Stock, Production, Demand,\nDelivery, Days of Supply\nInformation] as stock [EDC] as edc - [Stock, Production, Demand,\nDelivery Information] as stock + [Notifications] as not [MAD] as mad } -"Registry & Discovery Interfaces" )-- dtr -"MAD Interface" - mad -edc -( "EDC Client Interface" -stock --( "Submodel \n& internal interface" +erp -left- erp_interface +erp -left- erp_frontend_interface +dtr_interface -down- dtr +oauth )-down- "use for authentication of DTR" dtr + +not -up- "use edc for communication" edc + +dtr -down- "Register and discover twins\n& submodels" stock +data_interface -down- stock +stock -left- erp +stock -right- "query catalog &\nget data (via edc)" edc +stock -down- mad +edc -right-( edc_interface -dtr -- "Register and discover twins\n& submodels" stock -stock - "query catalog &\nget data (via edc)" edc -mad - stock +mad -- mad_interface +mad -right- not +erp -- mad -"OAuth2" )- "uses for authentication of DTR" dtr +not -right- not_interface @enduml diff --git a/docs/architecture/puml/05-level-1-frontend.puml b/docs/architecture/puml/05-level-1-frontend.puml index d7598e33..296d0678 100644 --- a/docs/architecture/puml/05-level-1-frontend.puml +++ b/docs/architecture/puml/05-level-1-frontend.puml @@ -3,22 +3,49 @@ skinparam linetype polyline skinparam nodesep 20 skinparam ranksep 50 -package "<> PURIS FOSS Frontend"{ +() erp_frontend_interface as "Frontend Trigger Interface" +() edc_interface as "EDC Interface" +() mad_interface as "MAD Interface" +() edc_interface as "EDC Interface" +() notifications_interface as "Notification Interface" - [Stock View] as stock_view - [Dashboard] as dashboard - [Authentication Service] as auth_service +package "<> PURIS FOSS Frontend"{ + [ERP Service] as erp_service + together { + [Stock View] as stock_view + [Notification View] as notifications_view + [Dashboard] as dashboard + [Authentication Service] as auth_service + } + together { + [Catalog View] as catalog_view + [Negotiations View] as negotiations_view + [Transfer View] as transfer_view + } } "Interfaces for\n- Planned Production Output\n- Short-Term Material Demand\n- Delivery Information" -- dashboard [Keycloak] as idp idp - auth_service -stock_view --( "Stock Interface" -stock_view --( "MAD interface" +stock_view ---( "Stock Interface" +stock_view ---( mad_interface + +dashboard ---( "Stock Interface" +dashboard ---( mad_interface +notifications_view ---( mad_interface +notifications_interface )-- notifications_view + +catalog_view ---( edc_interface +catalog_view ---( mad_interface +negotiations_view ---( edc_interface +transfer_view ---( edc_interface + +erp_service - dashboard +erp_frontend_interface -up- erp_service +dashboard -[hidden]right- stock_view -dashboard --( "Stock Interface" -dashboard --( "MAD interface" +auth_service -[hidden]down- erp_service @enduml diff --git a/docs/architecture/puml/06-notification-api-flow-detailed.puml b/docs/architecture/puml/06-notification-api-flow-detailed.puml new file mode 100644 index 00000000..14340df0 --- /dev/null +++ b/docs/architecture/puml/06-notification-api-flow-detailed.puml @@ -0,0 +1,65 @@ +@startuml +autonumber +skinparam sequenceMessageAlign center + +box "Data Consumer" +participant "Business\nApplication" as app_cons +participant "EDC\nConsumer" as edc_cons +end box + +box "Data Provider" +participant "EDC\nProvider" as edc_prov +participant "Notification Endpoint\nProvider" as not_prov +end box + +=== Send Message to Partner == +== Contract Message Endpoint Usage == +app_cons -> edc_cons: search for Notification assets at partner +activate edc_cons +edc_cons <-> edc_prov: catalog communication +edc_cons --> app_cons: catalog +deactivate edc_cons + +app_cons -> app_cons: identify Notification Endpoint offer\n(filter by dcat:type, cx:version) + +app_cons -> edc_cons: negotiate contract for Notification Endpoint usage +activate edc_cons +edc_cons <-> edc_prov: negotiation +edc_cons --> app_cons: contract agreement (contractAgreementId) +deactivate edc_cons + +app_cons -> edc_cons: initialize transfer +activate edc_cons +edc_cons <-> edc_prov: initialize transfer +edc_cons --> app_cons: transfer completed (transferProcessId) +deactivate edc_cons + +app_cons -> edc_cons: get EDR for transferProcessId +activate edc_cons +edc_cons <-> edc_prov: get EDR for transfer +edc_cons --> app_cons: EDR (refreshed) +deactivate edc_cons + +== Send Demand and Capacity Notification == +app_cons -> app_cons: prepare demand and capacity notification message + +note over app_cons, edc_cons +Send notification via EDC +using EDR for authentication +end note +app_cons -> edc_prov: send message in body against endpoint +note right +Accept or refuse message / notification. +Notification may be one of the following: +- new +- update of a previously received message or +- a closure of a previously received message +end note +activate edc_prov +edc_prov -> not_prov: proxy message +activate not_prov +not_prov --> edc_prov: result +deactivate not_prov +edc_prov --> app_cons: result +deactivate edc_prov +@enduml diff --git a/docs/user/User_Guide.md b/docs/user/User_Guide.md index 21cf71c2..02e2a1d0 100644 --- a/docs/user/User_Guide.md +++ b/docs/user/User_Guide.md @@ -142,6 +142,21 @@ Afterwards, when the user refreshes the page, they will be presented with the up _**Note:** The update process can take a few seconds._ +#### Scheduling an ERP data update + +The data may be updated manually or be updated periodically by the system. Whenever a partner asked for a specific +information OR the user triggered "SCHEDULE ERP UPDATE", then a periodic update is scheduled. It is automatically +cancelled after the update has not been triggered for a configured number of days. + +This update is always: + +- per partner +- per material +- per information (currently only stock is supported) +- per direction (e.g. stock is differentiated into stock as a customer or supplier) + +In case of further information (e.g., update intervals), please contact your administrator or consult the Admin Guide. + ## View and Manage Stocks This view allows a user to either create material or product stocks and allocate them to a partner. Stocks always need @@ -188,6 +203,40 @@ _**Note:** Stock information is updated asynchronously. The user may reload the ![Stock View after selecting a Material Stock](img/stock_view_selected_material_stock.png) +## Demand and Capacity Notifications + +_DISCLAIMER: This feature has not yet been finished. Currently, users neither can't react to notifications nor can close +notifications._ + +An user may use the page to send notifications to partners or read received notifications. One may chose the direction: + +- `OUTGOING` for messages sent to a partner +- `INCOMING` for messages received from a partner + +![Overview of the notification view](img/notification_view.png) + +One may get further information by double clicking on a notification in the list. + +![Detailed notification after double clicking the entry](img/notification_detail.png) + +When triggering the button "SEND NOTIFICATION", a modal dialog is opened allowing a user to compose the demand and +capacity notification. + +![Send notification modal](img/notification_send.png) + +After filling the mandatory data (see `*`), the user can send the notification: + +- Text +- Partner (supplier or customer relationship) +- Leading Root Cause (one as defined by CX-0146 for demand and capacity notification) +- Status (either `Open` or `Closed`, use close to close disruptions) +- Effect (either `Increase` or `Decrease` of `Production` or `Demand`) +- Start Date of Effect +- End Date of Effect +- Affected Sites Senders +- Affected Sites Recipient +- Affected Material Numbers (only those applicable to the partner) + ## Catalog An admin may use the page to query offers available at a partner to check if the partner set up the information exchange @@ -253,3 +302,12 @@ Per Transfer the following information is listed: _**Note**: Per data request per partner, there are two Transfers as one contracts the partner's request asset and the partner contracts the user's response asset._ + +--- +# NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +- SPDX-License-Identifier: Apache-2.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/docs/user/User_Guide.md diff --git a/docs/user/img/catalog_view_list.png b/docs/user/img/catalog_view_list.png index cd5ffb40..450a764f 100644 Binary files a/docs/user/img/catalog_view_list.png and b/docs/user/img/catalog_view_list.png differ diff --git a/docs/user/img/catalog_view_list.png.license b/docs/user/img/catalog_view_list.png.license new file mode 100644 index 00000000..9d606af8 --- /dev/null +++ b/docs/user/img/catalog_view_list.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/catalog_view_list.png diff --git a/docs/user/img/dashboard_add_buttons.png.license b/docs/user/img/dashboard_add_buttons.png.license new file mode 100644 index 00000000..eaa4246b --- /dev/null +++ b/docs/user/img/dashboard_add_buttons.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_buttons.png diff --git a/docs/user/img/dashboard_add_delivery.png.license b/docs/user/img/dashboard_add_delivery.png.license new file mode 100644 index 00000000..2cce111b --- /dev/null +++ b/docs/user/img/dashboard_add_delivery.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_delivery.png diff --git a/docs/user/img/dashboard_add_demand.png.license b/docs/user/img/dashboard_add_demand.png.license new file mode 100644 index 00000000..f8707978 --- /dev/null +++ b/docs/user/img/dashboard_add_demand.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_demand.png diff --git a/docs/user/img/dashboard_add_production.png.license b/docs/user/img/dashboard_add_production.png.license new file mode 100644 index 00000000..f431dea5 --- /dev/null +++ b/docs/user/img/dashboard_add_production.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_add_production.png diff --git a/docs/user/img/dashboard_filters.png.license b/docs/user/img/dashboard_filters.png.license new file mode 100644 index 00000000..51a7ccb1 --- /dev/null +++ b/docs/user/img/dashboard_filters.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_filters.png diff --git a/docs/user/img/dashboard_own_site.png.license b/docs/user/img/dashboard_own_site.png.license new file mode 100644 index 00000000..d10c67b3 --- /dev/null +++ b/docs/user/img/dashboard_own_site.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_own_site.png diff --git a/docs/user/img/dashboard_partner_site.png b/docs/user/img/dashboard_partner_site.png index 983f526e..2dd8be67 100644 Binary files a/docs/user/img/dashboard_partner_site.png and b/docs/user/img/dashboard_partner_site.png differ diff --git a/docs/user/img/dashboard_partner_site.png.license b/docs/user/img/dashboard_partner_site.png.license new file mode 100644 index 00000000..9dbf247b --- /dev/null +++ b/docs/user/img/dashboard_partner_site.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_partner_site.png diff --git a/docs/user/img/dashboard_view.png b/docs/user/img/dashboard_view.png index a635facd..54fd9e57 100644 Binary files a/docs/user/img/dashboard_view.png and b/docs/user/img/dashboard_view.png differ diff --git a/docs/user/img/dashboard_view.png.license b/docs/user/img/dashboard_view.png.license new file mode 100644 index 00000000..113b4cc4 --- /dev/null +++ b/docs/user/img/dashboard_view.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_view.png diff --git a/docs/user/img/dashboard_view_list.png b/docs/user/img/dashboard_view_list.png deleted file mode 100644 index 069894c5..00000000 Binary files a/docs/user/img/dashboard_view_list.png and /dev/null differ diff --git a/docs/user/img/dashboard_view_list.png.license b/docs/user/img/dashboard_view_list.png.license new file mode 100644 index 00000000..847b2e08 --- /dev/null +++ b/docs/user/img/dashboard_view_list.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/dashboard_view_list.png diff --git a/docs/user/img/negotiation_view_list.png b/docs/user/img/negotiation_view_list.png new file mode 100644 index 00000000..756af246 Binary files /dev/null and b/docs/user/img/negotiation_view_list.png differ diff --git a/docs/user/img/negotiations_view_list.png.license b/docs/user/img/negotiations_view_list.png.license new file mode 100644 index 00000000..0802564a --- /dev/null +++ b/docs/user/img/negotiations_view_list.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/negotiations_view_list.png diff --git a/docs/user/img/notification_detail.png b/docs/user/img/notification_detail.png new file mode 100644 index 00000000..58eda3f8 Binary files /dev/null and b/docs/user/img/notification_detail.png differ diff --git a/docs/user/img/notification_send.png b/docs/user/img/notification_send.png new file mode 100644 index 00000000..9d681753 Binary files /dev/null and b/docs/user/img/notification_send.png differ diff --git a/docs/user/img/notification_view.png b/docs/user/img/notification_view.png new file mode 100644 index 00000000..08c7098a Binary files /dev/null and b/docs/user/img/notification_view.png differ diff --git a/docs/user/img/stock_view.png.license b/docs/user/img/stock_view.png.license new file mode 100644 index 00000000..5db5296f --- /dev/null +++ b/docs/user/img/stock_view.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view.png diff --git a/docs/user/img/stock_view_added_material_stock.png.license b/docs/user/img/stock_view_added_material_stock.png.license new file mode 100644 index 00000000..520cea54 --- /dev/null +++ b/docs/user/img/stock_view_added_material_stock.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view_added_material_stock.png diff --git a/docs/user/img/stock_view_selected_material_stock.png.license b/docs/user/img/stock_view_selected_material_stock.png.license new file mode 100644 index 00000000..fe5d1033 --- /dev/null +++ b/docs/user/img/stock_view_selected_material_stock.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/stock_view_selected_material_stock.png diff --git a/docs/user/img/transfers_view_list.png b/docs/user/img/transfers_view_list.png index a6edd53a..56c03681 100644 Binary files a/docs/user/img/transfers_view_list.png and b/docs/user/img/transfers_view_list.png differ diff --git a/docs/user/img/transfers_view_list.png.license b/docs/user/img/transfers_view_list.png.license new file mode 100644 index 00000000..ba009a69 --- /dev/null +++ b/docs/user/img/transfers_view_list.png.license @@ -0,0 +1,5 @@ +This work is licensed under the [CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/legalcode). + +- SPDX-License-Identifier: CC-BY-4.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: https://github.com/eclipse-tractusx/puris/blob/main/docs/user/img/transfers_view_list.png diff --git a/frontend/package.json b/frontend/package.json index 8a5b2ed8..ef972226 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -2,7 +2,7 @@ "name": "puris-frontend", "description": "Puris frontend", "license": "Apache-2.0", - "version": "2.0.2", + "version": "2.1.0", "type": "module", "scripts": { "dev": "vite --host", diff --git a/local/postman/puris-integration-test.postman_collection.json b/local/postman/puris-integration-test.postman_collection.json index 885af818..160be90a 100644 --- a/local/postman/puris-integration-test.postman_collection.json +++ b/local/postman/puris-integration-test.postman_collection.json @@ -3386,7 +3386,7 @@ "", "pm.test(\"Verify that dtr has been offered (dct:type, cx-common:version)\", function () {", " const contractOffer = contractOffers.find(function (offer) {", - " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";", + " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";", " });", "", " pm.expect(contractOffer).to.exist;", @@ -3406,7 +3406,7 @@ "", " pm.test(\"Verify that \" + sumbodelName + \" Submodel has been offered (dct:type, cx-common:version, aas-semantics:semanticId)\", function () {", " const contractOffer = contractOffers.find(function (offer) {", - " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;", + " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;", " });", "", " pm.expect(contractOffer).to.exist;", @@ -3510,7 +3510,7 @@ "", "pm.test(\"Verify that dtr has been offered (dct:type, cx-common:version)\", function () {", " const contractOffer = contractOffers.find(function (offer) {", - " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";", + " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#DigitalTwinRegistry\";", " });", "", " pm.expect(contractOffer).to.exist;", @@ -3530,7 +3530,7 @@ "", " pm.test(\"Verify that \" + sumbodelName + \" Submodel has been offered (dct:type, cx-common:version, aas-semantics:semanticId)\", function () {", " const contractOffer = contractOffers.find(function (offer) {", - " return offer[\"https://purl.org/dc/terms/type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;", + " return offer[\"dct:type\"][\"@id\"] === \"https://w3id.org/catenax/taxonomy#Submodel\" && offer[\"https://admin-shell.io/aas/3/0/HasSemantics/semanticId\"][\"@id\"] === semanticId;", " });", "", " pm.expect(contractOffer).to.exist;",