{"context":{"domain":"people-le-moura"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"69fe34b018c813c5be7bddd9","name":"Leadro Moura","domain":"people-le-moura","visibility":"private","settings":{"defaultAccessPolicy":"private"},"updatedAt":"2026-08-14T19:35:06.936Z","createdAt":"2026-05-08T19:08:32.496Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a9238cfeed7600008c5c200","component":"data2-core-types@Component","system":"69fe34b018c813c5be7bddd9","params":{"extends":"data2-core-primitives@Block","component":"preaction-roteiro","package":"people-le-moura","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const IMG = 'https://people-le-moura.data2.media/file/';\nconst P = {\n  inicio: IMG + '38sxZ31eETAKzfeKok2VG',\n  foto: IMG + 'kgGq0Yn7LlK6V3VbFQTnb',\n  faca: IMG + 'xAfjJEcugRpStTbuAMTRC',\n  carrinho: IMG + 'XHYE-6hl5UR8nCOJ_N3Z3',\n  amendoim: IMG + '3xmKAxnxNBLno1jt9vK1s',\n  painel: IMG + 'ZlfmqU60MOt4N-kiUD2mQ',\n  detalhe: IMG + 'u24l2JcqPC88BpPAhg6dq',\n  papel: IMG + 'vLWXqx4W92kGR3ebFBGYp'\n};\nconst BASE = 'https://sst.people-le-moura.next.data2.app';\n\nconst PASSOS = [\n  {\n    n: 1, t: '00:00 – 00:40', tit: 'Abra pelo problema, não pelo produto',\n    tela: 'Painel do gestor', url: BASE + '/painel', img: P.painel,\n    fazer: [\n      'Abra o painel <strong>antes</strong> de mostrar qualquer tela de cadastro.',\n      'Deixe o número 7 e os 41% na tela por alguns segundos, em silêncio.',\n      'Aponte a barra preta no meio do gráfico e diga o nome dela: a linha.'\n    ],\n    falar: 'Esses são 17 reportes de cinco unidades. Sete deles foram registrados como indicador preventivo, mas a descrição do próprio colaborador conta um acidente. Sem ninguém perceber, eles cruzaram a linha. Quarenta e um por cento.',\n    porque: 'Se você começar pela tela de cadastro, a conversa vira \"app de formulário\" e entra na fila de TI. Começando pelo número, vira compliance.'\n  },\n  {\n    n: 2, t: '00:40 – 01:30', tit: 'Reporte falado, do jeito que acontece na operação',\n    tela: 'Reportar · aba Falar', url: BASE + '/?aba=voz', img: P.inicio,\n    fazer: [\n      'Volte para a tela de reporte pela seta no topo.',\n      'Clique em <strong>Falar o reporte</strong> e autorize o microfone.',\n      'Fale devagar, em tom de operação, o texto ao lado.',\n      'Clique em <strong>Parar de gravar</strong> e depois em <strong>Analisar reporte</strong>.'\n    ],\n    falar: 'Ó, é o seguinte. Eu tava porcionando frango na bancada, aí a faca escapou e fez um pequeno corte no meu dedo. Lavei, passei antisséptico e coloquei um band-aid da caixinha. Continuei trabalhando normal. Tô reportando como quase acidente.',\n    nota: 'O texto acima é para <strong>você falar</strong>, não para ler na tela. Repare que ele diz \"quase acidente\" e descreve um corte tratado — é a armadilha.',\n    porque: 'A dor que ele levantou primeiro foi o analfabetismo. Ver as palavras aparecendo enquanto se fala responde isso sem precisar explicar.'\n  },\n  {\n    n: 3, t: '01:30 – 02:30', tit: 'O achado — este é o momento da demo',\n    tela: 'Resultado com divergência', url: BASE + '/?caso=faca', img: P.faca,\n    destaque: true,\n    fazer: [\n      'Não fale por dois segundos. Deixe a tarja vermelha ser lida.',\n      'Aponte a pirâmide: <strong>DECLARADO</strong> abaixo da linha, <strong>APURADO</strong> acima.',\n      'Leia em voz alta o trecho destacado em amarelo dentro da descrição.',\n      'Só então fale a frase ao lado.'\n    ],\n    falar: 'Ele escreveu \"quase acidente\" no título. Mas na descrição dele mesmo está: fez um corte e usou primeiros socorros. Isso é FAC — indicador reativo, investigação obrigatória. A informação sempre esteve ali. Só estava no campo errado.',\n    porque: 'É o exemplo que ele te deu no áudio, devolvido funcionando. Se a demo inteira falhar e só isso rodar, valeu.'\n  },\n  {\n    n: 4, t: '02:30 – 03:15', tit: 'A operação que não tem tablet',\n    tela: 'Reportar · aba Fotografar o papel', url: BASE + '/?aba=foto', img: P.foto,\n    fazer: [\n      'Clique em <strong>Novo reporte</strong> e vá na aba <strong>Fotografar o papel</strong>.',\n      'Escolha o arquivo do formulário preenchido (o print ao lado, item 4b).',\n      'Aguarde os três passos: enviando, lendo o manuscrito, classificando.',\n      'Mostre que ele leu os checkboxes E a descrição à mão.'\n    ],\n    falar: 'A maior parte das unidades não tem tablet e não vai ter tão cedo. Aqui a Gerente de Unidade só bate a foto do papel que já existe. É o mesmo fluxo do Rydoo que vocês usam para reembolso.',\n    porque: 'Ele mesmo deu essa analogia no áudio. Usar a palavra Rydoo mostra que você ouviu.',\n    extraImg: P.papel, extraCap: '4b · O formulário de papel usado no teste. Guarde este arquivo à mão antes de gravar.'\n  },\n  {\n    n: 5, t: '03:15 – 03:50', tit: 'Mostre que ela também sabe NÃO escalar',\n    tela: 'Resultado sem divergência', url: BASE + '/?caso=carrinho', img: P.carrinho,\n    fazer: [\n      'Abra o caso do carrinho pelo atalho ou pelo chip <strong>O carrinho</strong>.',\n      'Aponte que ficou <strong>abaixo</strong> da linha, em verde.',\n      'Leia a justificativa: houve dor, mas nenhum atendimento.'\n    ],\n    falar: 'Aqui teve contato e teve dor. Mas não houve atendimento nenhum. Continua sendo quase acidente, e a IA não escalou. Alarme falso queima a confiança de vocês tão rápido quanto a subnotificação.',\n    porque: 'É a pergunta que um gerente de SST faz na hora: \"e se ela exagerar?\". Responder antes de ser perguntado vale mais do que responder depois.'\n  },\n  {\n    n: 6, t: '03:50 – 04:20', tit: 'A outra pirâmide — Segurança dos Alimentos',\n    tela: 'Resultado em SA', url: BASE + '/?caso=amendoim', img: P.amendoim,\n    fazer: [\n      'Abra o caso do amendoim.',\n      'Mostre que a pirâmide na tela <strong>mudou</strong>: agora é a escala de SA.',\n      'Aponte o nível DTHA / Alergia.'\n    ],\n    falar: 'A pirâmide de vocês é dupla. A IA primeiro decide se o risco é ao trabalhador ou ao comensal, e só depois posiciona o nível. Aqui ela foi para a escala de Segurança dos Alimentos sozinha.',\n    porque: 'Mostra que a solução leu a pirâmide inteira que ele mandou, não só metade. É o detalhe que prova que não é demo genérica.'\n  },\n  {\n    n: 7, t: '04:20 – 05:00', tit: 'Feche o ciclo: o alerta vira tarefa',\n    tela: 'Painel · detalhe e ações', url: BASE + '/painel?filtro=diverg&aberto=PA-04509', img: P.detalhe,\n    fazer: [\n      'No resultado, clique em <strong>Confirmar e gravar</strong> e depois em <strong>Ver no painel</strong>.',\n      'Filtre por <strong>Divergências</strong>.',\n      'Clique numa linha para abrir o detalhe.',\n      'Clique em <strong>Abrir investigação</strong> e mostre a etiqueta mudando.'\n    ],\n    falar: 'O alerta não morre na tela. O gestor abre a investigação aqui, e o reporte fica marcado até alguém encerrar. É o registro de que a empresa viu e agiu.',\n    porque: 'Sem isso, a demo prova um achado e não prova um processo. Investigação obrigatória sem lugar para registrar não convence auditoria.'\n  }\n];\n\nconst ATALHOS = [\n  ['Painel do gestor', BASE + '/painel'],\n  ['Painel só com as divergências', BASE + '/painel?filtro=diverg'],\n  ['Painel com um caso já aberto', BASE + '/painel?filtro=diverg&aberto=PA-04509'],\n  ['Reportar — aba Falar', BASE + '/?aba=voz'],\n  ['Reportar — aba Fotografar', BASE + '/?aba=foto'],\n  ['Caso da faca, já analisado', BASE + '/?caso=faca'],\n  ['Caso do caldo (RWC)', BASE + '/?caso=caldo'],\n  ['Caso do carrinho (não escala)', BASE + '/?caso=carrinho'],\n  ['Caso do amendoim (SA)', BASE + '/?caso=amendoim']\n];\n\nconst PERGUNTAS = [\n  { q: 'E se ela errar a classificação?', a: 'Ela erra. Por isso a tela mostra o trecho exato que decidiu e a justificativa — o gestor confere em dois segundos e corrige antes de gravar. E o alerta é conservador: na dúvida ela escolhe o nível menor e baixa a confiança.' },\n  { q: 'Qual a acurácia?', a: '17 de 17 num gabarito de 17 casos de cozinha industrial e refeitório, medido ponta a ponta. Mas seja honesto: esse gabarito fui eu que escrevi a partir de perfis públicos de risco. Com casos reais de vocês, a medida passa a valer.' },\n  { q: 'Funciona com o barulho da cozinha?', a: 'Não testamos em campo. Na demo a transcrição roda no navegador. Num piloto real isso muda para gravação local com envio depois, e o áudio fica anexado ao registro.' },\n  { q: 'Onde ficam os dados?', a: 'Nesta demo, num ambiente de protótipo, com dados fictícios. Nada de vocês. Descrição de lesão com pessoa identificável é dado de saúde sob a LGPD — num piloto isso entra com controle de acesso desde o primeiro dia.' },\n  { q: 'Dá para integrar com o sistema que já usamos?', a: 'A classificação é um serviço que recebe texto e devolve o nível na pirâmide. Ela pode viver dentro desta tela ou atrás do formulário que vocês já têm.' }\n];\n\nconst CUIDADOS = [\n  ['Use o Chrome', 'O ditado por voz só funciona no Chrome. No Safari e no Firefox a aba Falar não grava.'],\n  ['A URL precisa do <code>.next.</code>', 'Sem esse pedaço no meio do endereço, a página abre em branco. Confira antes de compartilhar a tela.'],\n  ['Teste o microfone antes', 'Autorize o microfone uma vez com antecedência. A caixa de permissão no meio da gravação estraga o ritmo.'],\n  ['Tenha o plano B pronto', 'Se o microfone falhar, use os chips de caso na parte de baixo da tela — um clique e o resultado aparece. Ninguém percebe.'],\n  ['Não prometa piloto de campo', 'Isto é protótipo. Falta segurança, teste com foto real de celular e o formulário de verdade da Sodexo.']\n];\n\nfunction esc(s) {\n  return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n}\n\nexport default {\n  css: `\n:host{all:initial}\n*{box-sizing:border-box}\n.wrap{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;color:#15211c;background:#f2f4f1;height:100%;overflow:auto;padding:26px 20px 70px;line-height:1.6}\n.shell{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;gap:20px}\n\nheader{display:flex;flex-direction:column;gap:9px;padding-bottom:20px;border-bottom:2px solid #15211c}\n.eyebrow{font-size:10.5px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:#6b7873}\nh1{margin:0;font-size:clamp(25px,4vw,34px);line-height:1.1;letter-spacing:-.4px}\n.lede{font-size:15.5px;color:#3c4a44;max-width:66ch}\n.meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}\n.tagm{font-size:11.5px;font-weight:600;background:#e2e8e4;color:#3c4a44;padding:3px 10px;border-radius:2px}\n\n.card{background:#fff;border:1px solid #d6ddd8;border-radius:4px}\n.card>.hd{padding:12px 18px;border-bottom:1px solid #e6ebe7;font-size:10.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#6b7873}\n.card>.bd{padding:18px}\n\n.aviso{background:#fdf6e3;border:1.5px solid #e8d9a8;border-radius:4px;padding:15px 18px}\n.aviso .t{font-weight:700;font-size:14.5px;color:#8c6d1f;margin-bottom:5px}\n.aviso ul{margin:6px 0 0;padding-left:19px;font-size:13.5px;color:#3c4a44}\n.aviso li{margin-bottom:4px}\n.aviso code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;background:#fff;padding:1px 5px;border-radius:2px;border:1px solid #e8d9a8}\n\n.passo{background:#fff;border:1px solid #d6ddd8;border-radius:4px;overflow:hidden}\n.passo.destaque{border:2px solid #b33a2b}\n.passo .cab{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid #e6ebe7}\n.passo.destaque .cab{background:#fbeae7;border-bottom-color:#e6b8b0}\n.num{width:31px;height:31px;flex:none;border-radius:50%;background:#15211c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}\n.passo.destaque .num{background:#b33a2b}\n.cab .txt{flex:1;min-width:0}\n.cab h2{margin:0;font-size:17.5px;line-height:1.25;letter-spacing:-.2px}\n.cab .sub{font-size:12px;color:#6b7873;margin-top:3px}\n.cab .tempo{font-size:11.5px;font-weight:700;color:#6b7873;white-space:nowrap;font-variant-numeric:tabular-nums;background:#f2f4f1;padding:4px 9px;border-radius:2px}\n.passo.destaque .cab .tempo{background:#fff;color:#8c2a1e}\n\n.corpo{display:grid;grid-template-columns:1fr 1fr;gap:0}\n.col{padding:18px}\n.col+.col{border-left:1px solid #e6ebe7}\n@media(max-width:820px){.corpo{grid-template-columns:1fr}.col+.col{border-left:none;border-top:1px solid #e6ebe7}}\n\n.rot{font-size:10px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase;color:#6b7873;margin-bottom:8px}\nol.acoes{margin:0;padding-left:19px;font-size:14px}\nol.acoes li{margin-bottom:7px}\n.fala{background:#f2f4f1;border-left:3px solid #186a4b;border-radius:0 3px 3px 0;padding:12px 15px;font-size:14.5px;font-style:italic;color:#15211c}\n.nota{font-size:12.5px;color:#6b7873;margin-top:9px}\n.porque{margin-top:13px;padding-top:12px;border-top:1px dashed #d6ddd8;font-size:13px;color:#3c4a44}\n.porque b{color:#186a4b;font-style:normal}\n\nfigure{margin:0}\nimg{display:block;width:100%;height:auto;border:1px solid #d6ddd8;border-radius:3px;background:#fff}\nfigcaption{font-size:11.5px;color:#6b7873;margin-top:7px}\n.linkurl{display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:#186a4b;word-break:break-all;margin-top:6px}\n\ntable{width:100%;border-collapse:collapse;font-size:13.5px}\nth{text-align:left;padding:9px 14px;font-size:10px;letter-spacing:.9px;text-transform:uppercase;color:#6b7873;border-bottom:1px solid #cfd8d2}\ntd{padding:9px 14px;border-bottom:1px solid #eef2ef;vertical-align:top}\ntd.k{font-weight:600;white-space:nowrap}\ntd.v{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:#186a4b;word-break:break-all}\ntbody tr:last-child td{border-bottom:none}\n\n.qa{display:flex;flex-direction:column;gap:14px}\n.qa .q{font-weight:700;font-size:14.5px}\n.qa .a{font-size:13.5px;color:#3c4a44;margin-top:3px}\n\n.cuid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}\n.cuid .i{background:#f7f9f7;border:1px solid #e2e8e4;border-radius:3px;padding:13px 15px}\n.cuid .i b{display:block;font-size:13.5px;margin-bottom:3px}\n.cuid .i span{font-size:12.5px;color:#3c4a44}\n.cuid code{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;background:#fff;padding:1px 4px;border-radius:2px;border:1px solid #e2e8e4}\n\nfooter{font-size:12px;color:#6b7873;border-top:1px solid #d6ddd8;padding-top:16px;display:flex;flex-direction:column;gap:5px}\n`,\n\n  render() {\n    const passos = PASSOS.map((p) => `\n      <div class=\"passo ${p.destaque ? 'destaque' : ''}\">\n        <div class=\"cab\">\n          <div class=\"num\">${p.n}</div>\n          <div class=\"txt\">\n            <h2>${esc(p.tit)}</h2>\n            <div class=\"sub\">Tela: ${esc(p.tela)}</div>\n          </div>\n          <div class=\"tempo\">${esc(p.t)}</div>\n        </div>\n        <div class=\"corpo\">\n          <div class=\"col\">\n            <div class=\"rot\">O que fazer</div>\n            <ol class=\"acoes\">${p.fazer.map((f) => '<li>' + f + '</li>').join('')}</ol>\n            <div class=\"rot\" style=\"margin-top:16px\">O que dizer</div>\n            <div class=\"fala\">\"${esc(p.falar)}\"</div>\n            ${p.nota ? '<div class=\"nota\">' + p.nota + '</div>' : ''}\n            <div class=\"porque\"><b>Por que assim:</b> ${esc(p.porque)}</div>\n          </div>\n          <div class=\"col\">\n            <figure>\n              <img src=\"${esc(p.img)}\" alt=\"Tela: ${esc(p.tela)}\" loading=\"lazy\">\n              <figcaption>${p.n} · ${esc(p.tela)}<br><span class=\"linkurl\">${esc(p.url)}</span></figcaption>\n            </figure>\n            ${p.extraImg ? '<figure style=\"margin-top:14px\"><img src=\"' + esc(p.extraImg) + '\" alt=\"Formulário de papel\" loading=\"lazy\"><figcaption>' + p.extraCap + '</figcaption></figure>' : ''}\n          </div>\n        </div>\n      </div>`).join('');\n\n    const atalhos = ATALHOS.map((a) => `<tr><td class=\"k\">${esc(a[0])}</td><td class=\"v\">${esc(a[1])}</td></tr>`).join('');\n    const perguntas = PERGUNTAS.map((p) => `<div><div class=\"q\">${esc(p.q)}</div><div class=\"a\">${esc(p.a)}</div></div>`).join('');\n    const cuidados = CUIDADOS.map((c) => `<div class=\"i\"><b>${c[0]}</b><span>${c[1]}</span></div>`).join('');\n\n    return `<div class=\"wrap\"><div class=\"shell\">\n\n      <header>\n        <div class=\"eyebrow\">Sodexo · Piloto PreAction · Protótipo Data2</div>\n        <h1>Roteiro da demonstração</h1>\n        <p class=\"lede\">Sete passos, cerca de cinco minutos. Cobre as três entradas de reporte, a classificação na pirâmide, o caso em que a IA não escala e o fechamento da investigação. Cada passo traz o que fazer, o que dizer e o print de como a tela deve estar.</p>\n        <div class=\"meta\"><span class=\"tagm\">~5 min</span><span class=\"tagm\">7 passos</span><span class=\"tagm\">Chrome obrigatório</span><span class=\"tagm\">Dados fictícios</span></div>\n      </header>\n\n      <div class=\"aviso\">\n        <div class=\"t\">Antes de apertar o gravar</div>\n        <ul>\n          <li>Abra no <strong>Chrome</strong>. O ditado por voz não existe em Safari nem Firefox.</li>\n          <li>Confira que o endereço tem <code>.next.</code> no meio: <code>${esc(BASE)}</code></li>\n          <li>Autorize o microfone uma vez, com antecedência.</li>\n          <li>Deixe o arquivo do formulário de papel salvo na área de trabalho (imagem do passo 4b).</li>\n          <li>Abra duas abas: uma na tela de reporte, outra no painel. Trocar de aba é mais rápido que navegar.</li>\n        </ul>\n      </div>\n\n      ${passos}\n\n      <div class=\"card\">\n        <div class=\"hd\">Atalhos — leve a tela direto ao estado que você quer</div>\n        <div class=\"bd\" style=\"padding:0\">\n          <table>\n            <thead><tr><th>Estado</th><th>Endereço</th></tr></thead>\n            <tbody>${atalhos}</tbody>\n          </table>\n        </div>\n      </div>\n\n      <div class=\"card\">\n        <div class=\"hd\">O que ele vai perguntar</div>\n        <div class=\"bd\"><div class=\"qa\">${perguntas}</div></div>\n      </div>\n\n      <div class=\"card\">\n        <div class=\"hd\">Cuidados</div>\n        <div class=\"bd\"><div class=\"cuid\">${cuidados}</div></div>\n      </div>\n\n      <footer>\n        <div>Prints capturados da solução em 29 de agosto de 2026. Se a tela mudar, recapture — um roteiro com print velho confunde mais do que ajuda.</div>\n        <div>Os 17 reportes do painel são casos sintéticos, montados a partir de perfis públicos de risco em cozinha industrial e refeitório. Nenhum dado da Sodexo foi usado.</div>\n      </footer>\n\n    </div></div>`;\n  }\n};"}}}}}},"__d2PrevCode":{"code":"const IMG = 'https://people-le-moura.data2.media/file/';\nconst P = {\n  inicio: IMG + '38sxZ31eETAKzfeKok2VG',\n  foto: IMG + 'kgGq0Yn7LlK6V3VbFQTnb',\n  faca: IMG + 'BRZTznxWzbgVE58uZc6zM',\n  carrinho: IMG + 'XHYE-6hl5UR8nCOJ_N3Z3',\n  amendoim: IMG + '3xmKAxnxNBLno1jt9vK1s',\n  painel: IMG + 'ZlfmqU60MOt4N-kiUD2mQ',\n  detalhe: IMG + 'u24l2JcqPC88BpPAhg6dq',\n  papel: IMG + 'vLWXqx4W92kGR3ebFBGYp'\n};\nconst BASE = 'https://sst.people-le-moura.next.data2.app';\n\nconst PASSOS = [\n  {\n    n: 1, t: '00:00 – 00:40', tit: 'Abra pelo problema, não pelo produto',\n    tela: 'Painel do gestor', url: BASE + '/painel', img: P.painel,\n    fazer: [\n      'Abra o painel <strong>antes</strong> de mostrar qualquer tela de cadastro.',\n      'Deixe o número 7 e os 41% na tela por alguns segundos, em silêncio.',\n      'Aponte a barra preta no meio do gráfico e diga o nome dela: a linha.'\n    ],\n    falar: 'Esses são 17 reportes de cinco unidades. Sete deles foram registrados como indicador preventivo, mas a descrição do próprio colaborador conta um acidente. Sem ninguém perceber, eles cruzaram a linha. Quarenta e um por cento.',\n    porque: 'Se você começar pela tela de cadastro, a conversa vira \"app de formulário\" e entra na fila de TI. Começando pelo número, vira compliance.'\n  },\n  {\n    n: 2, t: '00:40 – 01:30', tit: 'Reporte falado, do jeito que acontece na operação',\n    tela: 'Reportar · aba Falar', url: BASE + '/?aba=voz', img: P.inicio,\n    fazer: [\n      'Volte para a tela de reporte pela seta no topo.',\n      'Clique em <strong>Falar o reporte</strong> e autorize o microfone.',\n      'Fale devagar, em tom de operação, o texto ao lado.',\n      'Clique em <strong>Parar de gravar</strong> e depois em <strong>Analisar reporte</strong>.'\n    ],\n    falar: 'Ó, é o seguinte. Eu tava porcionando frango na bancada, aí a faca escapou e fez um pequeno corte no meu dedo. Lavei, passei antisséptico e coloquei um band-aid da caixinha. Continuei trabalhando normal. Tô reportando como quase acidente.',\n    nota: 'O texto acima é para <strong>você falar</strong>, não para ler na tela. Repare que ele diz \"quase acidente\" e descreve um corte tratado — é a armadilha.',\n    porque: 'A dor que ele levantou primeiro foi o analfabetismo. Ver as palavras aparecendo enquanto se fala responde isso sem precisar explicar.'\n  },\n  {\n    n: 3, t: '01:30 – 02:30', tit: 'O achado — este é o momento da demo',\n    tela: 'Resultado com divergência', url: BASE + '/?caso=faca', img: P.faca,\n    destaque: true,\n    fazer: [\n      'Não fale por dois segundos. Deixe a tarja vermelha ser lida.',\n      'Aponte a pirâmide: <strong>DECLARADO</strong> abaixo da linha, <strong>APURADO</strong> acima.',\n      'Leia em voz alta o trecho destacado em amarelo dentro da descrição.',\n      'Só então fale a frase ao lado.'\n    ],\n    falar: 'Ele escreveu \"quase acidente\" no título. Mas na descrição dele mesmo está: fez um corte e usou primeiros socorros. Isso é FAC — indicador reativo, investigação obrigatória. A informação sempre esteve ali. Só estava no campo errado.',\n    porque: 'É o exemplo que ele te deu no áudio, devolvido funcionando. Se a demo inteira falhar e só isso rodar, valeu.'\n  },\n  {\n    n: 4, t: '02:30 – 03:15', tit: 'A operação que não tem tablet',\n    tela: 'Reportar · aba Fotografar o papel', url: BASE + '/?aba=foto', img: P.foto,\n    fazer: [\n      'Clique em <strong>Novo reporte</strong> e vá na aba <strong>Fotografar o papel</strong>.',\n      'Escolha o arquivo do formulário preenchido (o print ao lado, item 4b).',\n      'Aguarde os três passos: enviando, lendo o manuscrito, classificando.',\n      'Mostre que ele leu os checkboxes E a descrição à mão.'\n    ],\n    falar: 'A maior parte das unidades não tem tablet e não vai ter tão cedo. Aqui a Gerente de Unidade só bate a foto do papel que já existe. É o mesmo fluxo do Rydoo que vocês usam para reembolso.',\n    porque: 'Ele mesmo deu essa analogia no áudio. Usar a palavra Rydoo mostra que você ouviu.',\n    extraImg: P.papel, extraCap: '4b · O formulário de papel usado no teste. Guarde este arquivo à mão antes de gravar.'\n  },\n  {\n    n: 5, t: '03:15 – 03:50', tit: 'Mostre que ela também sabe NÃO escalar',\n    tela: 'Resultado sem divergência', url: BASE + '/?caso=carrinho', img: P.carrinho,\n    fazer: [\n      'Abra o caso do carrinho pelo atalho ou pelo chip <strong>O carrinho</strong>.',\n      'Aponte que ficou <strong>abaixo</strong> da linha, em verde.',\n      'Leia a justificativa: houve dor, mas nenhum atendimento.'\n    ],\n    falar: 'Aqui teve contato e teve dor. Mas não houve atendimento nenhum. Continua sendo quase acidente, e a IA não escalou. Alarme falso queima a confiança de vocês tão rápido quanto a subnotificação.',\n    porque: 'É a pergunta que um gerente de SST faz na hora: \"e se ela exagerar?\". Responder antes de ser perguntado vale mais do que responder depois.'\n  },\n  {\n    n: 6, t: '03:50 – 04:20', tit: 'A outra pirâmide — Segurança dos Alimentos',\n    tela: 'Resultado em SA', url: BASE + '/?caso=amendoim', img: P.amendoim,\n    fazer: [\n      'Abra o caso do amendoim.',\n      'Mostre que a pirâmide na tela <strong>mudou</strong>: agora é a escala de SA.',\n      'Aponte o nível DTHA / Alergia.'\n    ],\n    falar: 'A pirâmide de vocês é dupla. A IA primeiro decide se o risco é ao trabalhador ou ao comensal, e só depois posiciona o nível. Aqui ela foi para a escala de Segurança dos Alimentos sozinha.',\n    porque: 'Mostra que a solução leu a pirâmide inteira que ele mandou, não só metade. É o detalhe que prova que não é demo genérica.'\n  },\n  {\n    n: 7, t: '04:20 – 05:00', tit: 'Feche o ciclo: o alerta vira tarefa',\n    tela: 'Painel · detalhe e ações', url: BASE + '/painel?filtro=diverg&aberto=PA-04509', img: P.detalhe,\n    fazer: [\n      'No resultado, clique em <strong>Confirmar e gravar</strong> e depois em <strong>Ver no painel</strong>.',\n      'Filtre por <strong>Divergências</strong>.',\n      'Clique numa linha para abrir o detalhe.',\n      'Clique em <strong>Abrir investigação</strong> e mostre a etiqueta mudando.'\n    ],\n    falar: 'O alerta não morre na tela. O gestor abre a investigação aqui, e o reporte fica marcado até alguém encerrar. É o registro de que a empresa viu e agiu.',\n    porque: 'Sem isso, a demo prova um achado e não prova um processo. Investigação obrigatória sem lugar para registrar não convence auditoria.'\n  }\n];\n\nconst ATALHOS = [\n  ['Painel do gestor', BASE + '/painel'],\n  ['Painel só com as divergências', BASE + '/painel?filtro=diverg'],\n  ['Painel com um caso já aberto', BASE + '/painel?filtro=diverg&aberto=PA-04509'],\n  ['Reportar — aba Falar', BASE + '/?aba=voz'],\n  ['Reportar — aba Fotografar', BASE + '/?aba=foto'],\n  ['Caso da faca, já analisado', BASE + '/?caso=faca'],\n  ['Caso do caldo (RWC)', BASE + '/?caso=caldo'],\n  ['Caso do carrinho (não escala)', BASE + '/?caso=carrinho'],\n  ['Caso do amendoim (SA)', BASE + '/?caso=amendoim']\n];\n\nconst PERGUNTAS = [\n  { q: 'E se ela errar a classificação?', a: 'Ela erra. Por isso a tela mostra o trecho exato que decidiu e a justificativa — o gestor confere em dois segundos e corrige antes de gravar. E o alerta é conservador: na dúvida ela escolhe o nível menor e baixa a confiança.' },\n  { q: 'Qual a acurácia?', a: '17 de 17 num gabarito de 17 casos de cozinha industrial e refeitório, medido ponta a ponta. Mas seja honesto: esse gabarito fui eu que escrevi a partir de perfis públicos de risco. Com casos reais de vocês, a medida passa a valer.' },\n  { q: 'Funciona com o barulho da cozinha?', a: 'Não testamos em campo. Na demo a transcrição roda no navegador. Num piloto real isso muda para gravação local com envio depois, e o áudio fica anexado ao registro.' },\n  { q: 'Onde ficam os dados?', a: 'Nesta demo, num ambiente de protótipo, com dados fictícios. Nada de vocês. Descrição de lesão com pessoa identificável é dado de saúde sob a LGPD — num piloto isso entra com controle de acesso desde o primeiro dia.' },\n  { q: 'Dá para integrar com o sistema que já usamos?', a: 'A classificação é um serviço que recebe texto e devolve o nível na pirâmide. Ela pode viver dentro desta tela ou atrás do formulário que vocês já têm.' }\n];\n\nconst CUIDADOS = [\n  ['Use o Chrome', 'O ditado por voz só funciona no Chrome. No Safari e no Firefox a aba Falar não grava.'],\n  ['A URL precisa do <code>.next.</code>', 'Sem esse pedaço no meio do endereço, a página abre em branco. Confira antes de compartilhar a tela.'],\n  ['Teste o microfone antes', 'Autorize o microfone uma vez com antecedência. A caixa de permissão no meio da gravação estraga o ritmo.'],\n  ['Tenha o plano B pronto', 'Se o microfone falhar, use os chips de caso na parte de baixo da tela — um clique e o resultado aparece. Ninguém percebe.'],\n  ['Não prometa piloto de campo', 'Isto é protótipo. Falta segurança, teste com foto real de celular e o formulário de verdade da Sodexo.']\n];\n\nfunction esc(s) {\n  return String(s == null ? '' : s).replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\n}\n\nexport default {\n  css: `\n:host{all:initial}\n*{box-sizing:border-box}\n.wrap{font-family:\"Helvetica Neue\",Helvetica,Arial,sans-serif;color:#15211c;background:#f2f4f1;height:100%;overflow:auto;padding:26px 20px 70px;line-height:1.6}\n.shell{max-width:1000px;margin:0 auto;display:flex;flex-direction:column;gap:20px}\n\nheader{display:flex;flex-direction:column;gap:9px;padding-bottom:20px;border-bottom:2px solid #15211c}\n.eyebrow{font-size:10.5px;font-weight:700;letter-spacing:1.6px;text-transform:uppercase;color:#6b7873}\nh1{margin:0;font-size:clamp(25px,4vw,34px);line-height:1.1;letter-spacing:-.4px}\n.lede{font-size:15.5px;color:#3c4a44;max-width:66ch}\n.meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}\n.tagm{font-size:11.5px;font-weight:600;background:#e2e8e4;color:#3c4a44;padding:3px 10px;border-radius:2px}\n\n.card{background:#fff;border:1px solid #d6ddd8;border-radius:4px}\n.card>.hd{padding:12px 18px;border-bottom:1px solid #e6ebe7;font-size:10.5px;font-weight:700;letter-spacing:1.4px;text-transform:uppercase;color:#6b7873}\n.card>.bd{padding:18px}\n\n.aviso{background:#fdf6e3;border:1.5px solid #e8d9a8;border-radius:4px;padding:15px 18px}\n.aviso .t{font-weight:700;font-size:14.5px;color:#8c6d1f;margin-bottom:5px}\n.aviso ul{margin:6px 0 0;padding-left:19px;font-size:13.5px;color:#3c4a44}\n.aviso li{margin-bottom:4px}\n.aviso code{font-family:ui-monospace,Menlo,monospace;font-size:12.5px;background:#fff;padding:1px 5px;border-radius:2px;border:1px solid #e8d9a8}\n\n.passo{background:#fff;border:1px solid #d6ddd8;border-radius:4px;overflow:hidden}\n.passo.destaque{border:2px solid #b33a2b}\n.passo .cab{display:flex;gap:14px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid #e6ebe7}\n.passo.destaque .cab{background:#fbeae7;border-bottom-color:#e6b8b0}\n.num{width:31px;height:31px;flex:none;border-radius:50%;background:#15211c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}\n.passo.destaque .num{background:#b33a2b}\n.cab .txt{flex:1;min-width:0}\n.cab h2{margin:0;font-size:17.5px;line-height:1.25;letter-spacing:-.2px}\n.cab .sub{font-size:12px;color:#6b7873;margin-top:3px}\n.cab .tempo{font-size:11.5px;font-weight:700;color:#6b7873;white-space:nowrap;font-variant-numeric:tabular-nums;background:#f2f4f1;padding:4px 9px;border-radius:2px}\n.passo.destaque .cab .tempo{background:#fff;color:#8c2a1e}\n\n.corpo{display:grid;grid-template-columns:1fr 1fr;gap:0}\n.col{padding:18px}\n.col+.col{border-left:1px solid #e6ebe7}\n@media(max-width:820px){.corpo{grid-template-columns:1fr}.col+.col{border-left:none;border-top:1px solid #e6ebe7}}\n\n.rot{font-size:10px;font-weight:700;letter-spacing:1.1px;text-transform:uppercase;color:#6b7873;margin-bottom:8px}\nol.acoes{margin:0;padding-left:19px;font-size:14px}\nol.acoes li{margin-bottom:7px}\n.fala{background:#f2f4f1;border-left:3px solid #186a4b;border-radius:0 3px 3px 0;padding:12px 15px;font-size:14.5px;font-style:italic;color:#15211c}\n.nota{font-size:12.5px;color:#6b7873;margin-top:9px}\n.porque{margin-top:13px;padding-top:12px;border-top:1px dashed #d6ddd8;font-size:13px;color:#3c4a44}\n.porque b{color:#186a4b;font-style:normal}\n\nfigure{margin:0}\nimg{display:block;width:100%;height:auto;border:1px solid #d6ddd8;border-radius:3px;background:#fff}\nfigcaption{font-size:11.5px;color:#6b7873;margin-top:7px}\n.linkurl{display:inline-block;font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:#186a4b;word-break:break-all;margin-top:6px}\n\ntable{width:100%;border-collapse:collapse;font-size:13.5px}\nth{text-align:left;padding:9px 14px;font-size:10px;letter-spacing:.9px;text-transform:uppercase;color:#6b7873;border-bottom:1px solid #cfd8d2}\ntd{padding:9px 14px;border-bottom:1px solid #eef2ef;vertical-align:top}\ntd.k{font-weight:600;white-space:nowrap}\ntd.v{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;color:#186a4b;word-break:break-all}\ntbody tr:last-child td{border-bottom:none}\n\n.qa{display:flex;flex-direction:column;gap:14px}\n.qa .q{font-weight:700;font-size:14.5px}\n.qa .a{font-size:13.5px;color:#3c4a44;margin-top:3px}\n\n.cuid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px}\n.cuid .i{background:#f7f9f7;border:1px solid #e2e8e4;border-radius:3px;padding:13px 15px}\n.cuid .i b{display:block;font-size:13.5px;margin-bottom:3px}\n.cuid .i span{font-size:12.5px;color:#3c4a44}\n.cuid code{font-family:ui-monospace,Menlo,monospace;font-size:11.5px;background:#fff;padding:1px 4px;border-radius:2px;border:1px solid #e2e8e4}\n\nfooter{font-size:12px;color:#6b7873;border-top:1px solid #d6ddd8;padding-top:16px;display:flex;flex-direction:column;gap:5px}\n`,\n\n  render() {\n    const passos = PASSOS.map((p) => `\n      <div class=\"passo ${p.destaque ? 'destaque' : ''}\">\n        <div class=\"cab\">\n          <div class=\"num\">${p.n}</div>\n          <div class=\"txt\">\n            <h2>${esc(p.tit)}</h2>\n            <div class=\"sub\">Tela: ${esc(p.tela)}</div>\n          </div>\n          <div class=\"tempo\">${esc(p.t)}</div>\n        </div>\n        <div class=\"corpo\">\n          <div class=\"col\">\n            <div class=\"rot\">O que fazer</div>\n            <ol class=\"acoes\">${p.fazer.map((f) => '<li>' + f + '</li>').join('')}</ol>\n            <div class=\"rot\" style=\"margin-top:16px\">O que dizer</div>\n            <div class=\"fala\">\"${esc(p.falar)}\"</div>\n            ${p.nota ? '<div class=\"nota\">' + p.nota + '</div>' : ''}\n            <div class=\"porque\"><b>Por que assim:</b> ${esc(p.porque)}</div>\n          </div>\n          <div class=\"col\">\n            <figure>\n              <img src=\"${esc(p.img)}\" alt=\"Tela: ${esc(p.tela)}\" loading=\"lazy\">\n              <figcaption>${p.n} · ${esc(p.tela)}<br><span class=\"linkurl\">${esc(p.url)}</span></figcaption>\n            </figure>\n            ${p.extraImg ? '<figure style=\"margin-top:14px\"><img src=\"' + esc(p.extraImg) + '\" alt=\"Formulário de papel\" loading=\"lazy\"><figcaption>' + p.extraCap + '</figcaption></figure>' : ''}\n          </div>\n        </div>\n      </div>`).join('');\n\n    const atalhos = ATALHOS.map((a) => `<tr><td class=\"k\">${esc(a[0])}</td><td class=\"v\">${esc(a[1])}</td></tr>`).join('');\n    const perguntas = PERGUNTAS.map((p) => `<div><div class=\"q\">${esc(p.q)}</div><div class=\"a\">${esc(p.a)}</div></div>`).join('');\n    const cuidados = CUIDADOS.map((c) => `<div class=\"i\"><b>${c[0]}</b><span>${c[1]}</span></div>`).join('');\n\n    return `<div class=\"wrap\"><div class=\"shell\">\n\n      <header>\n        <div class=\"eyebrow\">Sodexo · Piloto PreAction · Protótipo Data2</div>\n        <h1>Roteiro da demonstração</h1>\n        <p class=\"lede\">Sete passos, cerca de cinco minutos. Cobre as três entradas de reporte, a classificação na pirâmide, o caso em que a IA não escala e o fechamento da investigação. Cada passo traz o que fazer, o que dizer e o print de como a tela deve estar.</p>\n        <div class=\"meta\"><span class=\"tagm\">~5 min</span><span class=\"tagm\">7 passos</span><span class=\"tagm\">Chrome obrigatório</span><span class=\"tagm\">Dados fictícios</span></div>\n      </header>\n\n      <div class=\"aviso\">\n        <div class=\"t\">Antes de apertar o gravar</div>\n        <ul>\n          <li>Abra no <strong>Chrome</strong>. O ditado por voz não existe em Safari nem Firefox.</li>\n          <li>Confira que o endereço tem <code>.next.</code> no meio: <code>${esc(BASE)}</code></li>\n          <li>Autorize o microfone uma vez, com antecedência.</li>\n          <li>Deixe o arquivo do formulário de papel salvo na área de trabalho (imagem do passo 4b).</li>\n          <li>Abra duas abas: uma na tela de reporte, outra no painel. Trocar de aba é mais rápido que navegar.</li>\n        </ul>\n      </div>\n\n      ${passos}\n\n      <div class=\"card\">\n        <div class=\"hd\">Atalhos — leve a tela direto ao estado que você quer</div>\n        <div class=\"bd\" style=\"padding:0\">\n          <table>\n            <thead><tr><th>Estado</th><th>Endereço</th></tr></thead>\n            <tbody>${atalhos}</tbody>\n          </table>\n        </div>\n      </div>\n\n      <div class=\"card\">\n        <div class=\"hd\">O que ele vai perguntar</div>\n        <div class=\"bd\"><div class=\"qa\">${perguntas}</div></div>\n      </div>\n\n      <div class=\"card\">\n        <div class=\"hd\">Cuidados</div>\n        <div class=\"bd\"><div class=\"cuid\">${cuidados}</div></div>\n      </div>\n\n      <footer>\n        <div>Prints capturados da solução em 29 de agosto de 2026. Se a tela mudar, recapture — um roteiro com print velho confunde mais do que ajuda.</div>\n        <div>Os 17 reportes do painel são casos sintéticos, montados a partir de perfis públicos de risco em cozinha industrial e refeitório. Nenhum dado da Sodexo foi usado.</div>\n      </footer>\n\n    </div></div>`;\n  }\n};","at":"2026-08-29T01:46:11.341Z"}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a9238d3c028f6518567da8a","component":"data2-core-primitives@Artboard","system":"69fe34b018c813c5be7bddd9","displayName":"PreAction — Roteiro da Demo","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"PreAction — Roteiro da Demo"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1100,"height":1600}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"vxoPscTCxv2-qeEmlGtiW","deleteMetadata":{}},{"_id":"fb6b5ca6db0a277d2cfc93a2","parent":"6a9238d3c028f6518567da8a","component":"people-le-moura@preaction-roteiro","system":"69fe34b018c813c5be7bddd9","displayName":"Roteiro da Demo","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1100,"height":1600}}}},"reference":"QxtJiafgrsh4w4WYZ2TRm","deleteMetadata":{}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a92392b2c78bf972cef6730","displayName":"PreAction — Roteiro da Demo (interno)","reference":"XT82WrwNDBCByLm4zMoPR","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"roteiro-sst"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"vxoPscTCxv2-qeEmlGtiW"}}},"system":"69fe34b018c813c5be7bddd9","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}