Introduction
Doggy Framework est un framework de développement low-code d'entreprise natif IA, construit sur Symfony 7.4 LTS (support à long terme jusqu'en 2029).
Pourquoi choisir Doggy ?
- Natif IA : intégration approfondie de MCP, Agent et de multiples modèles (Alibaba Bailian, OpenAI, LM Studio, Ollama, etc.), avec un système de configuration LLM intégré, un assistant IA global, une amélioration de vue IA, un assistant de codage, une requête en langage naturel, une reconnaissance visuelle et d'autres capacités IA
- Moteur low-code : définition de modèles métier via les attributs PHP 8 combinés aux annotations personnalisées
@Ef, avec génération automatique des migrations de base de données et des interfaces d'administration - Concepteur de vues piloté par l'IA : disposition par glisser-déposer + opérations en langage naturel IA + génération de vues par sous-agents d'identification d'intention + gestion multi-versions
- Sécurité de niveau entreprise : connexion sans mot de passe WebAuthn, modèle des trois officiers, stratégie de mot de passe, journal d'audit de bout en bout
- Communication en temps réel : push en temps réel basé sur Mercure SSE, Hub intégré à FrankenPHP, sans service supplémentaire
- Haute performance : mode Worker FrankenPHP + compression zstd/br, architecture PostgreSQL en priorité
- Écosystème complet : structure organisationnelle, tâches planifiées, stockage de fichiers, système de messagerie, bibliothèque de composants SunUI, le tout prêt à l'emploi
Pile technologique
| Couche | Technologie |
|---|---|
| Langage | PHP 8.2+ |
| Framework | Symfony 7.4 LTS |
| Runtime | FrankenPHP (mode Worker) via runtime/frankenphp-symfony |
| Base de données | PostgreSQL 14+ |
| ORM | Doctrine ORM + StofDoctrineExtensionsBundle (Gedmo) |
| File de messages | Symfony Messenger (Doctrine Transport) |
| Temps réel | Mercure SSE (dunglas/mercure) |
| IA | Symfony AI (MCP, Agent, Store, support multi-plateformes) |
| Authentification | WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt) |
| Stockage de fichiers | League Flysystem (Local / OSS / S3) |
| Frontend | Twig + jQuery + bibliothèque de composants SunUI |
| Bibliothèques utilitaires | PHPSpreadsheet, Imagine, Predis, Ramsey UUID |
Configuration requise
- PHP >= 8.2
- ext-ctype, ext-iconv
- PostgreSQL >= 14
- Composer >= 2.5
Démarrage rapide
Installation
bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-appConfiguration de l'environnement
bash
cp .env.example .env
# 编辑 .env 配置数据库连接与 Mercure JWT 密钥Démarrer la base de données
PostgreSQL doit être installé et exécuté séparément :
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 appLe Hub Mercure est intégré à FrankenPHP ; aucun démarrage supplémentaire n'est nécessaire.
Accès
- Application : http://localhost:8000
- Interface d'administration : http://localhost:8000/admin
Structure des répertoires
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、压缩、缓存)Bundles centraux activés
| Bundle | Rôle |
|---|---|
| FrameworkBundle | Noyau Symfony |
| DoctrineBundle + MigrationsBundle | ORM de base de données et migrations |
| SecurityBundle | Authentification et autorisation |
| TwigBundle + TwigExtraBundle | Moteur de templates |
| MonologBundle | Journalisation |
| StofDoctrineExtensionsBundle | Extensions Gedmo (arborescence, horodatage, suppression logicielle, etc.) |
| NelmioCorsBundle | Support CORS |
| WebauthnBundle | Authentification sans mot de passe WebAuthn |
| MercureBundle | Push de messages en temps réel |
| AiBundle | Intégration Symfony AI |
| FlysystemBundle | Abstraction du stockage de fichiers |
| HautelookAliceBundle | Données de test (fixtures) |
Concepts clés
Modèle dynamique
Les champs métier sont marqués via l'annotation @Ef, combinée aux attributs PHP 8 pour définir le modèle, avec réalisation automatique de :
- La génération des migrations de base de données
- Le rendu de l'interface CRUD
- Les règles de validation des données
- Les contrôles de permission
php
use App\Annotation\Ef;
class Department
{
#[Ef(displayName: '部门名称', required: true)]
private string $name;
#[Ef(displayName: '部门编码', searchable: true)]
private string $code;
}Référence : Modèle dynamique
Trait commun des entités
Toutes les entités combinent les capacités suivantes via CommonTrait :
CommonTrait
├── BlameableTrait # 创建人/更新人自动记录
├── TimestampableTrait # 创建时间/更新时间自动记录
├── SoftDeleteTrait # 软删除
└── IdTrait # 自增主键Structure organisationnelle
Arborescence de départements multi-niveaux (Nested Set), gestion des employés, système de postes, avec prise en charge de :
- Arborescence de départements à niveaux illimités (Gedmo NestedTree)
- Appartenance à plusieurs sociétés et départements
- Système de postes et de niveaux
- Import/export groupé d'utilisateurs (PHPSpreadsheet)
Référence : Structure organisationnelle
Système de sécurité
- Connexion sans mot de passe WebAuthn (prise en charge des Passkey, clés de sécurité, biométrie)
- Modèle des trois officiers (administrateur système, administrateur sécurité, auditeur de sécurité)
- Stratégies de complexité et de durée de validité des mots de passe
- Audit des opérations de bout en bout
Référence : Authentification WebAuthn