定制 austinw/selection-procedures 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

austinw/selection-procedures

最新稳定版本:1.0.0

Composer 安装命令:

composer require austinw/selection-procedures

包简介

Selection procedures package for Laravel.

README 文档

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

This package provides a flexible and powerful system for implementing selection procedures in Laravel applications. It enables developers to create, manage, and execute sophisticated selection processes with ease.

Overview

Selection Procedures is designed to help manage athlete ranking and selection processes for various sporting competitions. The package includes:

  • Flexible configuration system for defining selection criteria
  • Multiple pre-built calculation strategies for different types of competitions
  • Support for various apparatus and divisions
  • Comprehensive ranking algorithms
  • Easy integration with existing Laravel applications

Installation

You can install the package via composer:

composer require austinw/selection-procedures

After installation, publish the configuration file:

php artisan vendor:publish --tag="selection-procedures-config"

Usage

Basic Example

use AustinW\SelectionProcedures\RankingService;
use Illuminate\Support\Collection;

// Get your results collection (must implement ResultContract)
$results = new Collection([/* your result objects */]);

// Inject or resolve the ranking service
$rankingService = app(RankingService::class);

// Get ranked athletes
$rankedAthletes = $rankingService->rank(
    'world_championships', // procedure key as defined in config
    'trampoline',         // apparatus
    'senior_elite',       // division
    $results              // collection of results
);

// Process ranked athletes
foreach ($rankedAthletes as $rankedAthlete) {
    echo $rankedAthlete->getAthlete()->getName() . ': ' . $rankedAthlete->getTotalPoints();
}

Implementing Contracts

Your athlete and result classes should implement the provided interfaces:

use AustinW\SelectionProcedures\Contracts\AthleteContract;
use AustinW\SelectionProcedures\Contracts\ResultContract;

class Athlete implements AthleteContract
{
    // Implement required methods
    public function getId(): string
    {
        // Return unique athlete identifier
    }

    public function getName(): string
    {
        // Return athlete name
    }
}

class Result implements ResultContract
{
    // Implement required methods
    public function getAthlete(): AthleteContract
    {
        // Return the athlete object
    }

    public function getCompetitionId(): string
    {
        // Return unique competition identifier
    }

    public function getScore(): float
    {
        // Return the score
    }

    // Additional required methods...
}

Available Calculators

The package comes with several pre-built calculators for different competition types:

  • WorldChampionshipsCalculator: Selection procedures for World Championships
  • WorldGamesCalculator: Selection procedures for World Games
  • WagcCalculator: Selection procedures for World Age Group Competitions
  • JuniorPanAmCalculator: Selection procedures for Junior Pan American Games
  • EDPCalculator: Elite Development Program selection procedures
  • JumpStartCalculator: Jump Start program selection procedures

Each calculator implements specialized ranking algorithms based on the requirements of the specific competition.

Extending the Package

Creating Custom Calculators

You can create your own calculator by implementing the ProcedureCalculatorContract interface:

use AustinW\SelectionProcedures\Contracts\ProcedureCalculatorContract;

class MyCustomCalculator implements ProcedureCalculatorContract
{
    public function calculateRanking(string $apparatus, string $division, Collection $results, array $config): Collection
    {
        // Your custom ranking logic here

        return new Collection([/* ranked athletes */]);
    }
}

Then register your calculator in the config file:

// config/selection-procedures.php
'procedures' => [
    'my_custom_procedure' => [
        'name' => 'My Custom Selection Procedure',
        'calculator' => \App\Calculators\MyCustomCalculator::class,
        'divisions' => [
            'senior_elite' => [
                // Division-specific configuration
            ],
        ],
    ],
],

Testing

composer test

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security Vulnerabilities

Please review our security policy on how to report security vulnerabilities.

Credits

License

The MIT License (MIT). Please see License File for more information.

统计信息

  • 总下载量: 4
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-04-04