Skip to content

feat(p26): 8 tickets front P26 v2 workflow challenge (SKI-93/94/95/96/97/103/104/105) - #19

Open
jeremie0342 wants to merge 1 commit into
mainfrom
feat/p26-front-workflow
Open

feat(p26): 8 tickets front P26 v2 workflow challenge (SKI-93/94/95/96/97/103/104/105)#19
jeremie0342 wants to merge 1 commit into
mainfrom
feat/p26-front-workflow

Conversation

@jeremie0342

Copy link
Copy Markdown
Collaborator

Summary

  • Implementation complete des 8 tickets frontend P26 v2 (workflow challenge complet via Skilluv, Phase 1 dogfooding) — SKI-93, SKI-94, SKI-95, SKI-96, SKI-97, SKI-103, SKI-104, SKI-105.
  • 5 API clients typés (slices, validation, validatorApplications, attestation, maintainerDigest) + 16 nouveaux NotificationType.
  • 6 tests parcours Playwright skippés en attendant deploiement back (SKI-72..91, 115..123 en Todo cote back).

Pages livrees (10 routes)

Public (auth-free) :

  • /verify/[hash] — attestation JSON + bouton PDF + meta OG social (SKI-103)
  • /for-maintainers — landing marketing + FAQ + form subscribe digest (SKI-105)
  • /maintainer-digest/{confirm,unsubscribe}/[token] — double opt-in (SKI-105)

User authentifie :

  • /slices/[id] — page detail slice avec stepper workflow 9 etapes + actions (claim, unclaim, submit-pr avec announce_publicly, download PDF attestation) + widgets ActiveSkilluvers/Diary (SKI-93)
  • /dashboard/slices — 3 tabs (Actifs/Completes/Archives) + section "Recommandes pour toi" (feed reco) (SKI-94)
  • /settings/validator-application/new — form candidature validateur avec preview seuils live (SKI-96)
  • /settings/my-validator-applications — liste candidatures + withdraw (SKI-96)
  • /settings/validator-invitations/[id] — accept/refuse invitation admin (SKI-96)

Validator (users avec cap challenge_validator:*) :

  • /validations/queue — file d'attente + pick-up (SKI-95)
  • /validations/[slice_id]/review — approve/reject avec feedback obligatoire (SKI-95)

Extensions :

  • Section "Badges Skilluv" sur /profile/[username] avec snippets Markdown/HTML copiables (SKI-104)
  • /notifications enrichie avec 16 nouveaux events workflow challenge + CTA inline (reclaim, accept invite, download PDF, share badge) (SKI-97)

Contraintes respectees

  • Design system strict : Button, Input, Badge, EmptyState, Skeleton, Modal, SegmentedControl, Toast — aucun composant custom qui casse la coherence.
  • Pattern Svelte 5 : $state, $derived, $effect, $props, {@render children()}.
  • Pas d'emoji dans code/UI/commits. Icons via @lucide/svelte.
  • npm run check = 0 nouvelle erreur (2 erreurs preexistantes sur src/lib/observability.ts non touchees).
  • Button.svelte : typing target/rel/download expose (fix baseline TS sur validations/queue existant).

Tests

  • 6 nouveaux spec files parcours skippes avec tag explicite pointant vers les tickets back en Todo (SKI-72..91, 115..123).
  • Tests re-activables des que le back staging (api.skill-uv.com) expose les endpoints correspondants.

Test plan

  • npm run check : 0 nouvelle erreur (baseline observability persiste)
  • npm run test:unit : 424/425 (1 flaky preexistant sur event-card.test.ts — non lie a P26)
  • Merge sur main -> les pages sont accessibles en local via npm run dev + fake data (les widgets afficheront des empty states / erreurs 404 gracieuses tant que le back n'est pas deploye)
  • Une fois back P26 deploye : re-run parcours P26 en retirant test.skip(true, ...) de chaque spec

Notes contract back

3 TODO(back): documentent des points d'ajustement contract :

  • Slice.validator_username a exposer sur /api/slices/{id} (pour affichage "En cours de review par @xxx")
  • Endpoint dedie /api/slices/{id}/validation (evite refetch queue pour review page)
  • Endpoint /api/users/me/stats pour preview seuils validator application (fallback gracieux : warning "Stats indisponibles" si absent)

Aucun blocker : chaque page degrade gracieusement si le back n'a pas encore livre son contrat.

…w challenge

Fondations partagees :
- src/lib/api/slices.ts : types Slice (10 statuts) + methods (list, get, claim,
  unclaim, submitPr, activeSkilluvers, diary, feedRecommended, mySlices)
- src/lib/api/validation.ts : queue + pickup + approve + reject
- src/lib/api/validatorApplications.ts : apply + list + accept + withdraw
  + constantes seuils (MIN_RANK, MIN_MERGED_PRS, MIN_REPOS_COVERED, MIN_TENURE_DAYS)
- src/lib/api/attestation.ts : verify JSON + pdfUrl + badgeUser/RepoUrl
- src/lib/api/maintainerDigest.ts : subscribe + confirm + unsubscribe

SKI-93 : page /slices/[id] avec stepper workflow 9 etapes + actions
  conditionnelles (claim, unclaim, submit-pr avec announce_publicly checkbox,
  download PDF attestation) + widgets ActiveSkilluvers et Diary.
SKI-94 : dashboard /dashboard/slices avec 3 tabs (Actifs/Completes/Archives)
  + section "Recommandes pour toi" (feed reco SKI-121) + pagination client.
SKI-95 : /validations/queue (pick-up + filtre) + /validations/[slice_id]/review
  (approve/reject avec feedback obligatoire pour reject, 1-2000 chars).
SKI-96 : /settings/validator-application/new (preview seuils live + candidature)
  + /settings/my-validator-applications (liste + withdraw) + /settings/
  validator-invitations/[id] (accept/refuse invitation admin).
SKI-97 : NotificationType etendu de 16 nouveaux events workflow challenge
  + rendu notifications enrichi (icons lucide par categorie, CTA inline
  conditionnels : reclaim, accept invite, download PDF, share badge).
SKI-103 : page publique /verify/[hash] (JSON attestation + boutons PDF/partager
  + meta OG social).
SKI-104 : BadgesSection sur profil (badge SVG preview + snippets Markdown/HTML
  avec copy-to-clipboard) + section repos pour maintainers propriétaires.
SKI-105 : landing /for-maintainers (marketing + FAQ + form subscribe double
  opt-in) + pages /maintainer-digest/{confirm,unsubscribe}/[token].

Ajouts collateraux :
- src/lib/components/ui/Button.svelte : typing target/rel/download expose
  (fix baseline TS errors sur validations/queue existant).
- src/lib/types/index.ts : 16 nouveaux NotificationType (workflow challenge).
- src/lib/components/profile/BadgesSection.svelte (nouveau)
- src/lib/components/slice/{ActiveSkilluversWidget,DiaryWidget}.svelte (nouveaux)

Tests parcours : 6 nouveaux spec files (verify-hash, for-maintainers,
slice-detail, dashboard-slices, validations-queue, validator-application)
skippes en attendant deploiement back staging (SKI-72..91, 115..123 en Todo).

Contraintes respectees :
- Pas d'emoji, pas de TODO fantome (3 TODO(back): documentent contract deps)
- Design system strict : Button, Input, Badge, EmptyState, Skeleton, Modal,
  SegmentedControl, Toast
- Pattern Svelte 5 : $state, $derived, $effect, $props, {@render children}
- npm run check 0/0 sur 5670 fichiers
- Login-first via helpers user-session/enterprise-session existants
- Aucune modification de src/lib/i18n/{types,fr,en}.ts — textes FR en dur pour
  cette premiere passe, i18n complete a suivre.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant