Aller au contenu

phil/reporting-bundle

alpha

Des tableaux de bord et des rapports pour les applications Symfony : des chiffres fournis par n'importe quel bundle, des graphiques dessinés sans script, des rapports exportés, planifiés et livrés.

phil/reporting-bundle rassemble en un seul endroit ce que mesure une application. N'importe quel bundle, ou l'application elle-même, fournit un chiffre — les commandes reçues, un taux de renouvellement — sous forme de MetricSource, et une série — les visites par jour, les ventes par catégorie — sous forme de SeriesSource. La configuration les place sur des tableaux de bord. Des composants Twig affichent un tableau de bord, une mesure ou un graphique sur n'importe quelle page, et une interface d'administration EasyAdmin affiche un tableau de bord comme l'une de ses pages quand EasyAdmin est installé.

Les graphiques sont du HTML, du CSS et du SVG, jamais un script. Une image SVG est dessinée sur le serveur par phil/svg-chart, avec un titre, une description qui lit chaque valeur, et le tableau de ses valeurs à côté. Des barres en HTML et en CSS forment elles-mêmes un tableau, et un tableau seul est un troisième rendu. Une mesure affiche sa valeur écrite dans la locale du lecteur, et sa variation par rapport à la période précédente.

Un rapport est un service avec des colonnes et des lignes, lu ligne par ligne. Il peut être exporté en CSV, en TSV ou en JSON, diffusé en téléchargement, écrit depuis la ligne de commande, ou planifié avec Symfony Scheduler et livré par Mailer ou Notifier depuis un worker de Messenger. Un message ne porte qu'un identifiant : la tâche, avec ses destinataires et ses paramètres, et le fichier exporté attendent dans des magasins que seul leur propriétaire peut lire. C'est le claim check.

Il s'appuie sur la bibliothèque phil/svg-chart pour dessiner les images ; Symfony UX, Messenger, Scheduler, Mailer, Notifier, Console et EasyAdmin sont chacun utilisés quand ils sont installés.

État

PartieÉtat
MetricSource, SeriesSource : le port des sources de données, trouvées par cléImplémenté et testé
Period, Metric, Series, SeriesSet, avec des limites ; PeriodPreset, compté dans le fuseau horaire configuréImplémenté et testé
Tableaux de bord dans la configuration, réservés à un rôle quand l'un est nomméImplémenté et testé
Composants PhilReporting:Dashboard, :LiveDashboard, :Metric, :ChartImplémenté et testé
Rendus SVG, HTML et tableau ; une feuille de style sur les jetons de PHIL UX, sans style en ligneImplémenté et testé
ReportDefinition, ReportFormat (CSV, TSV, JSON), cellules de formule neutralisées, lignes bornéesImplémenté et testé
ReportQueue, RunReport, les magasins de tâches et d'exports du claim checkImplémenté et testé
Le calendrier phil_reporting de Symfony SchedulerImplémenté et testé
Les livraisons mail et notificationImplémenté et testé
Téléchargements ReportResponses, phil:reporting:export, la page EasyAdminImplémenté et testé

Documentation

DocumentContenu
InstallationPrérequis, activation du bundle, la feuille de style.
ConfigurationChaque clé de phil_reporting.
SourcesFournir des mesures et des séries, périodes et limites.
Tableaux de bordLes composants, les rendus, leur accessibilité, EasyAdmin.
RapportsDéfinitions, formats, téléchargements, la commande, calendriers, livraisons et le claim check.
Points d'extensionCe que l'application peut remplacer ou ajouter, et quand c'est stable.
TestsLes tests du bundle, et comment tester le code qui l'utilise.
RéférenceChaque type public, avec son rôle.

Démarrage rapide

use Phil\ReportingBundle\Application\Contract\MetricSource;
use Phil\ReportingBundle\Domain\ValueObject\Metric;
use Phil\ReportingBundle\Domain\ValueObject\Period;

final readonly class OrdersTaken implements MetricSource
{
    public function __construct(private OrderRepository $orders) {}

    public static function key(): string { return 'orders'; }

    public function title(): string { return 'Orders'; }

    public function metric(Period $period): Metric
    {
        return new Metric($this->orders->countBetween($period->start, $period->end));
    }
}
# config/packages/phil_reporting.yaml
phil_reporting:
    timezone: America/Toronto
    dashboards:
        sales:
            title: Sales
            periods: [last_30_days, this_month, last_month]
            widgets:
                - { metric: orders, compare: true }
<twig:PhilReporting:LiveDashboard name="sales" />

Prérequis

PHP 8.5 ou plus récent, avec intl, json, mbstring et sodium ; Symfony 8.2.

Contribuer

Les contributions sont les bienvenues sur le monodépôt PHIL : lisez le guide de contribution et le code de conduite. Signalez une vulnérabilité en privé, comme l'explique la politique de sécurité, jamais dans un ticket public.

Licence

MIT, © Philippe Gamache, doing business as Le Gnome Archiviste; a Parler Haut Interagir Librement project. Voir LICENSE.