مقدمة
Doggy Framework هو إطار عمل تطوير منخفض الكود على مستوى المؤسسات، مصمم للذكاء الاصطناعي الأصلي (AI-Native)، مبني على Symfony 7.4 LTS (بدعم طويل الأمد حتى عام 2029).
لماذا Doggy؟
- الذكاء الاصطناعي الأصلي: تكامل عميق مع MCP وAgent والنماذج المتعددة (Alibaba Bailian، OpenAI، LM Studio، Ollama وغيرها)، مع نظام مدمج لتكوين LLM ومساعد ذكاء اصطناعي عام وتعزيز عروض بالذكاء الاصطناعي ومساعد ترميز واستعلام باللغة الطبيعية وتعرف بصري وغيرها من قدرات AI
- محرك منخفض الكود: تعريف نماذج الأعمال عبر PHP 8 Attribute مع الخاصية المخصصة
@Ef، مع التوليد التلقائي لترحيلات قاعدة البيانات وواجهات الإدارة - مصمم عروض مدفوع بالذكاء الاصطناعي: تخطيط بالسحب والإفلات + عمليات باللغة الطبيعية + وكلاء فرعيين للتعرف على النية لتوليد العروض + إدارة متعددة الإصدارات
- أمان على مستوى المؤسسات: تسجيل دخول بدون كلمة مرور عبر WebAuthn، فصل ثلاثي للأدوار، سياسات كلمات المرور، سجلات تدقيق شاملة
- الاتصال الفوري: دفع فوري عبر Mercure SSE، مع Hub مدمج في FrankenPHP دون الحاجة لخدمات إضافية
- أداء عالٍ: وضع Worker في FrankenPHP + ضغط zstd/br، وبنية تعطي الأولوية لـ PostgreSQL
- نظام بيئي متكامل: هيكل تنظيمي، مهام مجدولة، تخزين ملفات، نظام بريد إلكتروني، مكتبة مكونات SunUI وغيرها جاهزة للاستخدام فورًا
حزمة التقنيات
| الطبقة | التقنية |
|---|---|
| اللغة | PHP 8.2+ |
| الإطار | Symfony 7.4 LTS |
| وقت التشغيل | FrankenPHP (وضع Worker) عبر runtime/frankenphp-symfony |
| قاعدة البيانات | PostgreSQL 14+ |
| ORM | Doctrine ORM + StofDoctrineExtensionsBundle (Gedmo) |
| قائمة الرسائل | Symfony Messenger (Doctrine Transport) |
| الاتصال الفوري | Mercure SSE (dunglas/mercure) |
| الذكاء الاصطناعي | Symfony AI (MCP، Agent، Store، دعم متعدد المنصات) |
| المصادقة | WebAuthn (web-auth/webauthn-symfony-bundle) + JWT (firebase/jwt) |
| تخزين الملفات | League Flysystem (Local / OSS / S3) |
| الواجهة الأمامية | Twig + jQuery + مكتبة مكونات SunUI |
| مكتبات الأدوات | PHPSpreadsheet, Imagine, Predis, Ramsey UUID |
متطلبات النظام
- PHP >= 8.2
- ext-ctype, ext-iconv
- PostgreSQL >= 14
- Composer >= 2.5
البدء السريع
التثبيت
bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-appتكوين البيئة
bash
cp .env.example .env
# 编辑 .env 配置数据库连接与 Mercure JWT 密钥تشغيل قاعدة البيانات
يتطلب PostgreSQL تثبيتًا وتشغيلًا منفصلًا:
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 appMercure Hub مدمج في FrankenPHP ولا يتطلب تشغيلًا إضافيًا.
الوصول
- التطبيق: http://localhost:8000
- لوحة الإدارة: http://localhost:8000/admin
بنية الدلائل
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、压缩、缓存)حزم Symfony الأساسية المفعّلة
| الحزمة | الوظيفة |
|---|---|
| FrameworkBundle | جوهر Symfony |
| DoctrineBundle + MigrationsBundle | ORM وترحيلات قاعدة البيانات |
| SecurityBundle | المصادقة والتفويض الأمني |
| TwigBundle + TwigExtraBundle | محرك القوالب |
| MonologBundle | التسجيل |
| StofDoctrineExtensionsBundle | توسعات Gedmo (البنية الشجرية، الطوابع الزمنية، الحذف الناعم وغيرها) |
| NelmioCorsBundle | دعم CORS |
| WebauthnBundle | مصادقة WebAuthn بدون كلمة مرور |
| MercureBundle | دفع الرسائل الفوري |
| AiBundle | تكامل Symfony AI |
| FlysystemBundle | تجريد تخزين الملفات |
| HautelookAliceBundle | بيانات الاختبار (Fixtures) |
المفاهيم الأساسية
النموذج الديناميكي
يتم تمييز حقول الأعمال عبر خاصية @Ef مع PHP 8 Attributes لتعريف النماذج، مع الإنجاز التلقائي لما يلي:
- توليد ترحيلات قاعدة البيانات
- عرض واجهة CRUD
- قواعد التحقق من البيانات
- فحوصات الصلاحيات
php
use App\Annotation\Ef;
class Department
{
#[Ef(displayName: '部门名称', required: true)]
private string $name;
#[Ef(displayName: '部门编码', searchable: true)]
private string $code;
}المرجع: النموذج الديناميكي
خصائص Trait العامة للكيانات
تجمع جميع الكيانات القدرات التالية عبر CommonTrait:
CommonTrait
├── BlameableTrait # 创建人/更新人自动记录
├── TimestampableTrait # 创建时间/更新时间自动记录
├── SoftDeleteTrait # 软删除
└── IdTrait # 自增主键الهيكل التنظيمي
شجرة أقسام متعددة المستويات (Nested Set) وإدارة الموظفين ونظام المناصب، وتدعم:
- شجرة أقسام بلا حدود من المستويات (Gedmo NestedTree)
- الانتماء إلى شركات وأقسام متعددة
- نظام المناصب والمستويات الوظيفية
- استيراد وتصدير جماعي للمستخدمين (PHPSpreadsheet)
المرجع: الهيكل التنظيمي
نظام الأمان
- تسجيل دخول بدون كلمة مرور عبر WebAuthn (دعم Passkey والمفاتيح الأمنية والتحقق البيومتري)
- فصل ثلاثي للأدوار (مدير النظام، مدير الأمان، مدير التدقيق)
- سياسات تعقيد كلمة المرور ومدة صلاحيتها
- تدقيق شامل لعمليات النظام
المرجع: مصادقة WebAuthn