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