c4-mermaid

статусы ЦП

Типы договоров в ЖЦ Актива 2

Типы организации в ЖЦ Актива (для встречи 05.07.26)

#+ KTM-A plantUML

{% diagram %}

@startuml title assets-app — компонентная диаграмма (прикладной сервис, по образцу np-supply-app)

skinparam componentStyle rectangle skinparam wrapWidth 200 skinparam defaultTextAlignment center

package "assets-app (network/nodejs-apps/apps/assets-app)" {

[cmd/main.go\n(cobra: serve)] as Main [internal/configs\n(viper: config.yaml)] as Config

package "internal/app" { [InitAppService\n(app.go)] as Init [HTTP-сервер (Echo)\n/health /ready /metrics] as HTTP [GraphQL-хендлеры\n(gql_handlers.go)] as GQLHandlers [register_widgets.go\nregister_templates.go] as Register }

[internal/gql\n(gqlgen-резолверы,\nfederation subgraph)] as Resolvers [internal/grpcserver\n(gRPC-сервер assets-app)] as GRPCServer

package "internal/service" { [Доменная бизнес-логика\nDigitalPassport / Asset / Location /\nShipment / УПД / AssetMovement] as Domain [models (GORM)] as Models package "clients" { [organizations_client] as OrgClient [documents_client] as DocClient [applications_client] as AppClient [dictionaries_client] as DictClient } }

[migrations/\n(go-lib/migration)] as Migrations }

package "network/frontend (монолит)" { [src/modules/assets] as FrontendModule }

database "PostgreSQL\n(схема assets-app)" as PG queue "NATS JetStream" as NATS cloud "~/KTM/did\nDID-сервис + VC-сервис" as DID node "assets-chaincode-svc\n(Fabric) / mock-bchs\n(PostgreSQL, промежуточно)" as Chaincode

[organizations-svc] as OrgSvc [documents-svc] as DocSvc [applications-svc] as AppSvc [dictionaries-svc] as DictSvc [apigw\n(REST-шлюз)] as Apigw [apigqlgw\n(GraphQL Federation)] as Apigqlgw

Main → Init Config → Init Init → HTTP Init → GQLHandlers Init → Register Init → GRPCServer

GQLHandlers → Resolvers Resolvers → Domain GRPCServer → Domain

Domain → Models Models → PG Migrations → PG

Domain → OrgClient Domain → DocClient Domain → AppClient Domain → DictClient

OrgClient → OrgSvc : gRPC DocClient → DocSvc : gRPC (чтение Договора) AppClient → AppSvc : gRPC (OrganizationParticipation) DictClient → DictSvc : gRPC (справочники) Register → AppSvc : gRPC\nUpsertWidget/UpsertWidgetField

Domain → DID : REST\nPOST /v1/dids\nPOST /v1/credentials\nPOST /v1/credentials/{id}/revoke Domain → Chaincode : запись неизменяемого журнала

Domain ..> NATS : подписка\ndocument.v1.status-changed DocSvc ..> NATS : публикация события

Apigw → HTTP : REST Apigqlgw → GQLHandlers : GraphQL Federation

FrontendModule → Apigw FrontendModule → Apigqlgw

@enduml

{% enddiagram %}

#+ SuperClaude works like that:

#+ 4 state Контрактиум ЦПА - ЖЦ Поставки (УПД)

#+ 3 sequence

#+ 1

#+ 2