Pre-release
This release is a pre-release and may not be stable for production use.
forge-mvc-stats
Module stats pour Forge — événements génériques, schéma SQL, tracking et consultation.
Extrait du core Forge depuis la version 2.8.0 (ADR-004).
Installation
pip install forge-mvc-stats
# ou en mode developpement
pip install -e packages/forge-mvc-stats/
Usage
from forge_mvc_stats import make_event, track_event
# Créer un événement
event = make_event(
"page_view",
label="Vue de page",
category="traffic",
metadata={"path": "/contact"},
)
# Enregistrer dans la base (db.execute est fourni par l'application)
track_event(db.execute, event)
# Raccourci direct par nom
track_event(db.execute, "contact_click", label="Clic contact")
Consultation
from forge_mvc_stats import list_stats_events
# Lister les 50 derniers événements (fetch_all est fourni par l'application)
events = list_stats_events(my_fetch_all)
# Filtrer par nom ou catégorie
page_views = list_stats_events(my_fetch_all, name="page_view")
traffic = list_stats_events(my_fetch_all, category="traffic", limit=100)
Agrégation par comptage
Compter les événements groupés par name ou category (dimension en liste
blanche, sans injection), avec filtres optionnels et fenêtre since (ADR-037) :
from forge_mvc_stats import count_stats_events
totaux = count_stats_events(my_fetch_all, "category", since="2026-01-01T00:00:00Z")
# [{"bucket": "traffic", "total": 128}, {"bucket": "compte", "total": 17}]
Schéma SQL
from forge_mvc_stats import get_stats_events_schema_sql, STATS_EVENTS_TABLE
print(STATS_EVENTS_TABLE) # "forge_stats_events"
sql = get_stats_events_schema_sql() # CREATE TABLE IF NOT EXISTS forge_stats_events (...)
Cas d'usage
- Comptage de visites de pages
- Suivi de clics sur des liens ou boutons
- Mesure de soumissions de formulaires
- Traçage d'événements métier applicatifs
API publique
StatsEvent— dataclass d'événement (name, label, category, metadata)StatsEventError— exception de validationmake_event(name, label, category, metadata)— crée et valide un événementvalidate_event(event)— valide un événement existantnormalize_event_name(value)— normalise en snake_casevalidate_event_name(value)— valide un nom normaliséSTATS_EVENTS_TABLE— nom de la table SQL (forge_stats_events)STATS_EVENTS_COLUMNS— tuple des colonnesget_stats_events_schema_sql()— SQLCREATE TABLE IF NOT EXISTStrack_event(execute, event_or_name, ...)— enregistre un événement en baseget_track_event_sql()— SQLINSERTparamétréprepare_track_event_values(event)— tuple de paramètres prêts pourexecutelist_stats_events(fetch_all, name, category, limit)— liste des événements normalisésget_stats_events_admin_sql(name, category, limit)— SQLSELECTfiltréprepare_stats_events_admin_params(name, category, limit)— paramètres du SELECTnormalize_stats_event_row(row)— normalise une ligne brute (metadata JSON → dict)StatsAdminError— exception de consultation
Release files for forge-mvc-stats 1.0.0rc3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| forge_mvc_stats-1.0.0rc3.tar.gz | 16.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forge_mvc_stats-1.0.0rc3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 28.0 kB
Release files / forge_mvc_stats-1.0.0rc3.tar.gz
| Download URL | forge_mvc_stats-1.0.0rc3.tar.gz |
|---|---|
| Size | 16.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8feffc294ad011eeef8a7da1474fecbd36069ef073d317d0d8de28f782d1ee98
|
|
BLAKE2b-256 checksum How to use checksums |
63ddbea9d991eaf25a67bdef0ee91b45936309e5c16126698cd95689ffc6e3e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|
Release files / forge_mvc_stats-1.0.0rc3-py3-none-any.whl
| Download URL | forge_mvc_stats-1.0.0rc3-py3-none-any.whl |
|---|---|
| Size | 11.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5ce7290447d955e81f770a36b19e0c0af6f18c07d72f7f13324811808e81679
|
|
BLAKE2b-256 checksum How to use checksums |
2c4587a0a9ab369df29b276afd782c2e48f6fccd2eea462f8cb9faafea19920f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|