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
Open
feat(p26): 8 tickets front P26 v2 workflow challenge (SKI-93/94/95/96/97/103/104/105)#19jeremie0342 wants to merge 1 commit into
jeremie0342 wants to merge 1 commit into
Conversation
…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.
5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
slices,validation,validatorApplications,attestation,maintainerDigest) + 16 nouveauxNotificationType.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 :
/profile/[username]avec snippets Markdown/HTML copiables (SKI-104)/notificationsenrichie avec 16 nouveaux events workflow challenge + CTA inline (reclaim, accept invite, download PDF, share badge) (SKI-97)Contraintes respectees
$state,$derived,$effect,$props,{@render children()}.@lucide/svelte.npm run check= 0 nouvelle erreur (2 erreurs preexistantes sursrc/lib/observability.tsnon touchees).Button.svelte: typingtarget/rel/downloadexpose (fix baseline TS survalidations/queueexistant).Tests
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 surevent-card.test.ts— non lie a P26)npm run dev+ fake data (les widgets afficheront des empty states / erreurs 404 gracieuses tant que le back n'est pas deploye)test.skip(true, ...)de chaque specNotes contract back
3
TODO(back):documentent des points d'ajustement contract :/api/slices/{id}(pour affichage "En cours de review par @xxx")/api/slices/{id}/validation(evite refetch queue pour review page)/api/users/me/statspour 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.