chore(automate): include workspace in automate mixpanel events (#3601)

* chore(automate): include workspace in automate mixpanel events

* chore(automate): repair gql

* chore(automate): fix type
This commit is contained in:
Chuck Driesler
2024-12-02 18:15:34 +00:00
committed by GitHub
parent bde5431022
commit 67b785a09a
9 changed files with 47 additions and 34 deletions
@@ -112,7 +112,9 @@ const onDetailsSubmit = handleDetailsSubmit(async (values) => {
mixpanel.track('Automate Function Created', {
functionId: res.id,
templateId: selectedTemplate.value.id,
name: values.name
name: values.name,
/* eslint-disable-next-line camelcase */
workspace_id: props.workspaceId
})
createdFunction.value = res
step.value++
@@ -142,6 +142,7 @@ const emit = defineEmits<{
const props = defineProps<{
projectId: string
workspaceId?: string
automationId: string
revisionFn: MaybeNullOrUndefined<AutomationRevisionFunction>
revision: MaybeNullOrUndefined<AutomationRevision>
@@ -258,7 +259,9 @@ const onSave = async () => {
projectId: props.projectId,
functionId: fId,
functionReleaseId: rId,
modelId: model.id
modelId: model.id,
/* eslint-disable-next-line camelcase */
workspace_id: props.workspaceId
})
}
} finally {
@@ -18,6 +18,7 @@
<ProjectPageAutomationFunctionSettingsDialog
v-model:open="dialogOpen"
:project-id="projectId"
:workspace-id="workspaceId"
:automation-id="automation.id"
:revision-fn="dialogFunction"
:revision="automation.currentRevision"
@@ -64,6 +65,7 @@ graphql(`
const props = defineProps<{
projectId: string
workspaceId?: string
automation: ProjectPageAutomationFunctions_AutomationFragment
isEditable: boolean
}>()
@@ -70,6 +70,7 @@ graphql(`
fragment ProjectPageAutomationHeader_Project on Project {
id
role
workspaceId
...ProjectPageModelsCardProject
}
`)
@@ -148,7 +149,9 @@ const enabled = computed({
automationId: res.id,
automationName: res.name,
projectId: props.project.id,
enabled: res.enabled
enabled: res.enabled,
/* eslint-disable-next-line camelcase */
workspace_id: props.project.workspaceId
})
}
}
@@ -88,7 +88,6 @@ graphql(`
fragment ProjectsAddDialog_Workspace on Workspace {
id
...ProjectsWorkspaceSelect_Workspace
...ProjectsNewWorkspace_Workspace
}
`)
@@ -63,7 +63,7 @@ const documents = {
"\n fragment ProjectPageAutomationFunctionSettingsDialog_AutomationRevision on AutomationRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n type\n model {\n id\n ...CommonModelSelectorModel\n }\n }\n }\n }\n": types.ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFragmentDoc,
"\n fragment ProjectPageAutomationFunctions_Automation on Automation {\n id\n currentRevision {\n id\n ...ProjectPageAutomationFunctionSettingsDialog_AutomationRevision\n functions {\n release {\n id\n function {\n id\n ...AutomationsFunctionsCard_AutomateFunction\n releases(limit: 1) {\n items {\n id\n }\n }\n }\n }\n ...ProjectPageAutomationFunctionSettingsDialog_AutomationRevisionFunction\n }\n }\n }\n": types.ProjectPageAutomationFunctions_AutomationFragmentDoc,
"\n fragment ProjectPageAutomationHeader_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n currentRevision {\n id\n triggerDefinitions {\n ... on VersionCreatedTriggerDefinition {\n model {\n ...ProjectPageLatestItemsModelItem\n }\n }\n }\n }\n }\n": types.ProjectPageAutomationHeader_AutomationFragmentDoc,
"\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n ...ProjectPageModelsCardProject\n }\n": types.ProjectPageAutomationHeader_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n workspaceId\n ...ProjectPageModelsCardProject\n }\n": types.ProjectPageAutomationHeader_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationModels_Project on Project {\n id\n ...ProjectPageModelsCardProject\n }\n": types.ProjectPageAutomationModels_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationRuns_Automation on Automation {\n id\n name\n enabled\n isTestAutomation\n runs(limit: 10) {\n items {\n ...AutomationRunDetails\n }\n totalCount\n cursor\n }\n }\n": types.ProjectPageAutomationRuns_AutomationFragmentDoc,
"\n fragment ProjectPageAutomationsEmptyState_Query on Query {\n automateFunctions(limit: 9) {\n items {\n ...AutomationsFunctionsCard_AutomateFunction\n ...AutomateAutomationCreateDialog_AutomateFunction\n }\n }\n }\n": types.ProjectPageAutomationsEmptyState_QueryFragmentDoc,
@@ -89,7 +89,7 @@ const documents = {
"\n fragment ProjectPageSettingsGeneralBlockProjectInfo_Project on Project {\n id\n role\n name\n description\n }\n": types.ProjectPageSettingsGeneralBlockProjectInfo_ProjectFragmentDoc,
"\n fragment ProjectPageTeamDialog on Project {\n id\n name\n role\n allowPublicComments\n visibility\n team {\n id\n role\n user {\n ...LimitedUserAvatar\n role\n }\n }\n invitedTeam {\n id\n title\n inviteId\n role\n user {\n ...LimitedUserAvatar\n role\n }\n }\n ...ProjectsPageTeamDialogManagePermissions_Project\n }\n": types.ProjectPageTeamDialogFragmentDoc,
"\n fragment ProjectsPageTeamDialogManagePermissions_Project on Project {\n id\n visibility\n role\n }\n": types.ProjectsPageTeamDialogManagePermissions_ProjectFragmentDoc,
"\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n ...ProjectsNewWorkspace_Workspace\n }\n": types.ProjectsAddDialog_WorkspaceFragmentDoc,
"\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n }\n": types.ProjectsAddDialog_WorkspaceFragmentDoc,
"\n fragment ProjectsAddDialog_User on User {\n workspaces {\n items {\n ...ProjectsAddDialog_Workspace\n }\n }\n }\n": types.ProjectsAddDialog_UserFragmentDoc,
"\n subscription OnUserProjectsUpdate {\n userProjectsUpdated {\n type\n id\n project {\n ...ProjectDashboardItem\n }\n }\n }\n ": types.OnUserProjectsUpdateDocument,
"\n fragment ProjectsDashboardFilled on ProjectCollection {\n items {\n ...ProjectDashboardItem\n }\n }\n": types.ProjectsDashboardFilledFragmentDoc,
@@ -98,7 +98,6 @@ const documents = {
"\n fragment ProjectsMoveToWorkspaceDialog_Workspace on Workspace {\n id\n role\n name\n defaultLogoIndex\n logo\n }\n": types.ProjectsMoveToWorkspaceDialog_WorkspaceFragmentDoc,
"\n fragment ProjectsMoveToWorkspaceDialog_User on User {\n workspaces {\n items {\n ...ProjectsMoveToWorkspaceDialog_Workspace\n }\n }\n }\n": types.ProjectsMoveToWorkspaceDialog_UserFragmentDoc,
"\n fragment ProjectsMoveToWorkspaceDialog_Project on Project {\n id\n name\n modelCount: models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n }\n": types.ProjectsMoveToWorkspaceDialog_ProjectFragmentDoc,
"\n fragment ProjectsNewWorkspace_Workspace on Workspace {\n id\n name\n defaultLogoIndex\n logo\n description\n }\n": types.ProjectsNewWorkspace_WorkspaceFragmentDoc,
"\n fragment ProjectsWorkspaceSelect_Workspace on Workspace {\n id\n role\n name\n defaultLogoIndex\n logo\n }\n": types.ProjectsWorkspaceSelect_WorkspaceFragmentDoc,
"\n fragment ProjectsInviteBanner on PendingStreamCollaborator {\n id\n invitedBy {\n ...LimitedUserAvatar\n }\n projectId\n projectName\n token\n user {\n id\n }\n }\n": types.ProjectsInviteBannerFragmentDoc,
"\n fragment SettingsDialog_Workspace on Workspace {\n ...WorkspaceAvatar_Workspace\n ...SettingsMenu_Workspace\n id\n slug\n role\n name\n plan {\n status\n }\n }\n": types.SettingsDialog_WorkspaceFragmentDoc,
@@ -367,7 +366,7 @@ const documents = {
"\n query AutomateFunctionsPage($search: String, $cursor: String = null) {\n ...AutomateFunctionsPageItems_Query\n ...AutomateFunctionsPageHeader_Query\n }\n": types.AutomateFunctionsPageDocument,
"\n fragment ProjectPageProject on Project {\n id\n createdAt\n modelCount: models(limit: 0) {\n totalCount\n }\n commentThreadCount: commentThreads(limit: 0) {\n totalCount\n }\n workspace {\n id\n }\n ...ProjectPageTeamInternals_Project\n ...ProjectPageProjectHeader\n ...ProjectPageTeamDialog\n ...ProjectsMoveToWorkspaceDialog_Project\n }\n": types.ProjectPageProjectFragmentDoc,
"\n fragment ProjectPageAutomationPage_Automation on Automation {\n id\n ...ProjectPageAutomationHeader_Automation\n ...ProjectPageAutomationFunctions_Automation\n ...ProjectPageAutomationRuns_Automation\n }\n": types.ProjectPageAutomationPage_AutomationFragmentDoc,
"\n fragment ProjectPageAutomationPage_Project on Project {\n id\n ...ProjectPageAutomationHeader_Project\n }\n": types.ProjectPageAutomationPage_ProjectFragmentDoc,
"\n fragment ProjectPageAutomationPage_Project on Project {\n id\n workspaceId\n ...ProjectPageAutomationHeader_Project\n }\n": types.ProjectPageAutomationPage_ProjectFragmentDoc,
"\n fragment ProjectPageSettingsTab_Project on Project {\n id\n role\n }\n": types.ProjectPageSettingsTab_ProjectFragmentDoc,
};
@@ -584,7 +583,7 @@ export function graphql(source: "\n fragment ProjectPageAutomationHeader_Automa
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n ...ProjectPageModelsCardProject\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n ...ProjectPageModelsCardProject\n }\n"];
export function graphql(source: "\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n workspaceId\n ...ProjectPageModelsCardProject\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationHeader_Project on Project {\n id\n role\n workspaceId\n ...ProjectPageModelsCardProject\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -688,7 +687,7 @@ export function graphql(source: "\n fragment ProjectsPageTeamDialogManagePermis
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n ...ProjectsNewWorkspace_Workspace\n }\n"): (typeof documents)["\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n ...ProjectsNewWorkspace_Workspace\n }\n"];
export function graphql(source: "\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n }\n"): (typeof documents)["\n fragment ProjectsAddDialog_Workspace on Workspace {\n id\n ...ProjectsWorkspaceSelect_Workspace\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -721,10 +720,6 @@ export function graphql(source: "\n fragment ProjectsMoveToWorkspaceDialog_User
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectsMoveToWorkspaceDialog_Project on Project {\n id\n name\n modelCount: models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n }\n"): (typeof documents)["\n fragment ProjectsMoveToWorkspaceDialog_Project on Project {\n id\n name\n modelCount: models(limit: 0) {\n totalCount\n }\n versions(limit: 0) {\n totalCount\n }\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectsNewWorkspace_Workspace on Workspace {\n id\n name\n defaultLogoIndex\n logo\n description\n }\n"): (typeof documents)["\n fragment ProjectsNewWorkspace_Workspace on Workspace {\n id\n name\n defaultLogoIndex\n logo\n description\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
@@ -1800,7 +1795,7 @@ export function graphql(source: "\n fragment ProjectPageAutomationPage_Automati
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
export function graphql(source: "\n fragment ProjectPageAutomationPage_Project on Project {\n id\n ...ProjectPageAutomationHeader_Project\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationPage_Project on Project {\n id\n ...ProjectPageAutomationHeader_Project\n }\n"];
export function graphql(source: "\n fragment ProjectPageAutomationPage_Project on Project {\n id\n workspaceId\n ...ProjectPageAutomationHeader_Project\n }\n"): (typeof documents)["\n fragment ProjectPageAutomationPage_Project on Project {\n id\n workspaceId\n ...ProjectPageAutomationHeader_Project\n }\n"];
/**
* The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients.
*/
File diff suppressed because one or more lines are too long
@@ -12,6 +12,7 @@
>
<ProjectPageAutomationFunctions
:automation="automation"
:workspace-id="workspaceId"
:project-id="projectId"
:is-editable="isEditable"
/>
@@ -46,6 +47,7 @@ graphql(`
graphql(`
fragment ProjectPageAutomationPage_Project on Project {
id
workspaceId
...ProjectPageAutomationHeader_Project
}
`)
@@ -67,6 +69,7 @@ const { result, loading } = useQuery(
)
const automation = computed(() => result.value?.project.automation || null)
const project = computed(() => result.value?.project)
const workspaceId = computed(() => project.value?.workspaceId ?? undefined)
const isEditable = computed(() => {
const allowedRoles: string[] = [Roles.Stream.Owner]
return allowedRoles.includes(result.value?.project.role ?? '')
+13 -4
View File
@@ -57,6 +57,7 @@ import {
} from '@/modules/automate/helpers/types'
import { isFinished } from '@/modules/automate/domain/logic'
import { mixpanel } from '@/modules/shared/utils/mixpanel'
import { getProjectFactory } from '@/modules/core/repositories/projects'
const { FF_AUTOMATE_MODULE_ENABLED } = getFeatureFlags()
let quitListeners: Optional<() => void> = undefined
@@ -255,10 +256,11 @@ const initializeEventListeners = () => {
AutomateRunsEmitter.listen(
AutomateRunsEvents.StatusUpdated,
async ({ run, functionRun, automationId, projectId }) => {
const projectDb = await getProjectDbClient({ projectId })
if (!isFinished(run.status)) return
const projectDb = await getProjectDbClient({ projectId })
const project = await getProjectFactory({ db: projectDb })({ projectId })
const automationWithRevision = await getFullAutomationRevisionMetadataFactory({
db: projectDb
})(run.automationRevisionId)
@@ -293,7 +295,9 @@ const initializeEventListeners = () => {
functionRunId: functionRun.id,
status: functionRun.status,
durationInSeconds: functionRun.elapsed / 1000,
durationInMilliseconds: functionRun.elapsed
durationInMilliseconds: functionRun.elapsed,
/* eslint-disable-next-line camelcase */
workspace_id: project?.workspaceId
})
}
),
@@ -308,6 +312,9 @@ const initializeEventListeners = () => {
return
}
const projectDb = await getProjectDbClient({ projectId: manifest.projectId })
const project = await getProjectFactory({ db: projectDb })({
projectId: manifest.projectId
})
// all triggers, that are automatic result of an action are in a need to be tracked
switch (source) {
@@ -327,7 +334,9 @@ const initializeEventListeners = () => {
automationName: automation.name,
automationRunId: automationRun.id,
projectId: automation.projectId,
source
source,
/* eslint-disable-next-line camelcase */
workspace_id: project?.workspaceId
})
break
}