New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Scrutins #115

Merged
merged 57 commits into from Sep 25, 2018

Conversation

Projects
None yet
5 participants
@njoyard
Member

njoyard commented Jun 28, 2018

TODO:

  • parse to return MP's and groups details
    • Parse/clean demandeurs + extract group (Warning: demandeurs can be multiple => schema changed)
    • fix groupes acronymes to match ND's (LAREM −> LREM)
    • Fix votes mis au point missing groupe fields
  • Handle cases of intervention not found https://pad.regardscitoyens.org/p/nosdeputes-scrutins
    • Scrutin 120 non trouvé dans les interventions de la séance 153 du 2017-09-25 16:00
    • Scrutin 121 non trouvé dans les interventions de la séance 153 du 2017-09-25 16:00
    • Scrutin 139 non trouvé dans les interventions de la séance 219 du 2017-10-10 15:00
    • Scrutin 334 non trouvé dans les interventions de la séance 628 du 2017-12-06 15:00
    • Scrutin 335 non trouvé dans les interventions de la séance 628 du 2017-12-06 15:00
    • Scrutin 336 non trouvé dans les interventions de la séance 628 du 2017-12-06 15:00
    • Scrutin 337 non trouvé dans les interventions de la séance 628 du 2017-12-06 15:00
    • Scrutin 361 non trouvé dans les interventions de la séance 759 du 2018-01-23 15:00
    • Scrutin 411 non trouvé dans les interventions de la séance 1013 du 2018-03-07 15:00
    • Scrutin 438 non trouvé dans les interventions de la séance 1163 du 2018-04-03 09:30
    • Scrutin 579 non trouvé dans les interventions de la séance 1374 du 2018-05-14 16:00
    • Scrutin 739 non trouvé dans les interventions de la séance 1506 du 2018-05-31 21:30
    • remonter à l'AN le problèmes des mauvaise séances référéncées regardscitoyens/Issues-Parlement#44
    • remonter à l'AN le problèmes des mauvais résultats dans les CR regardscitoyens/Issues-Parlement#45
  • attach vote to specific debate
  • add presences to MPs voting without delegation
    • check if non votant should be considered as presence or not (some cases just president, sometimes both presidents) if only president, no need as they always talk anyways
    • validate non-votant not accounting for presences cf #115 (comment)
    • check presences added limited to actual votes and not rectif without previous position
    • check presences added limited to date of first published delegations
    • validate startdate for presence accounting cf 5a48a93
  • check missing scrutins (1106 sur 1118, motions notamment mais pas que)
    • remonter à l'AN le problème regardscitoyens/Issues-Parlement#40
      - [ ] parse them manually from web ?...
    • plan case of motions with no vote contre, so unmatched by tagInterventions
  • check stats on mise au points, nonvotants, seance null, demandeur null, ...
    • check delegations on scrutins non solennels
    • remonter à l'AN le problème des seances manquantes regardscitoyens/Issues-Parlement#42
    • hardcorriger les seances manquantes ?
    • remonter à l'AN le problème des demandeurs null regardscitoyens/Issues-Parlement#43
    • hardcorriger les demandeurs manquants ?
    • investigate cases of position null (ok: all part of mises au point)
  • check data properly updated on load when scrutin modified (maybe not reset Seance and Tag Interv for instance since if it changed it can not be easily impacted on existing presences)
  • adjust logs for crons
  • check compare synthese data before/after
  • edit explications présences relevées in graphes
  • add more doc/faq on votes (+ link in api to faq + link in activity to faq + in synthese instead of legend + link from activité présence hémicycle)

Extras:

  • display scrutins in seances
  • Parse/clean titles + extract scrutins object
    • attach vote to specific text
    • attach vote to specific amendment
    • tag sections with votes ?
    • retrotag TexteLoi adopted when identified ? cf #96
  • build indicator of taux participation scrutins ? (distinction solennel/ordinaires?)
  • build indicator of group fidelity ? (warning : non votants + mises au point)
  • present list of an MP's known votes ?
  • parse avis comm/gouv in debats ?
  • add API points for votes ? cf #93
  • add presences from applauses ?
  • viz votes ? (cf https://www.regardscitoyens.org/temp/sprint-scrutins/ )

TODO à la mise en prod :

  • backup db
  • pull/merge
  • bin/updateDB8.sh
  • apt-get install python-html5lib python-requests
  • bin/load_scrutins
  • php symfony top:Deputes

@njoyard njoyard requested review from teymour and RouxRC Jun 28, 2018

@njoyard njoyard force-pushed the scrutins branch 2 times, most recently from 7e7164f to 09d6b2e Jun 29, 2018

njoyard added some commits Jun 28, 2018

@njoyard njoyard force-pushed the scrutins branch 2 times, most recently from 80dd8c8 to 058d366 Jun 29, 2018

@njoyard njoyard force-pushed the scrutins branch from 058d366 to 742c237 Jun 29, 2018

njoyard and others added some commits Jul 2, 2018

public function setScrutin($scrutin) {
return $this->_set('scrutin_id', $scrutin->id);
}

This comment has been minimized.

@RouxRC

RouxRC Aug 16, 2018

Member

De même je soupçonne que c'est déjà le comportement natif sans cette fonction ;)

$this->parlementaire_groupe_acronyme,
'scrutin',
$this->Scrutin->getLinkSource(),
$this->position != 'nonVotant' && $this->mise_au_point_position == NULL

This comment has been minimized.

@RouxRC

RouxRC Aug 16, 2018

Member

je pense que s'il y a bien une position passée sans délégation et une mise au point ça correspond bien à une présence, en revanche j'ai l'impression que par_delegation n'est jamais utilisé jusqu'ici pour confirmer les présences, je suppose donc que c'est une confusion ici et qu'il faut remplacer mise_au_point_position par par_delegation

This comment has been minimized.

@RouxRC

RouxRC Aug 16, 2018

Member

Par ailleurs non votant indique j'ai l'impression le président, il est donc a priori bien présent, je pense que le bon check est position not Null et par_delegation False

public function setNumero($numero) {
return $this->_set('numero', $numero);
}

This comment has been minimized.

@RouxRC

RouxRC Aug 16, 2018

Member

probablement inutile

@RouxRC

This comment has been minimized.

Member

RouxRC commented Aug 19, 2018

Quelques stats sur les présences en base avant/après le load des scrutins :

1106 scrutins (sur 1118)
124 499 votes
89 304 générant une preuve de présence
22 090 nouvelles présences identifiées
environ 40 par député

avant/après
63 143/85 233 présences
112 076/201 380 preuves
  • Répartition des semaines d'activité avant/après (données) :

https://www.regardscitoyens.org/temp/semaines-activité-avant-apres-votes.png

154 au dessus de 37 avant / 217 au dessus de 38 après
151 au dessous de 30 avant / 175 au dessous de 34 après

value avant après
43 2 2
42 4 5
41 13 27
40 22 38
39 30 66
38 47 79
37 46 68
36 52 57
35 55 53
34 54 36
33 31 28
32 35 20
31 28 19
30 27 18
29 26 10
28 14 5
27 16 6
26 10 6
25 7 6
24 8 2
23 11 4
22 3 5
21 6 2
20 3 1
19 3 4
18 4 1
17 3 0
16 3 0
15 1 0
14 2 1
13 1 0
12 0 0
11 1 0
10 0 0
9 1 0
8 0 1
7 0 0
6 0 0
5 0 0
4 0 0
3 1 0
@Massiliane

This comment has been minimized.

Massiliane commented Aug 21, 2018

Merci @RouxRC et @njoyard pour votre travail sur les scrutins !
Je vais essayer, dans la limite de mes capacités de vous donner mon avis.

  • Sur ce point des non-votants :
    "Il y a par ailleurs des cas identiques ou ces votes sont corrigés en nonVotant
    Je trouve un peu bizarre de se déclarer a posteriori non votant, pourquoi pas juste abstention ?"
    Pour ma part, je pense qu'il ne faut pas les prendre en compte comme des présences. En fait, c'est souvent le cas du député qui ne fait pas de délégation de vote, qui ne veut pas participer au vote et pour lequel le groupe a déjà prévu une délégation sans son accord. Du coup, le fait de venir faire rectifier pour moi montre que le député ne voulait pas être "comptabilisé" comme ayant participé à cette activité.
    Pour moi, dans les cas où le député ne participe pas à l'activité (en votant) on devrait respecter sa volonté de ne pas participer.

  • Pour ton deuxième point sur les preuves de présence des non votants :
    "Se pose par ailleurs plus largement la question d'ajouter ou non une preuve de présence pour les positions "nonVotant""
    Je n'ai pas trop d'avis mais si effectivement leur présence est déjà détecté lorsqu'ils président la séance, je ne vois pas pourquoi on devrait prendre en compte le "nonVotant" dans ce cadre là.

Merci encore !

@DavidOpVa

This comment has been minimized.

DavidOpVa commented Aug 22, 2018

Bravo pour le travail.

Ok pour moi de dire que les non-votant ne sont pas comptabilité comme présent au vu des raisons invoquées en général. Je pense par ailleurs qu'il est important de conserver un fonctionnement simple et facilement intuitable, et du coup je préfère éviter des solutions trop complexes où l'on compterait des présences seulement pour certain type de non-votant.

@boogheta

This comment has been minimized.

Contributor

boogheta commented Sep 3, 2018

Verdicts a priori de la réunion garbage deu 03/09/18 :

NonVotants :

  • on demande à l'AN quelle est la différence entre abstention, nonVotant et nonVotantVolontaire pour les rectifications
  • position : nonVotant ne compte jamais comme présents
  • mise_au_point : nonVotant ne compte pas comme présence
  • mise_au_point : nonVotantVolontaire et abstention comptent comme présence si pas de délégation (sous réserve de validation par l'AN qu'il s'agit de l'application de l'alinéa 2, 7° article 13 de l'instruction du bureau http://www.assemblee-nationale.fr/connaissance/instruction.asp#igb_13 )

Date de début de prise en compte des délégations :

  • on intégre des présences pour les solennels sans délégation à partir d'octobre 2017
  • on intégre des présences pour tous sans délégation à partir de mars 2018

RouxRC added some commits Sep 16, 2018

Merge branch 'master' into scrutins
Conflicts:
	.gitignore
	ansible/roles/cpc.install/templates/web_Dockerfile.j2
@RouxRC

This comment has been minimized.

Member

RouxRC commented Sep 16, 2018

delegations-ordinaires
delegations-solennels

Suite à la dernière discussion, j'ai tracé l'indication de délégations en séparant scrutins solennels et ordinaires :

  • sur les ordinaires c'est assez épisodique et il est difficille d'en tirer autre chose que la date minimale de mars 2018
  • sur les solennels c'est plus intéressant : à partir de février 2018 c'est systématique et semble une bonne date minimale, avant cette date des délégations ne sont indiquées que pour 3 cas particuliers en octobre et décembre 2017 avec pourtant plusieurs solennels au meme ordre de grandeur de votants entre octobre et décembre

Du coup je propose d'amender la décision de prendre compte des présences comme suit :

  • on intégre des présences pour tous les scrutins publics et solennels à partir du 13 février 2018
  • on intégre des présences pour les 3 scrutins solennels particuliers indiquant des délégations <=> on intégre des présences pour tous les scrutins ayant au moins une délégation

@RouxRC RouxRC merged commit e6ac5de into master Sep 25, 2018

@RouxRC

This comment has been minimized.

Member

RouxRC commented Sep 30, 2018

Réponse de la Division de l’Information multimédia au Service de la Communication et de l’Information multimédia de l'Assemblée nationale :

  • concernant la publicité des délégations :
Les analyses de scrutins ne font apparaitre les délégations qu’ à compter du 20 mars 2018. La fiabilité des données sur les délégations ne peut donc être assurée qu’à compter de cette date. S’agissant des scrutins antérieurs au 20 mars 2018, la mention des délégations résultait d’un « effet de bord » de re -publications de l’analyse politique de certains scrutins ; les scrutins antérieurs à cette date ont été à nouveau publiés sans mention des délégations.

Il nous faut donc :

  • changer dans le code la date minimale de prise en compte des présences

  • supprimer en base en prod les preuves de présence et présence en trop ajoutées pour les scrutins publics sans délégation avant le 19 mars 2018

  • concernant les mises au point :

  • Abstention : l’abstention est une position de vote, cette mise au point est utilisée dans le cas où le député s’est trompé dans sa position de vote ;
  • Non votant volontaire : Cette mise au point correspond à la situation d’un député qui, présent lors d’un scrutin, ne souhaitait pas prendre part au vote (application du 7° de l’article 13 de l’instruction générale du bureau) ;
  • Non votant : cette mise au point correspond à une erreur de manipulation du plot d’un député, absent lors du scrutin.

Rien à changer donc de ce côté.

RouxRC added a commit that referenced this pull request Sep 30, 2018

@RouxRC

This comment has been minimized.

Member

RouxRC commented Sep 30, 2018

Cela concerne 30 scrutins :

  • 2 solennels pour lesquels les délégations sont renseignées donc pour lesquelles les présences associées peuvent être conservées
  • 28 ordinaires pour lesquels il faut supprimer les présences associées : entre 390 et 406 et entre 408 et 418
ls {loaded,scrutins}/*.json | while read f; do json $f | grep "date\|nb_deleg\|numero"; done | tr  "\n" " " | sed 's/"date"/\n"date"/g'
"date": "2018-02-13",     "nb_delegations": 107,     "numero": 389,     
"date": "2018-02-13",     "nb_delegations": 0,     "numero": 390,     
"date": "2018-02-13",     "nb_delegations": 0,     "numero": 391,     
"date": "2018-02-13",     "nb_delegations": 0,     "numero": 392,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 393,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 394,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 395,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 396,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 397,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 398,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 399,     
"date": "2018-02-14",     "nb_delegations": 0,     "numero": 400,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 401,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 402,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 403,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 404,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 405,     
"date": "2018-02-15",     "nb_delegations": 0,     "numero": 406,     
"date": "2018-02-20",     "nb_delegations": 109,     "numero": 407,     
"date": "2018-03-06",     "nb_delegations": 0,     "numero": 408,     
"date": "2018-03-06",     "nb_delegations": 0,     "numero": 409,     
"date": "2018-03-06",     "nb_delegations": 0,     "numero": 410,     
"date": "2018-03-07",     "nb_delegations": 0,     "numero": 411,     
"date": "2018-03-07",     "nb_delegations": 0,     "numero": 412,     
"date": "2018-03-07",     "nb_delegations": 0,     "numero": 413,     
"date": "2018-03-08",     "nb_delegations": 0,     "numero": 414,     
"date": "2018-03-08",     "nb_delegations": 0,     "numero": 415,     
"date": "2018-03-08",     "nb_delegations": 0,     "numero": 416,     
"date": "2018-03-08",     "nb_delegations": 0,     "numero": 417,     
"date": "2018-03-08",     "nb_delegations": 0,     "numero": 418,     
  • Avant / Après :
    présences 82 714 / 82 283 => 431 en moins
    preuves 192 852 / 192,025 => 827 en moins

RouxRC added a commit that referenced this pull request Sep 30, 2018

add script to cleanup presences sans délégations before march 2018 fo…
…llowing AN's answer

to run on scrutins 390 à 406 et 408 à 418
seq 390 406 && seq 408 418 | while read id; do echo "SCRUTIN $id"; bash bin/remove_presences_scrutin_sans_delegation.sh $id; done

cf #115

RouxRC added a commit that referenced this pull request Oct 2, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment