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.0rc7
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.0rc7.tar.gz | 26.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| forge_mvc_stats-1.0.0rc7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 45.9 kB
Release files / forge_mvc_stats-1.0.0rc7.tar.gz
| Download URL | forge_mvc_stats-1.0.0rc7.tar.gz |
|---|---|
| Size | 26.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
1136a883fd33ca48ee26c3375016ead364e73d32d5f2de2d1cfcae63dc77d0cd
|
|
BLAKE2b-256 checksum How to use checksums |
f41f53239946374423a470335d0f455c7417ceb1d11ddf32cb831f2007a6bc99
|
| 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.0rc7-py3-none-any.whl
| Download URL | forge_mvc_stats-1.0.0rc7-py3-none-any.whl |
|---|---|
| Size | 19.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
384675ab6612b384ac1d42d7176412077c0725f967370bf090f4f1e2f2f33b67
|
|
BLAKE2b-256 checksum How to use checksums |
0635fcdf5b80a8e4fb94a917db51ebaa0b3d84e23498610a8518d80ea7e13e53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.13
|