App

Principes

  • Les documents sont peu nombreux, donc le endpoint retourne tous les documents sans le contenu.
  • Le filtrage et recherche sont effectués sur le client.
  • Les correspondances entres les tags et les icônes et les couleurs sont en dur côté client avec une valeur par défaut.
  • Les documents internes sont au format Markdown ou HTML.

Types généraux

enum DocumentType {
  PDF
  LINK
  MARKDOWN
  HTML
}

FileMedia

Endpoints API

GET One media

// GET /public/medias/:id -> FileMedia

interface FileMedia {
  id: string
  name: string
  mimeType: string
  size: number
}
// GET /public/medias/:id/download -> 200 Binary

Tags

Endpoints API

GET All tags

// GET /public/tags-categories -> 200 TagCategory[]

interface TagCategory {
  id: string
  name: string
  tags: Tag[]
}

interface Tag {
  id: string
  name: string
  categoryId: string
}

Listing

Endpoints API

GET All Documents

// GET /public/documents -> DocumentShort[]

type DocumentShort {
  id: string
  title: string
  type: DocumentType
  url: string?
  tagsIds: string[]
}

Règles de gestion

  • L'application récupère tous les documents.
  • Le filtrage par tags est réalisé localement et plusieurs tags peuvent être mixés.
  • Le filtrage est appliqué avec un OR au sein d'une même catégorie de tags, puis un AND entre les catégories.
  • Le filtrage par recherche libre est effectué sur le titre et le nom des tags.
  • La catégorie principale (icône et couleur) est la première retournée.

Detail

Endpoints API

GET Document Detail

// GET /public/documents/:id/detail -> Document

type Document {
  id: string
  title: string
  type: DocumentType
  url: string?
  tagsIds: string[]
  content: string?
  sources: string[]
  file?: { id: string, name: string }
  // relatedDocuments: DocumentShort[] - TO BE DEFINED
}

GET Document File

// GET /public/documents/:id/download -> Binary

Règles de gestion

  • Selon le type de document, le client a le comportement approprié :
    • PDF : Ouverture dans une webview native.
    • LINK : Ouverture dans une webview native.
    • HTML/MARKDOWN : Ouverture dans une page Flutter.
  • Le i ouvre les sources, et il disparait s'il n'y a pas de sources.
  • Le bouton Signaler une erreur ouvre la popin native d'envoi d'email à l'adresse : MODERATOR_EMAIL

Actions

  • Définir le mode de sélection des articles complémentaires
  • Définir l'adresse email de modération MODERATOR_EMAIL