Especificacions: cooperativa de consum

De Cacauet Wiki
Salta a la navegació Salta a la cerca

Una cooperativa de consum responsable de Manresa necessita una aplicació per gestionar les seves comandes des d'internet. Ens demana que li fem l'aplicació i comencem per anar descobrint com funcionen i redactant les especificacions per facilitar la implementació i desplegament de l'aplicació.


El client: Què és una cooperativa de consum?

El nostre client, la cooperativa "La Pera" es dedica a autogestionar la compra de productes que han de complir amb diversos requisits:

  • Agricultura i ramaderia ecològica
  • Producte de proximitat
  • Respecte al medi ambient
  • Comerç just

Cada dimarts tots els socis passen de 7:30 a 9:30 pel local i:

  • Recullen la comanda de producte fresc (fruita, verdura, pasta fresca, pa, ous, formatges, etc.) que han fet la setmana anterior.
  • Afegeixien el producte de stock que vulguin (muesli, arròs, cus-cus, farina, xocolata, etc.).
  • Paguen
  • Realitzen comanda per la setmana següent.

És en aquesta gestió de realitzar la comanda que el nostre client ens demana l'aplicació per facilitar que la gent la pugui fer per internet i per què faciliti la gestió amb els proveïdors.

Els socis s'organitzen en comissions de treball per realitzar les diverses tasques que cal fer per mantenir en funcionament la cooperativa:

  • Compres: visita i compra als productors locals.
  • Econòmiques: gestionen els cobraments de quotes, la caixa i el pagament als proveïdors.
  • Internes: organitzen els torns de caixes (repartir el producte fresc encarregat la setmana anterior) i els torns de neteja.
  • Infraestructures: realitzen el manteniment del local i logística (tuppers, envasos, etc.)
  • Externes: comuniació amb altres cooperatives, fires, esdeveniments, difusió, etc.

Com es pot veure, el soci és una persona activa que ha de realitzar diverses tasques per beneficiar-se de la gestió de productes pels que es vetlla que sigui de consum responsable (requisits abans esmentats).

Intentem redactar unes especificacions per realitzar l'aplicació que els resolgui gestionar les comandes per internet.


L'aplicació

Tenim diverses facetes o cares de l'aplicació:

  • Client de la cooperativa (front-end): realitza comanda setmanalment abans del (configurabe) divendres migdia.
  • Gestor dels productes (back-end): posa preus, realitza comanda al proveïdor (informe per cadascun d'ells), imprimeix extractes per cada caixa (client de la cooperativa), etc.

Ambdós s'han d'identificar (autentificació) conrrectament per poder entrar a l'aplicació.


Especificacions funcionals

  1. Especificacions per als clients:
    1. Han de poder connectar-se i identificar-se, amb un o diversos sistemes oberts com OAuth (facebook), Google Accounts o OpenID. Si no queda més remei es pot fer amb comptes propis però es vol evitar el manteniment d'usuaris i contrasenyes.
    2. Cada comanda ha de mostrar diverses entrades.
    3. Cada entrada tindrà un producte (IDproducte) i la quantatitat (que depenent del producte seran per kg, manats, unitats, etc.).
    4. Han de poder triar la setmana d'entrega del producte (menú desplegable o combo box). El dia de la setmana d'entrega (dilluns, dimarts, etc.) ve predeterminat per gestor.
      1. Per defecte apareixerà l'entrega per la setmana següent.
      2. El desplegable mostrarà com a opcions les properes 4 setmanes.
    5. Ha de tenir la opció d'afegir productes en stock (no sota comanda) però han de figurar en una categoria a part.
    6. El client ha de veure una estimació del cost de la seva comanda dinàmicament a mesura que afegeix els productes (dividits entre productes sota comanda i en stock).
    7. El client finalment validarà i blocarà la seva comanda.
      1. Si el client vol modificar la comanda haurà de desblocar-la, i només pot fer-ho des del dia d'entrega fins el dia de tancament (dia de la setmana en què es tanca la comanda i s'efectua la petició als proveïdors).
      2. Inicialment el dia d'entrega és dimarts i el dia de tancament serà divendres migdia, per poder notificar els productors abans del cap de setmana).
      3. El client rebrà un email de notificació de la comanda efectuada amb la relació de productes i el cost estimat desglossat.
    8. Cada client només pot fer una comanda per setmana (* a revisar).
    9. El 'dia d'entrega de comanda el client podrà obrir una entrega de client.
      1. Aquesta entrega serà una còpia de la seva comanda, on podrà efectuar modificacions segons el què hagi rebut efectivament.
      2. L'entrega calcularà el preu dels productes comprats finalment.
    10. ...
  2. Especificacions per als gestors:
    1. Han de poder donar d'alta i baixa usuaris basant-se en el sistema triat d'autenticació (OAuth, Google, OpenID, comptes de l'aplicació, etc.).
      1. S'intentarà evitar manteniment d'usuaris i contrasenyes mitjançant sistemes d'autenticació oberts.
    2. Ha de triar el dia i hora d'entrega de productes de la cooperativa (en principi dimarts a les 6, ja que els socis arriben a les 7:30). Això afecta als proveïdors (entrega de productes) i als clients (dia de recollida de comanda).
    3. Ha de triar el dia i hora de tancament a partir del qual les comandes no es poden modificar.
      1. Inicialment serà divendres migdia per poder notificar els proveïdors abans del cap de setmana.
    4. Control de productes:
      1. Hi ha 2 tipus: productes sota comanda i productes en stock.
      2. Les comandes dels diferents tipus de producte (comanda, stock) han de ser clarament diferenciades.
      3. Ha de poder donar d'alta nous productes, que tindran els atributs preu, proveïdor, indicador comanda/stock, stock.
        1. El camp stock serà ignorat si és sota comanda.
      4. Ha de poder actualitzar el valor del stock.
    5. Ha de poder tenir un registre històric dels productes i comandes.
      1. Les modificacions de preu i/o proveïdor ha de resultar en un producte nou, per permetre la traçabilitat de les comandes històriques.
    6. El sistema enviarà un email automàtic als proveïdors,
    7. Avisos.
  3. Especificacions comunes:
    1. Visualització responsive per dispositius estàndard i mòbils (PC, smartphone, tablet).
      1. Especialment per la "entrega de client" on els socis podran calcular el preu final a pagar a caixa des del seu telèfon mòbil.
    2. Disseny i usabilitat...


Especificacions no-funcionals

L'aplicació es realitzarà:

  • En llenguatge Python.
  • Amb el framework Pyramid.
  • Sobre la plataforma de desplegament de Google App Engine (GAE). És la opció més econòmica.