Einführung
Doggy Framework ist ein KI-natives, unternehmensorientiertes Low-Code-Entwicklungsframework, das auf Symfony 7.4 LTS (langfristiger Support bis 2029) aufbaut.
Warum Doggy?
- KI-nativ: tiefe Integration von MCP, Agent, mehreren Modellen (Alibaba Bailian, OpenAI, LM Studio, Ollama usw.), mit integriertem LLM-Konfigurationssystem, globalem AI-Assistenten, KI-View-Verbesserung, Coding-Assistent, Natural-Language-Query und visueller Erkennung
- Low-Code-Engine: definiert Geschäftsmodelle über PHP-8-Attribute in Kombination mit benutzerdefinierten
@Ef-Annotationen und generiert automatisch Datenbank-Migrationen und Verwaltungsoberflächen - KI-gesteuerter View-Designer: Drag-and-Drop-Layout + KI-Operationen in natürlicher Sprache + Intent-Erkennungs-Sub-Agents zur View-Generierung + Mehrversionsverwaltung
- Unternehmenssicherheit: WebAuthn-Passwortlos-Login, Drei-Rollen-Modell, Passwortrichtlinien, durchgängiges Audit-Protokoll
- Echtzeitkommunikation: Echtzeit-Push auf Basis von Mercure-SSE, FrankenPHP mit integriertem Hub, keine zusätzlichen Dienste erforderlich
- Hohe Leistung: FrankenPHP-Worker-Modus + zstd/br-Komprimierung, PostgreSQL-first-Architektur
- Vollständiges Ökosystem: Organisationsstruktur, geplante Aufgaben, Dateispeicher, E-Mail-System, SunUI-Komponentenbibliothek usw. — alles einsatzbereit
Technologie-Stack
| Ebene | Technologie |
|---|---|
| Sprache | PHP 8.2+ |
| Framework | Symfony 7.4 LTS |
| Laufzeit | FrankenPHP (Worker-Modus) via runtime/frankenphp-symfony |
| Datenbank | PostgreSQL 14+ |
| ORM | Doctrine ORM + StofDoctrineExtensionsBundle (Gedmo) |
| Nachrichtenwarteschlange | Symfony Messenger (Doctrine Transport) |
| Echtzeitkommunikation | Mercure SSE (dunglas/mercure) |
| KI | Symfony AI (MCP, Agent, Store, Multi-Plattform-Unterstützung) |
| Authentifizierung | WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt) |
| Dateispeicher | League Flysystem (Local / OSS / S3) |
| Frontend | Twig + jQuery + SunUI-Komponentenbibliothek |
| Werkzeuge | PHPSpreadsheet, Imagine, Predis, Ramsey UUID |
Systemanforderungen
- PHP >= 8.2
- ext-ctype, ext-iconv
- PostgreSQL >= 14
- Composer >= 2.5
Schnellstart
Installation
bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-appUmgebungskonfiguration
bash
cp .env.example .env
# 编辑 .env 配置数据库连接与 Mercure JWT 密钥Datenbank starten
PostgreSQL muss separat installiert und ausgeführt werden:
bash
# macOS
brew install postgresql@14
brew services start postgresql@14
createdb app
# Ubuntu/Debian
sudo apt install postgresql-14
sudo systemctl start postgresql
sudo -u postgres createdb appDer Mercure Hub ist in FrankenPHP eingebaut und muss nicht separat gestartet werden.
Zugriff
- Anwendung: http://localhost:8000
- Verwaltungs-Backend: http://localhost:8000/admin
Verzeichnisstruktur
config/
├── bundles.php # 已启用的 Symfony Bundle 列表
├── packages/ # 各 Bundle 配置
└── services.yaml
src/
├── Annotation/ # 自定义注解:Ef.php, EfGroup.php
├── Command/ # 16 个 Console 命令
├── Controller/ # Admin, Api, Security 控制器
├── Entity/ # Doctrine 实体 + CommonTrait
│ ├── Organization/ # Department, Position 等
│ ├── Platform/ # 平台相关实体
│ ├── Security/ # User, Role, Permission
│ ├── Storage/ # 文件存储实体
│ └── System/ # 系统配置实体
├── Form/ # 表单类型
├── Message/ # 异步消息
├── MessageHandler/ # 消息处理器
├── Repository/ # Doctrine Repository
├── Security/ # WebAuthn, JWT, Voter
├── Service/ # AI, Calendar, Security, Storage, Task, View 等
└── Twig/ # TwigExtension
Caddyfile # FrankenPHP 配置(含 Mercure Hub、压缩、缓存)Aktivierte Kern-Bundles
| Bundle | Zweck |
|---|---|
| FrameworkBundle | Symfony-Kern |
| DoctrineBundle + MigrationsBundle | Datenbank-ORM und Migrationen |
| SecurityBundle | Sicherheitsauthentifizierung und -autorisierung |
| TwigBundle + TwigExtraBundle | Template-Engine |
| MonologBundle | Protokollierung |
| StofDoctrineExtensionsBundle | Gedmo-Erweiterungen (Baum, Zeitstempel, Soft-Delete usw.) |
| NelmioCorsBundle | CORS-Unterstützung |
| WebauthnBundle | WebAuthn-Passwortlos-Authentifizierung |
| MercureBundle | Echtzeit-Nachrichten-Push |
| AiBundle | Symfony-AI-Integration |
| FlysystemBundle | Abstraktion des Dateispeichers |
| HautelookAliceBundle | Testdaten-Fixtures |
Kernkonzepte
Dynamisches Modell
Über @Ef-Annotationen werden Geschäftsfelder markiert, Modelle in Kombination mit PHP-8-Attributen definiert und automatisch:
- Datenbank-Migrationen generiert
- CRUD-Oberflächen gerendert
- Datenvalidierungsregeln erstellt
- Berechtigungsprüfungen durchgeführt
php
use App\Annotation\Ef;
class Department
{
#[Ef(displayName: '部门名称', required: true)]
private string $name;
#[Ef(displayName: '部门编码', searchable: true)]
private string $code;
}Referenz: Dynamisches Modell
Gemeinsames Entitäts-Trait
Alle Entitäten kombinieren über CommonTrait die folgenden Fähigkeiten:
CommonTrait
├── BlameableTrait # 创建人/更新人自动记录
├── TimestampableTrait # 创建时间/更新时间自动记录
├── SoftDeleteTrait # 软删除
└── IdTrait # 自增主键Organisationsstruktur
Mehrstufiger Abteilungsbaum (Nested Set), Mitarbeiterverwaltung, Stellensystem, mit Unterstützung für:
- Unbegrenzt tiefen Abteilungsbaum (Gedmo NestedTree)
- Mehrfachzuordnung zu Firmen und Abteilungen
- Stellen- und Besoldungsgruppen-System
- Massenimport und -export von Benutzern (PHPSpreadsheet)
Referenz: Organisationsstruktur
Sicherheitssystem
- WebAuthn-Passwortlos-Login (unterstützt Passkey, Sicherheitsschlüssel, biometrische Erkennung)
- Drei-Rollen-Modell (Systemadministrator, Sicherheitsadministrator, Audit-Administrator)
- Passwort-Komplexitäts- und Gültigkeitsrichtlinien
- Durchgängige Operations-Auditierung
Referenz: WebAuthn-Authentifizierung