# yb1320057104/tilian architecture

> Architecture diagram of the GitHub repository yb1320057104/tilian, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/yb1320057104/tilian
- Repository: https://github.com/yb1320057104/tilian

## Overview

提链控制台 lets users configure and submit link-generation tasks through a Vue workbench. In distributed mode, the FastAPI backend records and dispatches tasks through Kafka; a Python Worker claims them, selects a channel adapter, and runs that channel’s engine as a subprocess. The engine returns link or payment-status material for the task result. The README documents nine channels, admin functions, and legacy execution; sampled source gives deeper evidence for event projection and some engine behavior, so unsampled internal wiring is shown only where the README establishes it.

Main entry points: [`backend/app/engine_adapter.py`](https://github.com/yb1320057104/tilian/blob/main/backend/app/engine_adapter.py) (Engine adapter), [`backend/app/worker.py`](https://github.com/yb1320057104/tilian/blob/main/backend/app/worker.py) (Task worker), [`backend/app/services/tasks.py`](https://github.com/yb1320057104/tilian/blob/main/backend/app/services/tasks.py) (Task service), [`backend/app/services/engine_sessions.py`](https://github.com/yb1320057104/tilian/blob/main/backend/app/services/engine_sessions.py) (Engine sessions)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_frontend["User workbench"]
  node_workbench["Vue workbench<br/>[App.vue]"]
  node_admin["Admin console<br/>[AdminView.vue]"]
  node_api_client["API client<br/>[client.ts]"]
end

subgraph group_backend["Task orchestration"]
  node_api["FastAPI API<br/>[main.py]"]
  node_task_service["Task service<br/>[tasks.py]"]
  node_worker["Task worker<br/>[worker.py]"]
  node_adapter["Engine adapter<br/>[engine_adapter.py]"]
  node_engine_sessions["Engine sessions<br/>[engine_sessions.py]"]
  node_protocol["Event projection<br/>[engine_protocol.py]"]
end

subgraph group_engines["Payment channels"]
  node_paypal["PayPal engine"]
  node_gopay["GoPay engine"]
  node_gcash["GCash engine"]
  node_momo["MoMo engine"]
  node_upi["UPI engine"]
  node_blik["BLIK engine"]
  node_pix["PIX engine"]
  node_ideal["iDEAL engine"]
  node_card["Direct card"]
end

subgraph group_state["Task state"]
  node_db[("Task database<br/>[database.py]")]
  node_messaging["Kafka messaging<br/>[messaging.py]"]
end

node_user(("Operator"))
node_payment_services(("Payment services"))

node_user -->|"configures tasks"| node_workbench
node_workbench -->|"submits requests"| node_api_client
node_admin -->|"calls admin API"| node_api_client
node_api_client -->|"sends requests"| node_api
node_api -->|"handles tasks"| node_task_service
node_task_service -->|"persists task state"| node_db
node_task_service -->|"dispatches commands"| node_messaging
node_worker -->|"consumes commands"| node_messaging
node_worker -->|"runs channel adapter"| node_adapter
node_adapter -->|"starts subprocess"| node_paypal
node_adapter -->|"starts subprocess"| node_gopay
node_adapter -->|"starts subprocess"| node_gcash
node_adapter -->|"starts subprocess"| node_momo
node_adapter -->|"starts subprocess"| node_upi
node_adapter -->|"starts subprocess"| node_blik
node_adapter -->|"starts subprocess"| node_pix
node_adapter -->|"starts subprocess"| node_ideal
node_adapter -->|"starts subprocess"| node_card
node_paypal -->|"requests checkout"| node_payment_services
node_gopay -->|"requests checkout"| node_payment_services
node_gcash -->|"requests checkout"| node_payment_services
node_momo -->|"requests checkout"| node_payment_services
node_upi -->|"requests checkout"| node_payment_services
node_blik -->|"requests checkout"| node_payment_services
node_pix -->|"requests checkout"| node_payment_services
node_ideal -->|"requests checkout"| node_payment_services
node_card -->|"requests checkout"| node_payment_services
node_paypal -->|"returns result"| node_adapter
node_gopay -->|"returns result"| node_adapter
node_gcash -->|"returns result"| node_adapter
node_momo -->|"returns result"| node_adapter
node_upi -->|"returns result"| node_adapter
node_blik -->|"returns result"| node_adapter
node_pix -->|"returns result"| node_adapter
node_ideal -->|"returns result"| node_adapter
node_card -->|"returns result"| node_adapter
node_worker -->|"handles engine events"| node_engine_sessions
node_engine_sessions -->|"projects events"| node_protocol
node_engine_sessions -->|"stores events and controls"| node_db
node_worker -->|"updates task results"| node_db

click node_workbench "https://github.com/yb1320057104/tilian/blob/main/frontend/src/App.vue"
click node_admin "https://github.com/yb1320057104/tilian/blob/main/frontend/src/views/AdminView.vue"
click node_api_client "https://github.com/yb1320057104/tilian/blob/main/frontend/src/api/client.ts"
click node_api "https://github.com/yb1320057104/tilian/blob/main/backend/app/main.py"
click node_task_service "https://github.com/yb1320057104/tilian/blob/main/backend/app/services/tasks.py"
click node_worker "https://github.com/yb1320057104/tilian/blob/main/backend/app/worker.py"
click node_adapter "https://github.com/yb1320057104/tilian/blob/main/backend/app/engine_adapter.py"
click node_engine_sessions "https://github.com/yb1320057104/tilian/blob/main/backend/app/services/engine_sessions.py"
click node_protocol "https://github.com/yb1320057104/tilian/blob/main/backend/app/engine_protocol.py"
click node_db "https://github.com/yb1320057104/tilian/blob/main/backend/app/database.py"
click node_messaging "https://github.com/yb1320057104/tilian/blob/main/backend/app/infra/messaging.py"
click node_paypal "https://github.com/yb1320057104/tilian/tree/main/engines/freepp-backend"
click node_gopay "https://github.com/yb1320057104/tilian/tree/main/gopay_engine"
click node_gcash "https://github.com/yb1320057104/tilian/tree/main/gcash_engine"
click node_momo "https://github.com/yb1320057104/tilian/tree/main/momo_engine"
click node_upi "https://github.com/yb1320057104/tilian/tree/main/engines/pay153-checkout-link-main"
click node_blik "https://github.com/yb1320057104/tilian/tree/main/blik_engine"
click node_pix "https://github.com/yb1320057104/tilian/tree/main/pix_engine"
click node_ideal "https://github.com/yb1320057104/tilian/tree/main/ideal_engine"
click node_card "https://github.com/yb1320057104/tilian/tree/main/card_engine"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_workbench,node_admin,node_api_client toneBlue
class node_api,node_task_service,node_worker,node_adapter,node_engine_sessions,node_protocol toneAmber
class node_paypal,node_gopay,node_gcash,node_momo,node_upi,node_blik,node_pix,node_ideal,node_card toneMint
class node_db,node_messaging toneRose
class node_user,node_payment_services toneIndigo
```

## Components

### User workbench

- [Vue workbench](https://github.com/yb1320057104/tilian/blob/main/frontend/src/App.vue): `frontend/src/App.vue`
- [Admin console](https://github.com/yb1320057104/tilian/blob/main/frontend/src/views/AdminView.vue): `frontend/src/views/AdminView.vue`
- [API client](https://github.com/yb1320057104/tilian/blob/main/frontend/src/api/client.ts): `frontend/src/api/client.ts`

### Task orchestration

- [FastAPI API](https://github.com/yb1320057104/tilian/blob/main/backend/app/main.py): `backend/app/main.py`
- [Task service](https://github.com/yb1320057104/tilian/blob/main/backend/app/services/tasks.py): `backend/app/services/tasks.py`
- [Task worker](https://github.com/yb1320057104/tilian/blob/main/backend/app/worker.py): `backend/app/worker.py`
- [Engine adapter](https://github.com/yb1320057104/tilian/blob/main/backend/app/engine_adapter.py): `backend/app/engine_adapter.py`
- [Engine sessions](https://github.com/yb1320057104/tilian/blob/main/backend/app/services/engine_sessions.py): `backend/app/services/engine_sessions.py`
- [Event projection](https://github.com/yb1320057104/tilian/blob/main/backend/app/engine_protocol.py): `backend/app/engine_protocol.py`

### Payment channels

- [PayPal engine](https://github.com/yb1320057104/tilian/tree/main/engines/freepp-backend): `engines/freepp-backend`
- [GoPay engine](https://github.com/yb1320057104/tilian/tree/main/gopay_engine): `gopay_engine`
- [GCash engine](https://github.com/yb1320057104/tilian/tree/main/gcash_engine): `gcash_engine`
- [MoMo engine](https://github.com/yb1320057104/tilian/tree/main/momo_engine): `momo_engine`
- [UPI engine](https://github.com/yb1320057104/tilian/tree/main/engines/pay153-checkout-link-main): `engines/pay153-checkout-link-main`
- [BLIK engine](https://github.com/yb1320057104/tilian/tree/main/blik_engine): `blik_engine`
- [PIX engine](https://github.com/yb1320057104/tilian/tree/main/pix_engine): `pix_engine`
- [iDEAL engine](https://github.com/yb1320057104/tilian/tree/main/ideal_engine): `ideal_engine`
- [Direct card](https://github.com/yb1320057104/tilian/tree/main/card_engine): `card_engine`

### Task state

- [Task database](https://github.com/yb1320057104/tilian/blob/main/backend/app/database.py): `backend/app/database.py`
- [Kafka messaging](https://github.com/yb1320057104/tilian/blob/main/backend/app/infra/messaging.py): `backend/app/infra/messaging.py`

### Other components

- **Operator**
- **Payment services**

## Connections

- Operator → Vue workbench: configures tasks
- Vue workbench → API client: submits requests
- Admin console → API client: calls admin API
- API client → FastAPI API: sends requests
- FastAPI API → Task service: handles tasks
- Task service → Task database: persists task state
- Task service → Kafka messaging: dispatches commands
- Task worker → Kafka messaging: consumes commands
- Task worker → Engine adapter: runs channel adapter
- Engine adapter → PayPal engine: starts subprocess
- Engine adapter → GoPay engine: starts subprocess
- Engine adapter → GCash engine: starts subprocess
- Engine adapter → MoMo engine: starts subprocess
- Engine adapter → UPI engine: starts subprocess
- Engine adapter → BLIK engine: starts subprocess
- Engine adapter → PIX engine: starts subprocess
- Engine adapter → iDEAL engine: starts subprocess
- Engine adapter → Direct card: starts subprocess
- PayPal engine → Payment services: requests checkout
- GoPay engine → Payment services: requests checkout
- GCash engine → Payment services: requests checkout
- MoMo engine → Payment services: requests checkout
- UPI engine → Payment services: requests checkout
- BLIK engine → Payment services: requests checkout
- PIX engine → Payment services: requests checkout
- iDEAL engine → Payment services: requests checkout
- Direct card → Payment services: requests checkout
- PayPal engine → Engine adapter: returns result
- GoPay engine → Engine adapter: returns result
- GCash engine → Engine adapter: returns result
- MoMo engine → Engine adapter: returns result
- UPI engine → Engine adapter: returns result
- BLIK engine → Engine adapter: returns result
- PIX engine → Engine adapter: returns result
- iDEAL engine → Engine adapter: returns result
- Direct card → Engine adapter: returns result
- Task worker → Engine sessions: handles engine events
- Engine sessions → Event projection: projects events
- Engine sessions → Task database: stores events and controls
- Task worker → Task database: updates task results
