Skip to content

介绍

Doggy Framework 是一个 AI 原生的企业级低代码开发框架,基于 Symfony 7.4 LTS(长期支持至 2029 年)构建。

为什么选择 Doggy?

  • AI 原生:深度集成 MCP、Agent、多模型(阿里百炼、OpenAI、LM Studio),内置编码助手、自然语言查询、视觉识别等 AI 能力
  • 低代码引擎:通过 PHP 8 Attribute 配合 @Ef 自定义注解定义业务模型,自动生成数据库迁移和管理界面
  • 企业级安全:WebAuthn 无密码登录、三员分立、密码策略、全链路审计日志
  • 实时通信:基于 Mercure SSE 的实时推送,FrankenPHP 内置 Hub,无需额外服务
  • 高性能:FrankenPHP Worker 模式 + zstd/br 压缩,PostgreSQL 优先架构
  • 完整生态:组织架构、定时任务、文件存储、邮件系统、SunUI 组件库等开箱即用

技术栈

层级技术
语言PHP 8.2+
框架Symfony 7.4 LTS
运行时FrankenPHP (Worker 模式) via runtime/frankenphp-symfony
数据库PostgreSQL 14+
ORMDoctrine ORM + StofDoctrineExtensionsBundle (Gedmo)
消息队列Symfony Messenger (Doctrine Transport)
实时通信Mercure SSE (dunglas/mercure)
AISymfony 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
  • Docker (推荐运行方式)

快速开始

安装

bash
git clone git@github.com:doggy/skeleton.git my-app
cd my-app

环境配置

bash
cp .env.example .env
# 编辑 .env 配置数据库连接与 Mercure JWT 密钥

启动服务

bash
docker compose up -d

Docker 启动两个服务:

服务镜像说明
databasepostgres:14-alpinePostgreSQL 数据库,数据持久化到 named volume
mercuredunglas/mercureMercure SSE 实时推送 Hub,含健康检查

应用本身在宿主机通过 FrankenPHP 运行,不容器化 PHP。

访问

目录结构

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、压缩、缓存)
docker-compose.yml       # 数据库 + Mercure Hub 服务编排

已启用的核心 Bundle

Bundle作用
FrameworkBundleSymfony 核心
DoctrineBundle + MigrationsBundle数据库 ORM 与迁移
SecurityBundle安全认证与授权
TwigBundle + TwigExtraBundle模板引擎
MonologBundle日志
StofDoctrineExtensionsBundleGedmo 扩展(树形、时间戳、软删除等)
NelmioCorsBundleCORS 支持
WebauthnBundleWebAuthn 无密码认证
MercureBundle实时消息推送
AiBundleSymfony AI 集成
FlysystemBundle文件存储抽象
HautelookAliceBundle测试数据夹具

核心概念

动态模型

通过 @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 认证

资源

基于 MIT 协议开源 | Copyright © 2026 Doggy