Car Test Performances Data Collection Analisys & Reporting: Odoo Framework for Honda R&D Europe - Roberto Fichera

Odoo Days Italia 2019

1004 views
0 Likes
0 0

Condividi sui social Networks

Condividi Link

Usare un link permanente per condividere sui social media

Condividi con un amico

Cortesemente login per inviare questo presentation per email !

Inserisci nel tuo sito web

Seleziona pagina dalla quale partire

5. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Rappresentazione dei Dati

6. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Ricerca Semplificata

7. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Analisi dei Dati

8. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Dashboard

20. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Snap Immagini in Dashboard

22. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 associazioneodooitalia@gmail.com odoo-italia.org roberto.fichera@levelprime.com Grazie della tua attenzione Uno speciale ringraziamento alla Honda R&D Europe per aver acconsentito alla pubblicazione del materiale presentato

13. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Come si può importare in tempi accettabili 20MB di file zip contenente migliaia di misure vettoriali? ● Una normale procedura di importazione può richiedere più di mezz’ora per completare l’operazione ● Bisogna trovare una soluzione! Import di migliaia di misure

3. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Tipologia Dei Dati Esecuzione dei Test sul veicolo Installazione della strumentazione per il recording dei dati Recording dei dati grezzi Estrazione e t rasformazione dei dati in formato Excel

18. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Come generare automaticamente presentazioni powerpoint da Odoo? Hacking Corner ● Non è necessario creare le presentazioni da Odoo come se fossero normali reports ● Si opera con PPTX già esistenti che vengono trattati come template ● Il problema principale è utilizzare le imagini del sistema di analisi per generare il PPTX finale

12. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Alcune delle strategie utilizzate per la soluzione di problematiche particolari: ● Riduzione delle tempistiche di importazione dati da file excel con dimensione in megabytes ● Memorizzare dati vettoriali di svariati Megabytes ● Generazione automatica di report PowerPoint da Odoo Hacking Corner

1. Odoo Days Italia odoo-italia.org Firenze, 14 e 15 novembre 2019 Titolo Car Test Performances Data Collection Analisys & Reporting: Odoo Framework for Honda R&D Europe Quando Giovedì 14/11/2019 14:30 – 15:00 Autore Roberto Fichera Level Prime Srl https://levelprime.com/ In altre parole: Uso di Odoo come framework Riferimenti roberto.fichera@levelprime.com

16. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Come memorizzare i dati vettoriali delle misure senza far collassare odoo e generare Megabytes di traffico client? Hacking Corner ● I fields Char/Text hanno il prefetching e comunque sono sconsigliati per memorizzare stringhe molto lunghe ● Il field Binary è mappato con il tipo SQL ByteA e PostgreSQL effettua il preload. Inoltre Odoo effettua un trattamento particolare, e se il field viene usato nella view allora il contenuto viene trasferito al client ... e tutto questo noi non lo vogliamo!!! ● ... abbiamo necessità di un nuovo field adhoc!

17. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 La base di partenza è stato il modulo https://github.com/muk-it/muk_base/tree/12.0/muk_fields_lobject SQL LargeObject ● Il modulo è stato modificato per poter gestire il field come un campo Char ma senza la gestione Binary-Like di Odoo come il modulo originario ● Il campo non è visibile nelle view ma si comporta come un normale campo Integer ● Di fatto è un field Integer che mappa un OID del BLOB stream- like memorizzato nella pg_largeobject system table ● Se usato server side il fetch dei dati avviene solo ondemand https://wiki.postgresql.org/wiki/BinaryFilesInDB https://www.microolap.com/products/connectivity/postgresdac/help/tipsandtricks_byteavsoid.htm

11. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Integrazione completa del workflow di lavoro a partire dall’estrazione dati sino al caricamento su Odoo ● Eliminazione di diversi strumenti esterni per il mantenimento e la ricerca dei dati ● Disponibilità immediata dei dati per i membri dei team operanti anche in altri continenti ● Semplificazione e miglioramento dell’organizzazione e la ricerca dei dati ● Considerevole riduzione delle tempistiche di accesso ai dati per l’analisi e la reportistica ● Nuove idee per migliorare il workflow ed integrare ulteriori processi Risultati Ottenuti

9. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Le motivazioni sono diverse, sia tecniche che funzionali ● Le motivazioni tecniche possiamo riassumerle: 1) E’ un’ottima piattaforma di sviluppo se utilizzata come framework dato che fornisce di serie tutto ciò che riguarda autenticazione, ORM, sviluppo dell’interfaccia client, tantissimi moduli, widget e componenti disponibili su internet 2) Consente una prototipazione rapida delle applicazioni rendendo il ciclo: sviluppo -> test -> debugging -> fixing -> sviluppo molto più semplice di tools similari 3) Basato su Python -> disponibilità infinita di packages utilizzabili negli ambiti più disparati 4) Buona scalabilità al crescere del numero di utenti e della quantità di dati 5) ... ma non è tutto oro quello che luccica! Ma Perchè Utilizzare Odoo?

15. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● L’algoritmo di Map Reduce ● Distribuisce su tanti threads i dati su cui fare l’elaborazione ● Ogni Thread restituisce il suo risultato ● Infine si mettono insieme i dati per completare l’operazione Importfile calcolo job result.id calcolo job result.id calcolo job result.id measure_ids measure_ids = thread_pool.map(calcolo, jobs)

2. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● E’ un modulo di estensione per Odoo v12 di supporto per ingegneri che testano e analizzano le performance degli autoveicoli. Integra diversi strumenti in un ambiente omogeneo: ● Importare dati da fonti esterne ● Importare ed organizzare i dati in modo coerentemente ● Gestire attività che ruotano attorno ai dati ● Ricerca e comparazione dati ● Analisi e Reportistica ● E’ parte del progetto Vehicle Comparison System ( VeCoS) disegnato e realizzato per Honda R&D Europe Cos’è Car Test Performance Data?

10. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Le motivazioni funzionali possiamo riassumerle: 1) Piattaforma per il lavoro di gruppo 1) Tracciamento delle informazioni 2) Notifiche automatiche 3) Calendari condivisi 4) Ruoli per l’accessibilità dei dati 5) Possibilità di specificare facilmente automatismi di vario genere 2) Strumento di lavoro accessibile tramite WEB ed automaticamente anche tramite dispositivi come smartphone e tablet 3) Uniformità dell’interfaccia per l’utente 4) Accessibilità delle informazioni solo dove necessario 5) ... è un ERP giusto? Ma Perchè Utilizzare Odoo?

4. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 Organizzazione dei Dati ● Esecuzione di decine di test per veicolo ● Gestione delle tipologie di test eseguiti, ad esempio: ● Performance ● Accelerazione ● Comfort di guida ● Sollecitazioni e vibrazioni ● Risposta del pedale ● Rilevazione di decine di misurazioni ● Riduzione e normalizzazione dei dati ● Importazione dei dati nel sistema ● Supporto per dati multidimensionali Classificazione dei veicoli utilizzati

14. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Usando il Multithreading!!! from multiprocessing.pool import ThreadPool def importfile (self): thread_pool = ThreadPool() for excel_file in zipfile: for sheet_name in excel_file: jobs = [] for column in sheet_name: thread_args.append((<parametri_column>)) measure_ids = thread_pool.map(self. calcolo , jobs) with api.Environment.manage(): with odoo.registry(self.env.cr.dbname).cursor() as new_cr: new_env = api.Environment(new_cr, self.env.uid, self.env.context) test_case = new_env [‘test.case’].create({...}) test_case.update({ ‘measure_ids’: [(6, 0, measure_ids)] }) def calcolo (self, params) : with api.Environment.manage(): with odoo.registry(self.env.cr.dbname).cursor() as new_cr: new_env = api.Environment(new_cr, self.env.uid, self.env.context) ... nostri calcoli ... result = new_env [‘test.measure’].create({...}) return result.id

21. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● Generare un nuovo PPTX da un template possiamo usare un controller che ci restistuisce il PPTX finale PPTX & Placeholder # Open the PowerPoint file pptx = Presentation (pptx_in) for slide in pptx.slides: for shape in slide.shapes: if isinstance (shape, PicturePlaceholder): if shape.name in images: img = images[shape.name] shape. insert_picture (img) img. seek ( 0 ) for img in images. values (): img. close () pptx_out = TemporaryFile () pptx. save (pptx_out) pptx_out. seek ( 0 ) return http. send_file (pptx_out, mimetype = 'application/vnd.openxmlformats-officedocument.presentationml.presentation' , filename = "{}.pptx" . format (template.name)) Apre il template PPTX Cerca nelle immagini passate al controller se c’è un match con il placeholder del PPTX e nel caso inserisce l’immagine Scrive il PPTX finale e lo restituisce con la http.send_file()

19. Odoo Days Italia: Car Test Performaces Data odoo-italia.org Firenze, 14 e 15 novembre 2019 ● In generale il flow è quello strutturare il PPTX con i placeholder ed effettuare la sostituzione al momento di generare il PPTX finale Il modulo python di base è: https://github.com/scanny/python-pptx PPTX & Placeholder from pptx import Presentation from pptx.shapes.placeholder import PicturePlaceholder class PowerPointTemplate (models.Model): ...... template = fields. Binary ( string = 'Template' ) tags = fields. Char ( string = 'Tags' ) @api.model def _get_picture_placeholder ( self , pptx): placeholder = [] for slide in pptx.slides: for shape in slide.shapes: if isinstance (shape, PicturePlaceholder): placeholder. append (shape.name) return placeholder @api.onchange ( 'template' ) def _onchange_template ( self ): if self .template: base_data = base64. b64decode ( self .template) myfile = BytesIO (base_data) pptx = Presentation (myfile) self .tags = self . _get_picture_placeholder (pptx) myfile. close () Ogni volta che cambiamo il PPTX estraiamo i PicturePlaceholder e li memorizziamo come una lista di stringhe [‘a’,’b’,’c’,’d’]

Viste

  • 1004 Visite totali
  • 703 Website Visite
  • 301 Embedded Views

Azioni

  • 0 Social Shares
  • 0 Likes
  • 0 Dislikes
  • 0 Commentis

Condividi conti

  • 0 Facebook
  • 0 Twitter
  • 0 LinkedIn
  • 0 Google+

Incorporare 9

  • 10 www.odooitalia.org:8069
  • 5 odoo-italia.org
  • 13 wiki.odoo-italia.org
  • 2 odoo10.odoo-italia.org
  • 3 odoo7.odoo-italia.org
  • 1 www.odoo10.odoo-italia.org
  • 2 51.77.146.165
  • 4 odoo11.odoo-italia.org
  • 1 sitemaps.odoo-italia.org