📊 Diagram: design/diagrams/podpora21-system-context.png
📊 Diagram: design/diagrams/podpora21-architecture-overview.png
Podpora21.cz je dedikovaná aplikace zákaznické podpory v EP21 ekosystému.
Problem: Klientské a studentské požadavky na EP21 služby jsou nestrukturované, bez SLA trackovení a bez formálního helpdesk procesu.
Solution boundary:
Podpora21 je konzumentem dat z Firma21 (CustomerAccount, SupportCoverage) a vystaví support historii jako event log do TEK/AMQP pro ostatní EP21 systémy.
| Actor / System | Typ | Role |
|---|---|---|
Klient | Human / External | Podává tickety, odpovídá na dotazy agenta, sleduje status |
Student | Human / External | Podává tickety k kurzům, přístupu, platbám |
Support Agent | Human / Internal | Řeší tickety, přidává komentáře, mění status, přiřazuje |
Support Admin | Human / Internal | Spravuje kategorie, SLA politiky, uživatele, reporty |
Firma21 | System / EP21 | SoT pro CustomerAccount, Contract, SupportCoverage — podpora21 čte |
Projekty21 | System / EP21 | SoT pro projekt data — cross-reference pro enterprise klienty |
TEK / AMQP | System / EP21 | Distribuovaný task engine — podpora21 publikuje events, konzumuje TEK tasky |
Tracy / Error Registry | System / Internal | Zachytává PHP výjimky → error remediation pipeline |
Keycloak | System / Auth | SSO autentizace pro agenty a adminy (volitelné, profil auth) |
Aplikace je postavena na Nette MVC architektuře s těmito vrstvami:
1. PRESENTATION (app/Presenters/ + templates/)
2. APPLICATION (app/Service/)
3. DOMAIN (app/Model/)
4. INFRASTRUCTURE
5. CLI / SCRIPTS
Primární tok:
1. Klient nebo agent vytvoří ticket (web form / email)
2. TicketPresenter -> TicketModel.create() -> support_ticket INSERT
3. SLA policy přiřazena automaticky podle priority
4. Agent vidí ticket v dashboardu, přidá komentář -> support_ticket_comment
5. Každá změna statusu / přiřazení -> support_ticket_history (audit log)
6. TEK bridge publikuje events do AMQP při klíčových změnách (volitelné)
Integrační tok (Firma21):
app/
Presenters/
TicketPresenter.php # dashboard, list, detail, new, reply, changeStatus
BasePresenter.php
BasePresenterSecure.php
Model/
TicketModel.php # support_ticket, _comment, _history CRUD
BaseModel.php
Service/
config/
common.neon, services.neon, rabbit.neon
phinx/
phinx-podpora21.php
db/podpora21_migrations/
20260408100000_helpdesk_initial.php # 6 helpdesk tabulek + seed
design/
.dak/kit.json
docs/ adr/ output/
meta/tasks/ meta/errors/ meta/url-catalog/
scripts/tasks.py scripts/error_registry_*.py
Local dev: Docker Compose (web + postgres + rabbitmq)
APP_PORT=8080, CONTROL_PORT=9021, POSTGRES_PORT=15432
DB: podpora21 / user: podpora21 / schema: podpora21
Produkce: Docker na EP21 infra (stejný image, ENV_INST=prod)
Remote: ssh://git@gitssh.ep21.cz:2222/app/core/app-podpora21.git
Klíčové ENV: POSTGRES_DB, DB_SCHEMA, NETTE_DEBUG, ENV_INST, AMQP_URL
Autentizace: Nette Security (DbAuthenticator) + volitelný Keycloak SSO
Autorizace: RBAC přes DbAuthorizator — role: admin, agent, client
Presenter akce chráněny přes BasePresenterSecure.actionRedirectIfNotLogged()
SQL injection: Nette Database Explorer parametrizované dotazy
XSS: Latte auto-escape všech výstupů
Secrets: pouze v docker/.env, nikdy v kódu
WEBHOOK_SECRET_EXTERNAL_ISSUE: hmac ověření příchozích webhooků
Audit log: support_ticket_history pro všechny změny
PHP výjimky: Tracy -> log/exception.log -> error registry (meta/errors/)
Error remediation pipeline: make daily -> crawl -> sync -> prompt
TEK bridge: events do AMQP, konzumovány TEK master controllerem
URL katalog: meta/url-catalog/ (persistent, E2E crawl)
Playwright E2E: make e2e / make e2e-auth
Docker logs: make logs / make logs-web / make logs-db
DI registrace TicketModel + TicketPresenter v services.neon [blocker pro start]
Router: přidat Ticket: routes do app/Router/RouterFactory.php
RBAC: přidat ticket/* resources do AuthorizatorFactory
Firma21 integrace: číst CustomerAccount a SupportCoverage
Klientský portál: veřejná stránka pro vlastní tickety (token-based)
Email notifikace: odesílání při změně statusu
Attachment upload: podpora příloh
Reporting: SLA compliance, průměrné doby řešení
ADR migrace: existující projekty21 ADRy → DAK JSON formát
| ID | Název | Status | Poznámka |
|---|---|---|---|
ADR-001 | RBAC Capability Foundation | accepted | Platí beze změny |
ADR-002 | RBAC Admin UI + Keycloak Integration | accepted | Platí beze změny |
ADR-003 | EP21 Ecosystem Landscape + Bounded Contexts | proposed | Podpora21 = bounded context |
ADR-004 | EP21 Source of Truth + Data Ownership Policy | proposed | Podpora21 = SoT pro support data |
ADR-005 | EP21 Provisioning Orchestration | proposed | Diskutabilní — závisí na Firma21 integraci |
ADR-007 | EP21 API Strategy + DAV Facade Gates | proposed | Platí |
ADR-008 | EP21 ADR Governance Wrapper + Cross-Project Federation | proposed | Platí |
ADR-009 | TEK Distribution Kit | accepted | TEK aktivní |
ADR-010 | TEK SoT Cutover | accepted | Adaptovat: podpora21 jako nový SoT |
ADR-011 | TEK Agent Bridge Transport | accepted | Bridge aktivní |
ADR-012 | TEK Standalone Bootstrap Protocol | accepted | Bootstrapped 2026-04-09 |
ADR-00XZ | Tenant RBAC Model | accepted | Platí |
ADR-00YA | Tenant Access/Audit Log | accepted | Platí |
ADR-Coding-Policy | Coding Policy & Best Practices | accepted | Platí |
ADR-Shared-App-Layer | Shared Application Layer CLI/UI/API | accepted | Platí |
ADR-Console-Cmd | Console Command Architecture | accepted | Platí |
ADR-Python-Bridge | Python Bridge Migration Strategy | accepted | Platí |
ADR-TEK-DB-Sync | TEK Targets DB Sync | accepted | Platí |
ADR-Error-Remediation | Error Remediation Engine (adaptovat z Projekty21) | accepted | Přejmenovat na Podpora21 |
ADR-Metadata-Snapshot | Metadata Snapshot Versioning (adaptovat) | accepted | Přejmenovat na Podpora21 |
ADR-EP21-Task-Hygiene | EP21 Task Hygiene Policy | accepted | Platí |
ADR-EP21-Review-Standards | EP21 Review Standards | accepted | Platí |
ADR-Firma21-Baseline | Firma21 Architecture Baseline | accepted | Referenční kontext pro integraci |
ADR-User-Docs-IA | User Documentation IA | accepted | Platí |
| Version | Date | Author | Note |
|---|---|---|---|
| 0.1.0 | 2026-04-09 | david.sorf + claude-sonnet-4-6 | Initial draft. System context, actors, architecture layers, deployment model, ADR index. Diagrams planned. |