PHPackages                             tourze/train-category-bundle - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Admin Panels](/categories/admin)
4. /
5. tourze/train-category-bundle

ActiveSymfony-bundle[Admin Panels](/categories/admin)

tourze/train-category-bundle
============================

培训分类

0.0.1(1y ago)02321MITPHPPHP ^8.1CI failing

Since May 29Pushed 1y agoCompare

[ Source](https://github.com/tourze/train-category-bundle)[ Packagist](https://packagist.org/packages/tourze/train-category-bundle)[ RSS](/packages/tourze-train-category-bundle/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (27)Versions (2)Used By (1)

Train Category Bundle
=====================

[](#train-category-bundle)

培训分类管理包，用于管理安全生产培训资源的分类体系。

功能特性
----

[](#功能特性)

- 🏗️ **树形分类结构**：支持无限层级的分类管理
- 📋 **AQ8011-2023标准**：符合国家安全生产培训标准
- ⚙️ **培训要求配置**：学时、证书、考试、年龄等要求管理
- 🔍 **高级搜索**：多条件搜索、智能推荐、相关分类
- 📊 **统计分析**：分类统计、使用分析、健康度报告
- 📤 **导入导出**：Excel/CSV格式的数据导入导出
- 🔗 **模块集成**：与其他培训模块的无缝集成
- 🎯 **EasyAdmin集成**：完整的后台管理界面

安装
--

[](#安装)

```
composer require tourze/train-category-bundle
```

配置
--

[](#配置)

### 1. 注册Bundle

[](#1-注册bundle)

```
// config/bundles.php
return [
    // ...
    Tourze\TrainCategoryBundle\TrainCategoryBundle::class => ['all' => true],
];
```

### 2. 数据库迁移

[](#2-数据库迁移)

```
php bin/console doctrine:migrations:diff
php bin/console doctrine:migrations:migrate
```

### 3. 加载数据填充

[](#3-加载数据填充)

```
# 加载标准分类数据
php bin/console doctrine:fixtures:load --group=production

# 加载开发测试数据（包含测试数据）
php bin/console doctrine:fixtures:load --group=dev

# 仅加载基础分类数据
php bin/console doctrine:fixtures:load --append --fixtures=src/DataFixtures/CategoryFixtures.php

# 仅加载培训要求数据
php bin/console doctrine:fixtures:load --append --fixtures=src/DataFixtures/CategoryRequirementFixtures.php
```

数据填充说明
------

[](#数据填充说明)

本包提供了完整的数据填充类，用于快速初始化分类数据：

### CategoryFixtures

[](#categoryfixtures)

基础分类数据填充，包含：

- **培训类别**：特种作业、主要负责人、安全管理人员、其他从业人员
- **行业分类**：矿山、危化品、石油天然气、金属冶炼、建筑施工、道路运输等
- **特种作业类别**：电工、焊接、高处作业、制冷空调、煤矿安全、危化品安全等

### CategoryRequirementFixtures

[](#categoryrequirementfixtures)

培训要求数据填充，为主要分类创建符合AQ8011-2023标准的培训要求：

- 学时要求（初训、复训、理论、实操）
- 证书有效期配置
- 考试要求（理论、实操）
- 年龄限制和前置条件

### CategoryDetailedFixtures

[](#categorydetailedfixtures)

详细分类数据填充，为特种作业创建三级分类：

- 电工作业：低压电工、高压电工、防爆电气等
- 焊接作业：熔化焊接、压力焊、钎焊等
- 高处作业：登高架设、高处安装维护拆除等
- 其他特种作业的详细分类

### CategoryTestDataFixtures

[](#categorytestdatafixtures)

测试数据填充（仅开发环境），包含：

- 边界情况测试数据
- 性能测试数据（100个子分类、10层深度嵌套）
- 功能验证数据
- 异常情况模拟数据

### 数据填充分组

[](#数据填充分组)

```
# 生产环境数据（推荐）
php bin/console doctrine:fixtures:load --group=production

# 开发环境数据（包含测试数据）
php bin/console doctrine:fixtures:load --group=dev

# 自定义加载
php bin/console doctrine:fixtures:load --append \
  --fixtures=src/DataFixtures/CategoryFixtures.php \
  --fixtures=src/DataFixtures/CategoryRequirementFixtures.php
```

使用示例
----

[](#使用示例)

### 基础分类操作

[](#基础分类操作)

```
use Tourze\TrainCategoryBundle\Service\CategoryService;

// 获取服务
$categoryService = $this->container->get(CategoryService::class);

// 创建分类
$category = $categoryService->createCategory('新分类', $parentCategory);

// 获取树形结构
$tree = $categoryService->getCategoryTree();

// 获取子分类
$children = $categoryService->getChildren($parentCategory);
```

### 高级搜索

[](#高级搜索)

```
use Tourze\TrainCategoryBundle\Service\CategorySearchService;

$searchService = $this->container->get(CategorySearchService::class);

// 高级搜索
$results = $searchService->advancedSearch([
    'title' => '电工',
    'level' => 2,
    'hasRequirements' => true,
    'minAge' => 18,
    'maxAge' => 60,
]);

// 智能推荐
$recommendations = $searchService->getRecommendations([
    'age' => 25,
    'industry' => '建筑施工',
    'experience' => '初级',
]);
```

### 统计分析

[](#统计分析)

```
use Tourze\TrainCategoryBundle\Service\CategoryStatisticsService;

$statisticsService = $this->container->get(CategoryStatisticsService::class);

// 获取概览统计
$overview = $statisticsService->getOverviewStatistics();

// 获取健康度报告
$healthReport = $statisticsService->getHealthReport();

// 导出统计报表
$csvData = $statisticsService->exportStatistics('csv');
```

### 导入导出

[](#导入导出)

```
use Tourze\TrainCategoryBundle\Service\CategoryImportExportService;

$importExportService = $this->container->get(CategoryImportExportService::class);

// 导出分类数据
$excelData = $importExportService->exportCategories('excel');

// 导入分类数据
$result = $importExportService->importCategories($filePath, 'excel');
```

实体说明
----

[](#实体说明)

### Category 实体

[](#category-实体)

- `id`: 主键
- `title`: 分类标题
- `parent`: 父分类（自关联）
- `children`: 子分类集合
- `sortNumber`: 排序号
- `createdAt`: 创建时间
- `updatedAt`: 更新时间

### CategoryRequirement 实体

[](#categoryrequirement-实体)

- `id`: 主键
- `category`: 关联分类
- `initialTrainingHours`: 初训学时
- `refreshTrainingHours`: 复训学时
- `theoryHours`: 理论学时
- `practiceHours`: 实操学时
- `certificateValidityPeriod`: 证书有效期（月）
- `requiresPracticalExam`: 是否需要实操考试
- `requiresOnSiteTraining`: 是否需要现场培训
- `minimumAge/maximumAge`: 年龄要求
- `prerequisites`: 前置条件（JSON数组）
- `educationRequirements`: 学历要求（JSON数组）
- `healthRequirements`: 健康要求（JSON数组）
- `experienceRequirements`: 经验要求（JSON数组）
- `remarks`: 备注

命令行工具
-----

[](#命令行工具)

### 导入标准分类

[](#导入标准分类)

```
# 导入AQ8011-2023标准分类
php bin/console train-category:import-standard

# 强制覆盖现有数据
php bin/console train-category:import-standard --force
```

EasyAdmin集成
-----------

[](#easyadmin集成)

本包提供了完整的EasyAdmin管理界面和菜单集成：

### 管理界面

[](#管理界面)

- **分类管理**：`/admin/category`
- **培训要求管理**：`/admin/category-requirement`

### 菜单集成

[](#菜单集成)

本包自动集成到EasyAdmin菜单系统中，在后台管理界面会显示"培训分类管理"菜单，包含：

- **分类管理**：管理培训分类的树形结构
- **培训要求**：配置各分类的培训要求

菜单通过 `AdminMenu` 服务自动注册，无需手动配置。

### 管理界面功能

[](#管理界面功能)

- 树形结构显示
- 拖拽排序
- 批量操作
- 高级筛选
- 数据导入导出

API接口
-----

[](#api接口)

### JSON-RPC接口

[](#json-rpc接口)

```
// 获取工种培训分类
$procedure = new GetJobTrainingCategory();
$result = $procedure->call(['jobType' => 'electrician']);
```

开发指南
----

[](#开发指南)

### 扩展分类验证

[](#扩展分类验证)

```
use Tourze\TrainCategoryBundle\Service\CategoryValidationService;

class CustomValidationService extends CategoryValidationService
{
    public function validateCustomRule(Category $category): array
    {
        $errors = [];
        // 自定义验证逻辑
        return $errors;
    }
}
```

### 自定义搜索条件

[](#自定义搜索条件)

```
use Tourze\TrainCategoryBundle\Service\CategorySearchService;

class CustomSearchService extends CategorySearchService
{
    public function searchByCustomCriteria(array $criteria): array
    {
        // 自定义搜索逻辑
        return $this->categoryRepository->findBy($criteria);
    }
}
```

测试
--

[](#测试)

```
# 运行单元测试
vendor/bin/phpunit

# 运行特定测试
vendor/bin/phpunit tests/Unit/Service/CategoryServiceTest.php

# 生成覆盖率报告
vendor/bin/phpunit --coverage-html coverage/
```

许可证
---

[](#许可证)

MIT License

贡献
--

[](#贡献)

欢迎提交Issue和Pull Request来改进这个包。

更新日志
----

[](#更新日志)

### v1.0.0

[](#v100)

- 初始版本发布
- 基础分类管理功能
- AQ8011-2023标准支持
- EasyAdmin集成

### v1.1.0

[](#v110)

- 添加高级搜索功能
- 添加统计分析功能
- 添加导入导出功能
- 添加模块集成功能
- 完善数据填充类

###  Health Score

27

—

LowBetter than 47% of packages

Maintenance48

Moderate activity, may be stable

Popularity11

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity36

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

401d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/13899502?v=4)[tourze](/maintainers/tourze)[@tourze](https://github.com/tourze)

---

Top Contributors

[![tourze](https://avatars.githubusercontent.com/u/13899502?v=4)](https://github.com/tourze "tourze (2 commits)")

###  Code Quality

TestsPHPUnit

Static AnalysisPHPStan

Type Coverage Yes

### Embed Badge

![Health badge](/badges/tourze-train-category-bundle/health.svg)

```
[![Health](https://phpackages.com/badges/tourze-train-category-bundle/health.svg)](https://phpackages.com/packages/tourze-train-category-bundle)
```

###  Alternatives

[oro/platform

Business Application Platform (BAP)

645143.5k115](/packages/oro-platform)[easycorp/easyadmin-bundle

Admin generator for Symfony applications

4.3k17.9M388](/packages/easycorp-easyadmin-bundle)[2lenet/crudit-bundle

The easy like Crud'it Bundle.

1616.4k14](/packages/2lenet-crudit-bundle)[sylius/sylius

E-Commerce platform for PHP, based on Symfony framework.

8.5k5.9M738](/packages/sylius-sylius)[sulu/sulu

Core framework that implements the functionality of the Sulu content management system

1.3k1.4M203](/packages/sulu-sulu)[open-dxp/opendxp

Content &amp; Product Management Framework (CMS/PIM)

9421.6k61](/packages/open-dxp-opendxp)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
