Projecte Borsa de Treball

De Wiket
Salta a la navegació Salta a la cerca

Descripció del projecte

En una primera fase (curs 2018-2019) s'ha pensat en una aplicació web que permeti a les entitats oferir feines de mà d’obra especialitzada i que responen als perfils dels cicles de FP impartits pels centres adherits.

En una segona fase (curs 2019-2020) s'ha pensat en ampliar la funcionalitat en diversos aspectes de gestió acadèmica dels centres i pels alumnes d'FP. Així hem passat al projecte de Portal Integral FP.

El repositori de codi està disponible a Github:

https://github.com/AWS2/BorsaDeTreball


Especificacions no funcionals

  • El projecte es realitzarà amb la tecnologia web Django (Python).
  • Es publicarà en un servidor (AWS) accessible per un domini públic (borsa.ieti.cat)
  • Es protegirà el servidor mitjançant un servei de proxy Cloudflare.


Backlog Fase 2 (curs 2019-2020)

Interfície frontend scrum per creació de projecte i specs

Tenim una interfície en el backend per crear nous projectes i specs, però és massa feixuga per a l'ús habitual, ja que el inline del backend és molt aparatós i caben poques specs per línia.

Cal una view per al frontend dels professors que permeti crear nous projectes, afegir specs i ordenar-les. Els alumnes han de poder visualitzar els projectes i prou.

  1. Crear una nova ruta i pàgina en el front-end per visualitzar la llista de projectes a la BD.
  2. Aplicar un disseny responsive de materialize a la visualització.
  3. Filtrar només els projectes del centre educatiu de l'usuari logat.
  4. Crear nova ruta i pàgina per "crear nou projecte"
  5. En la pàgina de creació de projecte implementar un formulari amb tots els camps del model. Utilitzar una vista genèrica de CreateView.
  6. Crear una segona view per afegir specs. Cal realitzar-la amb JavaScript de manera que puguem afegir i esborrar specs dinàmicament.
  7. Ajusteu el layout de forma minimalista de manera que cada fila ocupi el menys possible, i a la pantalla ens càpiguen el màxim de specs possibles.
  8. Implementeu botó de guardar projecte. És molt important que al guardar no esborri les specs que ja hi havia, ja que aquestes tenen relacions amb altres taules.

Millora interfície d'usuari borsa. Visualització en el front-end

Desenvolupament de pàgines al front-end. Hi ha 2 àrees: alumne i empresa.

  • Àrea d'alumne: ha de poder visualitzar les ofertes que li son rellevants.
  • Àrea d'empresa: editor d'ofertes (crear, llistar, esborrar i modificar).

Tasques:

  1. Crear una nova ruta i pàgina en el front-end per visualitzar les ofertes (alumnes).
  2. Aplicar un disseny responsive de materialize per visualitzar les ofertes (alumnes).
  3. Crear una nova ruta i pàgina en el front-end per crear ofertes (empresa).
  4. Crear una nova ruta i pàgina en el front-end per llistar les ofertes emeses (empresa).
  5. Des de la llista d'ofertes (empresa) hi ha d'haver un botó per esborrar les ofertes emeses.
  6. Crear una nova ruta i pàgina en el front-end per editar ofertes emeses (empresa).
  7. Filtrar només les ofertes que a l'usuari li son rellevants (i segons sigui empresa, alumne o admin_centre).
  8. Posar una entrada al menú lateral i top (material design) per accedir a les ofertes (alumnes).
  9. Posar una entrada al menú lateral i top (material design) per accedir a l'editor ofertes (alumnes).

Implementació de tests per al mòdul de Scrum

Hi ha tests implementats per a la secció de borsa de treball. Primer us caldrà entendre Selenium (llibreria per automatitzar interaccions amb un navegador) observant els tests de borsApp.

  1. Disseny dels tests per al mòdul de Scrum: què ha de veure cada rol (profe, alumne).
  2. Partir de la BD de test amb usuaris i contrasenyes predefinits (testdb.json)
  3. Ampliar la BD de test i guardar-la en una fixture nova (per ex. testdb_scrum.json)
  4. Testejar que usuaris profe poden crear projectes, specs, sprints.
  5. Testejar que els alumnes poden crear equips.
  6. Testejar que els alumnes poden veure les dades adequades, i no veuen mes del compte.
  7. Testejar que els alumnes poden veure els projectes del seu insti, i no els dels altres centres.
  8. Testejar que els profes poden veure els projectes del seu insti, però no els d'altres centres.

Geolocalització usuari i ofertes: distància a l'empresa

El portal ja té geolocalitzats els centres d'estudis i les empreses. Caldrà afegir la geolocalització als usuaris i ser capaços de fer diversos càlculs de distància entre els punts de geolocalització en km, per tal de facilitar filtratges de les empreses que interessen a un alumne per estar en el seu radi de desplaçament.

  1. Crear una nova ruta i pàgina en el front-end per visualitzar les empreses (totes) i la distància des del centre on està l'alumne estudiant (mitjançant objecte Titol).
  2. Implementar camp de geolocalització en els usuaris i distància màxima de les ofertes (caldrà migració).
  3. Afegir el camp de geolocalització en el perfil del frontend de l'usuari (introducció manual, amb mapa OpenStreetMaps, com en el backend).
  4. Fer un merge amb la branca de millora de la interfície d'usuari.
    Implementar càlcul de distància entre la posició del perfil d'usuari i la de l'empresa ofertant.

Nova secció de startups

En aquesta nova secció es tracta de que la gent amb idees emprenedores però sense recursos econòmics puguin anunciar el seu projecte per cercar partners tecnològics o d'altres tipus. O sigui que serà molt similar a la borsa de treball, però es podrà anunciar qualsevol persona que es vulgui donar d'alta com a startup.

Com que hi haurà autoregistre per a les startups, estem exposats al spammers. Per evitar-ho, les ofertes startup calda que les validi un superusuari o un admin_borsa.

  1. Crear nova aplicació anomenada "startup" dintre del portal.
  2. Implementar un botó al perfil d'usuari (alumnes) per donar-se d'alta per rebre les ofertes de les startups. Caldrà afegir camp al model d'usuari.
  3. Dissenyar i crear els models de dades necessaris (modificació model Usuari, oferta de startup, quins cicles busca, categories, etc.).
  4. Crear nou rol "startup" (grup, similar a profes, alumnes, admin_borsa o admin_empresa).
  5. Implementar els permisos adients necessaris del nou rol a l'arxiu de comanda permisos.py
  6. Implementar un autoregistre d'usuaris en la pàgina principal. Caldrà una pantalla d'acceptació dels ToS (Terms of Service) per dona-se d'alta com a startup. Assignar rol "startup" al nou usuari.
  7. Enviar email de confirmació al nou usuari autoregistrat. L'usuari podrà entrar després mitjançant OAuth (Google).
  8. Crear una nova ruta i pàgina per visualitzar les ofertes de les startups (alumnes).
  9. Posar una entrada al menú lateral i top (material design) per visualitzar les ofertes de les startups (només alumnes).
  10. Posar una entrada al menú lateral i top (material design) per gestionar les ofertes de les startups (usuaris startup).
  11. Crear una nova ruta i pàgina per creació d'ofertes de les startups (rols startup o alumnes).
  12. Posar una entrada al menú lateral i top (material design) per creació d'oferta de startup (rols startup o alumnes).
  13. Crear pàgina de validació d'ofertes. Només hi poden entrar els superusuaris o admin_borsa. Veuran una llista amb totes les ofertes de startups pendents, i les podran validar manualment en el camp "validat".
  14. Quan es validi una oferta, es guardarà també quin usuari l'ha validat, podent afegir també un camp de comentaris i un timestamp.

Nova secció de sol·licitud d'alumnes en dual

Molt similar a la borsa de treball, però amb la diferència de que les empreses no fan ofertes, sinó demandes d'alumnes, i son els centres (admin_borsa) els que reben aquestes demandes d'alumnes.

  1. Crear nova aplicació anomenada "dual" dintre del portal.
  2. Dissenyar i crear els models de dades necessaris (demanda d'alumne, de quins cicles busca, centres, categories, etc.).
  3. Implementar els permisos d'accés als nous objectes necessaris per part dels rols admin_empresa i admin_borsa (a l'arxiu de comanda permisos.py).
  4. Crear una nova ruta i pàgina per a la creació de demandes d'alumnes en dual (rol admin_empresa).
  5. Crear una nova ruta i pàgina per a la gestió (llistat, esborrat, edició) de demandes d'alumnes en dual (rol admin_empresa).
  6. Posar una entrada al menú lateral i top (material design) per creació de la demanda d'alumnes en dual (rol admin_empresa).
  7. Posar una entrada al menú lateral i top (material design) per gestionar les demandes d'alumnes en dual (nomes rol admin_empresa).
  8. Crear una nova ruta i pàgina per visualitzar les demandes d'alumnes en dual (per a l'admin_borsa).
  9. Posar una entrada al menú lateral i top (material design) per visualitzar les demandes d'alumnes en dual (només admin_borsa).
  10. ... validació o registre?...

Login amb user/pass al frontend

Actualment el frontend només permet entrar mitjançant OAuth i només amb Google. Els admins poden convidar usuaris d'altres proveïdors, però aquests no poden logar-se amb OAuth. Per tant, cal un mètdode d'entrada estàndard amb usuari (email) i contrasenya.

  1. Implementar nova ruta i pàgina de login amb usuari (email) i contrasenya.
  2. Implementar pàgina de canvi de contrasenya (si estem logats). Ha de demanar contrasenya actual, la nova contrasenya (2 cops, per comprovar-la).
  3. Implementar pàgina de recuperació de contrasenya. S'ha d'enviar un email amb enllaç per recuperació.

Nova secció de control d'assistència

De moment no l'implementem.


Backlog Fase 1 (curs 2018-2019)

  1. Es vol una web accessible des d’un domini públic.
  2. La app ha de poder enviar emails.
  3. Cal fer un seeder amb dades d'exemple de centres, cicles i alumnes d'exemple per testejar les funcions.
  4. La borsa ha de contemplar, al menys, els següents objectes:
    • Ofertes de feina
    • Demandes de feina
    • Entitats (ofertants)
    • Àrees territorials (comarques, SSTT?)
    • Centres Educatius
    • Cicles Formatius
    • Alumnes
    • Administradors
    • Categories
    • Missatges interns
  5. Els usuaris (grups/permisos) podran ser:
    • Entitats: poden crear ofertes
    • Centres: poden ofertar cicles i inscriure alumnes
    • Alumnes: poden visualitzar ofertes rellevants i contactar amb l’empresa
    • Administradors: poden gestionar categories, centres, cicles i gestionar les inscripcions d'alumnes en massa
  6. Els Centres Educatius poden assignar-se ells mateixos diversos cicles formatius (backend)
  7. Tots els usuaris tenen imatge de perfil/logo i un camp de descripció de la seva activitat (com a empresa o com a estudiant o com a centre).
  8. Vista de perfil d'usuari (frontend) per canviar imatge, descripció i el nickname (que ha de ser únic i sense espais).
  9. Les entitats poden publicar ofertes de feina destinades a un o diversos cicles i amb diverses categories/tags.
  10. Els alumnes o usuaris podran subscriure alertes d'ofertes de treball de diverses maneres. Les subscripcions seran del tipus:
    1. Pel centre al què està adscrit l'alumne
    2. Pel centre al què està adscrita l'empresa
    3. Per la categoria o categories interessades
    4. Pel cicle al què està adscrit l'alumne
    5. Per proximitat al centre educatiu
    6. Per proximitat a l'empresa
  11. Els alumnes poden crear tantes subscripcions com vuguin, i no estaran limitades pel cicle que hagin cursat.
  12. A l'inscriure un alumne es crearà una subscripció per defecte a les ofertes de treball del seu centre educatiu i el seu cicle cursat.
  13. Hi haurà un botó de "reset subscripcions" per esborrar totes les subscripcions creades i deixar només la "per defecte".
  14. Els alumnes subscrits a alerta podran rebre emails de les ofertes en forma de digest és a dir, un resum del dia.
  15. Els alumnes podran visualitzar les dades de l’empresa per a contactar-la.
  16. Els alumnes podran contactar amb les empreses mitjançant missatge intern de la borsa de treball per demanar detalls sense revelar la seva identitat.
  17. Els alumnes podran carregar el seu CV al seu perfil, però NO es publicarà per motiu de protecció de dades RGPD.
  18. Els alumnes poden mantenir el seu CV privat, i davant d’una oferta disposaran d’un botó “enviar CV” que respon automàticament a l’empresa enviant el CV. Caldrà avisar l’alumne que amb l’acció d’enviar CV l’empresa disposarà de les dades que ell hagi consignat en el document privat.
  19. Les entitats podran rebre missatges dels alumnes que s’interesin per una oferta, i contestar-los per missatge intern.
  20. Les ofertes de feina i els camps de descripció dels usuaris s’han de poder redactar amb text enriquit (HTML / WYSIWYG), tant a frontend com a backend.
  21. Les ofertes de feina poden contenir imatges incrustades i arxius adjunts.
  22. Els administradors de la borsa podran donar d’alta nous alumnes a través d’incloure la seva adreça de correu electrònic en el sistema.
  23. Els administradors poden desactivar alumnes o entitats (usuaris) que tinguin un comportament incorrecte en les seves publicacions o dades de perfil.
  24. L’usuari podrà accedir mitjançant autenticació externa de Google i Microsoft (OAuth).
  25. Quan un usuari es loga per primer cop haurà d'acceptar els termes d'ús i de privacitat de la borsa.
  26. Les entitats no podran mai veure dades dels alumnes.
  27. Les entitats podran visualitzar quants alumnes hi ha inscrits a cada cicle, i a cada categoria.
  28. Els cicles contindran informació de la formació realitzada (enllaços a plans d’estudi oficial, camps de personalització per a pla d’activitats de les FCT/DUAL o similars).
  29. A les ofertes de treball se li podrà adjuntar etiquetes (tags) per facilitar la classificació i filtratge (p.ex. Llenguatges de programació, programari, dispositius, tecnologies, coneixements particulars, acreditacions, certificacions, etc.)
  30. Els alumnes podran subscriure’s a aquestes etiquetes per veure i rebre les ofertes relacionades.
  31. Les categories/tags poden estar aniuades
  32. Les noves categories les hauran d’introduir els administradors.
  33. Les entitats i alumnes tindran un botó per suggerir una categoria, pero no es crearà immediatament, sinó que es notificarà als administradors per ser aprovada.
  34. Les entitats tindran un formulari per introduir les categories/tags amb funció d’autocompletar.
    Veure etiquetatge de stackoverflow per exemple: https://stackoverflow.com/questions/ask
  35. Vista principal d'alumne: visualitzar ofertes i filtrar (per tag/categoria i territori)
  36. Vista perfil alumne: imatge, nickname, descripció, (igual que usuari) + afegim categories subscrites amb checkbox jeràrquic, collapsible i/o autocompletable.
  37. Vista de missatges interns per "xat". L'usuari pot activar que quan se li escrigui missatge intern, se li envii un email amb el contingut del missatge. Els missatges interns quedaran registrats a l'aplicació per ser consultats a la vista.

Dubtes:

  • El nom i cognom dels alumnes el forcen els centres pq sigui real? Dona mes feina.
    • Alternativa: agafar nom i cognoms del OAuth Google/MS
  • Cal classificar els centres en comarques, SSTT, o tots dos?

Requeriments de permisos

Hi haurà aquests tipus d'usuari:

  1. professors
  2. alumnes
  3. administradors de borsa (un per centre)
  4. superadministrador

El comportament dels permisos ha de complir:

  1. Els administradors de centre poden:
    1. crear usuaris professors adscrits al centre
    2. crear usuaris alumnes adscrits al centre
    3. crear centres de treball adscrits
    4. cercar centres de treball (tots)
    5. visualitzar només els usuaris (professors, alumnes) del seu centre
  2. Els alumnes podran:
    1. veure les ofertes de treball



Equips

Formarem equips de treball per encarregar-se de parts diferents del projecte:

  • Model i BD
    • Crear model
    • Seeder: crear dades de test
  • Frontend
    • Disseny (CSS, aspecte)
    • Views (vista ofertes, filtres, perfil, ...)
  • Backend:
    • Càrrega arxius, CV, imatge perfil, logo
    • Admin, CSS, personalització de la visualització segons usuaris
  • Producció i desplegament
    • Desplegament en AWS amb Apache2
    • Enviament d'emails
    • Comandes per enviament de digest
  • PLUGIN Social login (OAuth Google i Microsfot)
    • Invitacions a alumnes i acceptació de termes d'ús de la web
    • Invitació d'usuaris i importació
  • PLUGIN WYSIWYG o Text enriquit (CKeditor, TinyMCE o similars)
    • backend
    • frontend
    • càrrega d'imatges des del propi editor
  • PLUGIN Select2 (autocompletar categories/tags)
    • frontend (filtre)
    • backend (afegir etiquetes als anuncis per part de les entitats)


Documentació: tots els equips documentaran a la wiki del projecte Github

SPRINTS

Sprint #1

  1. Es vol una web accessible des d’un domini públic.
  2. Cal fer un seeder amb dades d'exemple de centres, cicles i alumnes d'exemple per testejar les funcions.
  3. Login.(' L’usuari podrà accedir mitjançant autenticació externa de Google i Microsoft (OAuth).').
  4. Quan un usuari es loga per primer cop haurà d'acceptar els termes d'ús i de privacitat de la borsa.
  5. Frotend vista Alumne:
    • Llistat ofertes.
    • Filtres per aplicar(tag , data , localitat, categoria).
  6. FrontEnd Vista Alumne:
    • Mis ofertas
  7. Paginació vista alumne.
  8. FrontEnd Vista Alumne:
    • detall cada oferta en el llistat Clickable(data oferta, nom empresa, jornada,nom oferta,tags, categories, localitat).
  9. FrontEnd Vista Alumne:
    • Pagina Detall de la oferta( conté les dades de la especifiació 7 a més de la descripció, salari(Opcional), Gent subscrita,numero vacants, contactes, Boto seguir oferta i desubscribirse, les ofertes poden contenir imatges o archius adjunts).
  10. FrontEnd NavBar:
    • info si usuari esta logat, accés a perfil i logout.
  11. Vista perfil alumne:
    • Vista perfil alumne: imatge, nickname(modificable), descripció, (igual que usuari) + afegim categories subscrites amb checkbox jeràrquic, collapsible i/o autocompletable.
    • L'usuari pot activar que quan se li escrigui missatge intern, se li envii un email amb el contingut del missatge. Els missatges interns quedaran registrats a l'aplicació per ser consultats a la vista
    • Pujar CV.
    • Botó Guardar i Cancelar.
  12. Panel de control Entitat:
    • Crear Oferta.
    • Les meves Ofertes publicades.
    • Crear tag(Afegir nou tag).
    • Afegir alumne(només Centres Educatius).
  13. Crear oferta:
    • Form(conté les dades de la especifiació 7 a més de la descripció, salari(Opcional), Gent subscrita,numero vacants, contactes, Boto seguir oferta i desubscribirse, les ofertes poden contenir imatges o archius adjunts).
    • Les entitats tindran un formulari per introduir les categories/tags amb funció d’autocompletar.
  14. Meves Ofertes Entitat:
    • Visualitzar ofertes(igual que espec. 7).
    • Dos botons amb modificar i eliminar al costat de cada oferta.
    • clikable oferta
  15. Detall oferta de treball:
    • Visualitzar tota la oferta.
    • Estat de la oferta.
    • Gent subscrita.
  16. Admins i centres poden donar d'alta usuaris simplement amb email.
  17. Els alumnes subscrits a una categoria podran rebre emails de les ofertes en forma de digest és a dir, un resum del dia.
  18. Crear comanda Django que envii els digest del dia (ofertes que li afecten)
  19. Programar el CRON diari per al digest (producció) i documentar el seu ús.
  20. Tots els usuaris tenen:
    • imatge de perfil/logo
    • camp de descripció/presentació de la seva activitat (com a empresa o com a estudiant o com a centre)
    • Arxiu adjunt (CV, tríptic, etc.)