Vérifications par sujet #191
Labels
backend
Everything for https://github.com/CaptainFact/captain-fact-api
complexity > complex
Complex tasks, that require more than tree days to complete
feature
New features
frontend
Everything for https://github.com/CaptainFact/captain-fact-frontend
CaptainFact envisage de créer un nouvel outil reprenant les mécanismes du fact-checking collaboratif existants dans l'outil vidéo, mais en centrant les vérifications autour d'un sujet. Un sujet dans le cadre qui nous intéresse peut être définit comme un énoncé simple présentant une idée dans sa forme la plus indivisible à même d'être vérifiée. Exemples de sujets : "Il y a des puces 5G dans les vaccins pour la Covid", "En France, l'insécurité est en hausse".
Chaque sujet pourra être relié à un ou plusieurs liens qui y font référence. On pourra par exemple indiquer qu'un sujet est mentionné sur tel article d'un site d'actualité, ou dans telle vidéo YouTube (en précisant le timecode).
De la même manière que pour les « statements » (affirmations), chaque sujet pourra avoir plusieurs commentaires qui, en fonction de la valeur de
comment.approve
, pourront être des confirmations (true
), des réfutations (false
), ou des simples commentaires (nil
). L'interface utilisera des websockets pour assurer une discussion en temps réel. À la différence de l'outils vidéo, ces websockets seront à implémenter sur l'API GraphQL (et non sur l'API REST).Design
Specifications techniques
Pour simplifier l'implémentation, on cherchera autant que possible a ré-utiliser (et mettre en commun) les composants existants. L'utilisation de Redux est à proscrire en faveur du cache Apollo ou de contextes React. Si des composants devant être mis en communs utilisent Redux, il faudra séparer la partie vue de la partie état en créant deux composants.
Les spécifications ci-dessous sont en Anglais pour correspondre à la langue utilisée dans le code.
API
Topic
schematext
stringslug
stringspeaker_id
TopicReference
schematopic_id
url
text
(the exact quote, if available)type
- enum(WEB, PDF, AUDIO, VIDEO)apps/cf/lib/topics/topics.ex
, create a new lib to handle topicscreate_topic
(must create the associated user_action & check permissions)update_topic
(must create the associated user_action & check permissions)TopicsIndexer
to synchronize topics with AlgoliaComments
to make it possible to add them on aTopic
. This implies looking for and preventing regressions in related code (flagger, notifications, subscriptions, etc.)topic
query (get one topic)topics
query (list all topics)create_topic
mutationupdate_topic
mutations (to submit new links)create_comment(topic, text, source, direction)
mutation (direction =CONFIRM|REFUTE
)comment_added(topic)
subscription fieldcomment_removed(topic)
subscription fieldTopic
schemaapps/cf/lib/topics/topics.ex
Frontend
Topics
link in the sidebar (links to/topics
)/topics
/topics/:topic_slug
Parts of the design that are not required for the initial implementation
Tips for implementing
UserPermissions.check!(user, :action, :entity)
ReputationGuardTooltip
Context
The text was updated successfully, but these errors were encountered: