diff --git a/src/common/schema.ts b/src/common/schema.ts index d281d88b5..5ad8efa63 100644 --- a/src/common/schema.ts +++ b/src/common/schema.ts @@ -1095,31 +1095,32 @@ export interface components { value: number; }; Module: - | components["schemas"]["ModuleTitle"] - | components["schemas"]["ModuleDate"] - | components["schemas"]["ModuleTask"] + | components["schemas"]["ModuleACNSaver"] + | components["schemas"]["ModuleAdditionalTarget"] | components["schemas"]["ModuleAge"] - | components["schemas"]["ModuleLanguage"] - | components["schemas"]["ModuleLiteracy"] - | components["schemas"]["ModuleTarget"] - | components["schemas"]["ModuleGoal"] - | components["schemas"]["ModuleGender"] - | components["schemas"]["ModuleOutOfScope"] + | components["schemas"]["ModuleAnnualIncomeRange"] + | components["schemas"]["ModuleBank"] | components["schemas"]["ModuleBrowser"] - | components["schemas"]["ModuleTargetNote"] - | components["schemas"]["ModuleInstructionNote"] - | components["schemas"]["ModuleSetupNote"] - | components["schemas"]["ModuleTouchpoints"] - | components["schemas"]["ModuleAdditionalTarget"] + | components["schemas"]["ModuleDate"] + | components["schemas"]["ModuleElettricitySupply"] | components["schemas"]["ModuleEmployment"] + | components["schemas"]["ModuleEnvironment"] + | components["schemas"]["ModuleGasSupply"] + | components["schemas"]["ModuleGender"] + | components["schemas"]["ModuleGoal"] + | components["schemas"]["ModuleHomeInternet"] + | components["schemas"]["ModuleInstructionNote"] + | components["schemas"]["ModuleLanguage"] + | components["schemas"]["ModuleLiteracy"] | components["schemas"]["ModuleLocality"] - | components["schemas"]["ModuleBank"] - | components["schemas"]["ModuleElettricitySupply"] | components["schemas"]["ModuleMobileInternet"] - | components["schemas"]["ModuleHomeInternet"] - | components["schemas"]["ModuleGasSupply"] - | components["schemas"]["ModuleAnnualIncomeRange"] - | components["schemas"]["ModuleACNSaver"]; + | components["schemas"]["ModuleOutOfScope"] + | components["schemas"]["ModuleSetupNote"] + | components["schemas"]["ModuleTarget"] + | components["schemas"]["ModuleTargetNote"] + | components["schemas"]["ModuleTask"] + | components["schemas"]["ModuleTitle"] + | components["schemas"]["ModuleTouchpoints"]; /** ModuleAdditionalTarget */ ModuleAdditionalTarget: { output: string; @@ -1185,6 +1186,13 @@ export interface components { type: "employment"; variant: string; }; + /** ModuleEnvironment */ + ModuleEnvironment: { + output: components["schemas"]["OutputModuleEnvironment"]; + /** @enum {string} */ + type: "environment"; + variant: string; + }; /** ModuleGasSupply */ ModuleGasSupply: { output: components["schemas"]["OutputServiceProviders"]; @@ -1325,6 +1333,12 @@ export interface components { name: "firefox" | "edge" | "chrome" | "safari"; percentage: number; }[]; + /** OutputModuleEnvironment */ + OutputModuleEnvironment: { + /** @enum {string} */ + envType: "production" | "staging" | "prototype" | "other" | "app-beta"; + description?: string; + }; /** OutputModuleGender */ OutputModuleGender: { /** @enum {string} */ @@ -1981,6 +1995,7 @@ export interface components { | "ACN.INVESTITORE SOFISTICATO" | "ACN.SOCIALE COLLABORATIVO" | "ACN.CONSERVATORE PRUDENTE" + | "TRYBER.EXPERT_BUG_HUNTER" )[]; /** @enum {undefined} */ type: "acn_saver_personas"; diff --git a/src/features/api/index.ts b/src/features/api/index.ts index 5594adc37..352797128 100644 --- a/src/features/api/index.ts +++ b/src/features/api/index.ts @@ -2517,9 +2517,59 @@ export type SubcomponentTaskVideo = { title: string; url?: string; }; -export type ModuleTitle = { +export type ModuleAcnSaver = { + output: ( + | 'ACN.PRAGMATICO DIGITALE' + | 'ACN.EMERGENTE ASPIRAZIONALE' + | 'ACN.INVESTITORE SOFISTICATO' + | 'ACN.SOCIALE COLLABORATIVO' + | 'ACN.CONSERVATORE PRUDENTE' + | 'TRYBER.EXPERT_BUG_HUNTER' + )[]; + type: 'acn_saver_personas'; + variant: string; +}; +export type ModuleAdditionalTarget = { output: string; - type: 'title'; + type: 'additional_target'; + variant: string; +}; +export type OutputModuleAge = { + max: number; + min: number; + percentage: number; +}[]; +export type ModuleAge = { + output: OutputModuleAge; + type: 'age'; + variant: string; +}; +export type OutputModuleIncomeRange = { + max: number; + min: number; + percentage: number; +}[]; +export type ModuleAnnualIncomeRange = { + output: OutputModuleIncomeRange; + type: 'annual_income_range'; + variant: string; +}; +export type OutputServiceProviders = { + isOther?: number; + name: string; +}[]; +export type ModuleBank = { + output: OutputServiceProviders; + type: 'bank'; + variant: string; +}; +export type OutputModuleBrowser = { + name: 'firefox' | 'edge' | 'chrome' | 'safari'; + percentage: number; +}[]; +export type ModuleBrowser = { + output: OutputModuleBrowser; + type: 'browser'; variant: string; }; export type ModuleDate = { @@ -2529,6 +2579,110 @@ export type ModuleDate = { type: 'dates'; variant: string; }; +export type ModuleElettricitySupply = { + output: OutputServiceProviders; + type: 'elettricity_supply'; + variant: string; +}; +export type ModuleEmployment = { + /** cuf values of cuf employment */ + output: ( + | 'EMPLOYEE' + | 'FREELANCER' + | 'RETIRED' + | 'STUDENT' + | 'UNEMPLOYED' + | 'HOMEMAKER' + )[]; + type: 'employment'; + variant: string; +}; +export type OutputModuleEnvironment = { + envType: 'production' | 'staging' | 'prototype' | 'other' | 'app-beta'; + description?: string; +}; +export type ModuleEnvironment = { + output: OutputModuleEnvironment; + type: 'environment'; + variant: string; +}; +export type ModuleGasSupply = { + output: OutputServiceProviders; + type: 'gas_supply'; + variant: string; +}; +export type OutputModuleGender = { + gender: 'male' | 'female'; + percentage: number; +}[]; +export type ModuleGender = { + output: OutputModuleGender; + type: 'gender'; + variant: string; +}; +export type ModuleGoal = { + output: string; + type: 'goal'; + variant: string; +}; +export type ModuleHomeInternet = { + output: OutputServiceProviders; + type: 'home_internet'; + variant: string; +}; +export type ModuleInstructionNote = { + output: string; + type: 'instruction_note'; + variant: string; +}; +export type ModuleLanguage = { + output: string; + type: 'language'; + variant: string; +}; +export type OutputModuleLiteracy = { + level: 'beginner' | 'intermediate' | 'expert'; + percentage: number; +}[]; +export type ModuleLiteracy = { + output: OutputModuleLiteracy; + type: 'literacy'; + variant: string; +}; +export type OutputModuleLocality = { + type: string; + values: string[]; +}[]; +export type ModuleLocality = { + output: OutputModuleLocality; + type: 'locality'; + variant: string; +}; +export type ModuleMobileInternet = { + output: OutputServiceProviders; + type: 'mobile_internet'; + variant: string; +}; +export type ModuleOutOfScope = { + output: string; + type: 'out_of_scope'; + variant: string; +}; +export type ModuleSetupNote = { + output: string; + type: 'setup_note'; + variant: string; +}; +export type ModuleTarget = { + output: number; + type: 'target'; + variant: string; +}; +export type ModuleTargetNote = { + output: string; + type: 'target_note'; + variant: string; +}; export type SubcomponentTaskBug = { description?: string; id?: string; @@ -2576,76 +2730,9 @@ export type ModuleTask = { type: 'tasks'; variant: string; }; -export type OutputModuleAge = { - max: number; - min: number; - percentage: number; -}[]; -export type ModuleAge = { - output: OutputModuleAge; - type: 'age'; - variant: string; -}; -export type ModuleLanguage = { - output: string; - type: 'language'; - variant: string; -}; -export type OutputModuleLiteracy = { - level: 'beginner' | 'intermediate' | 'expert'; - percentage: number; -}[]; -export type ModuleLiteracy = { - output: OutputModuleLiteracy; - type: 'literacy'; - variant: string; -}; -export type ModuleTarget = { - output: number; - type: 'target'; - variant: string; -}; -export type ModuleGoal = { - output: string; - type: 'goal'; - variant: string; -}; -export type OutputModuleGender = { - gender: 'male' | 'female'; - percentage: number; -}[]; -export type ModuleGender = { - output: OutputModuleGender; - type: 'gender'; - variant: string; -}; -export type ModuleOutOfScope = { - output: string; - type: 'out_of_scope'; - variant: string; -}; -export type OutputModuleBrowser = { - name: 'firefox' | 'edge' | 'chrome' | 'safari'; - percentage: number; -}[]; -export type ModuleBrowser = { - output: OutputModuleBrowser; - type: 'browser'; - variant: string; -}; -export type ModuleTargetNote = { - output: string; - type: 'target_note'; - variant: string; -}; -export type ModuleInstructionNote = { - output: string; - type: 'instruction_note'; - variant: string; -}; -export type ModuleSetupNote = { +export type ModuleTitle = { output: string; - type: 'setup_note'; + type: 'title'; variant: string; }; export type OutputModuleTouchpointsAppDesktop = { @@ -2710,109 +2797,33 @@ export type ModuleTouchpoints = { type: 'touchpoints'; variant: string; }; -export type ModuleAdditionalTarget = { - output: string; - type: 'additional_target'; - variant: string; -}; -export type ModuleEmployment = { - /** cuf values of cuf employment */ - output: ( - | 'EMPLOYEE' - | 'FREELANCER' - | 'RETIRED' - | 'STUDENT' - | 'UNEMPLOYED' - | 'HOMEMAKER' - )[]; - type: 'employment'; - variant: string; -}; -export type OutputModuleLocality = { - type: string; - values: string[]; -}[]; -export type ModuleLocality = { - output: OutputModuleLocality; - type: 'locality'; - variant: string; -}; -export type OutputServiceProviders = { - isOther?: number; - name: string; -}[]; -export type ModuleBank = { - output: OutputServiceProviders; - type: 'bank'; - variant: string; -}; -export type ModuleElettricitySupply = { - output: OutputServiceProviders; - type: 'elettricity_supply'; - variant: string; -}; -export type ModuleMobileInternet = { - output: OutputServiceProviders; - type: 'mobile_internet'; - variant: string; -}; -export type ModuleHomeInternet = { - output: OutputServiceProviders; - type: 'home_internet'; - variant: string; -}; -export type ModuleGasSupply = { - output: OutputServiceProviders; - type: 'gas_supply'; - variant: string; -}; -export type OutputModuleIncomeRange = { - max: number; - min: number; - percentage: number; -}[]; -export type ModuleAnnualIncomeRange = { - output: OutputModuleIncomeRange; - type: 'annual_income_range'; - variant: string; -}; -export type ModuleAcnSaver = { - output: ( - | 'ACN.PRAGMATICO DIGITALE' - | 'ACN.EMERGENTE ASPIRAZIONALE' - | 'ACN.INVESTITORE SOFISTICATO' - | 'ACN.SOCIALE COLLABORATIVO' - | 'ACN.CONSERVATORE PRUDENTE' - )[]; - type: 'acn_saver_personas'; - variant: string; -}; export type Module = - | ModuleTitle - | ModuleDate - | ModuleTask + | ModuleAcnSaver + | ModuleAdditionalTarget | ModuleAge - | ModuleLanguage - | ModuleLiteracy - | ModuleTarget - | ModuleGoal - | ModuleGender - | ModuleOutOfScope + | ModuleAnnualIncomeRange + | ModuleBank | ModuleBrowser - | ModuleTargetNote - | ModuleInstructionNote - | ModuleSetupNote - | ModuleTouchpoints - | ModuleAdditionalTarget + | ModuleDate + | ModuleElettricitySupply | ModuleEmployment + | ModuleEnvironment + | ModuleGasSupply + | ModuleGender + | ModuleGoal + | ModuleHomeInternet + | ModuleInstructionNote + | ModuleLanguage + | ModuleLiteracy | ModuleLocality - | ModuleBank - | ModuleElettricitySupply | ModuleMobileInternet - | ModuleHomeInternet - | ModuleGasSupply - | ModuleAnnualIncomeRange - | ModuleAcnSaver; + | ModuleOutOfScope + | ModuleSetupNote + | ModuleTarget + | ModuleTargetNote + | ModuleTask + | ModuleTitle + | ModuleTouchpoints; export type Authentication = { email: string; exp?: number; diff --git a/src/locales/en/translation.json b/src/locales/en/translation.json index 2e3468f54..768c89cca 100644 --- a/src/locales/en/translation.json +++ b/src/locales/en/translation.json @@ -37,6 +37,7 @@ "__ASIDE_NAVIGATION_MODULE_AGE_SUBTITLE": "Participant age groups", "__ASIDE_NAVIGATION_MODULE_BROWSER_SUBTITLE": "Compatible browsers", "__ASIDE_NAVIGATION_MODULE_DIGITAL_LITERACY_ACCORDION_SUBTITLE": "Participant technical proficiency", + "__ASIDE_NAVIGATION_MODULE_ENVIRONMENT_SUBTITLE": "Product state", "__ASIDE_NAVIGATION_MODULE_GENDER_ACCORDION_SUBTITLE": "Participant gender criteria", "__ASIDE_NAVIGATION_MODULE_GOAL_SUBTITLE": "Activity objective", "__ASIDE_NAVIGATION_MODULE_INSTRUCTIONS_NOTE_BLOCK_SUBTITLE": " ", @@ -922,6 +923,15 @@ "__PLAN_PAGE_MODULE_EMPLOYMENT_REMOVE_TOOLTIP_BUTTON": "Delete", "__PLAN_PAGE_MODULE_EMPLOYMENT_SELECT_PLACEHOLDER": "Select professional categories", "__PLAN_PAGE_MODULE_EMPLOYMENT_TITLE": "Employment status", + "__PLAN_PAGE_MODULE_ENVIRONMENT_LABEL": "Select the product environment type", + "__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_APP_BETA": "App Beta", + "__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_OTHER": "Other", + "__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_PRODUCTION": "Production (live)", + "__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_PROTOTYPE": "Prototype", + "__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_STAGING": "Staging", + "__PLAN_PAGE_MODULE_ENVIRONMENT_REMOVE_TOOLTIP_BUTTON": "Delete environment", + "__PLAN_PAGE_MODULE_ENVIRONMENT_SELECT_PLACEHOLDER": "Select environment type", + "__PLAN_PAGE_MODULE_ENVIRONMENT_TITLE": "Environment", "__PLAN_PAGE_MODULE_GAS_LABEL": "Gas Provider", "__PLAN_PAGE_MODULE_GAS_REMOVE_TOOLTIP_BUTTON": "Delete", "__PLAN_PAGE_MODULE_GAS_TITLE": "Select participants' gas providers", @@ -1269,6 +1279,7 @@ "__PLAN_SAVE_TEMPLATE_CTA": "Save as template", "__PLAN_SETUP_NOTE_SIZE_ERROR_EMPTY": "Required: please enter a text to continue", "__PLAN_TARGET_NOTE_SIZE_ERROR_EMPTY": "Please enter a text to continue", + "__PLAN_ENVIRONMENT_ERROR_REQUIRED": "Please select an environment type", "__PLAN_TARGET_SIZE_ERROR_REQUIRED": "Please enter at least one user to include in the activity", "__PLAN_TITLE_ERROR_EMPTY": "Required: please enter a title to continue.", "__PLAN_TITLE_ERROR_MAX_LENGTH": "Character limit exceeded: Please reduce your text to 64 characters.", diff --git a/src/pages/Plan/common/constants.ts b/src/pages/Plan/common/constants.ts index 131200246..2dcde2947 100644 --- a/src/pages/Plan/common/constants.ts +++ b/src/pages/Plan/common/constants.ts @@ -20,7 +20,7 @@ export const MODULE_GROUPS: Record = { { id: 'technicalRequirements', title: '__PLAN_PAGE_GROUP_TITLE_TECHNICAL_REQUIREMENTS', - modules: ['touchpoints', 'browser'], + modules: ['touchpoints', 'environment', 'browser'], }, ], target: [ diff --git a/src/pages/Plan/modules/Factory/index.tsx b/src/pages/Plan/modules/Factory/index.tsx index a365763b9..4b025b190 100644 --- a/src/pages/Plan/modules/Factory/index.tsx +++ b/src/pages/Plan/modules/Factory/index.tsx @@ -7,6 +7,7 @@ import { BrowserModule } from './modules/Browser'; import { DatesModule } from './modules/Dates'; import { ElectricityModule } from './modules/Electricity'; import { EmploymentModule } from './modules/Employment'; +import { EnvironmentsModule } from './modules/Environment'; import { GasModule } from './modules/GasSupply'; import { GenderModule } from './modules/Gender'; import { GoalModule } from './modules/Goal'; @@ -47,6 +48,7 @@ const modules: Record< [TargetSizeModule.slug]: TargetSizeModule, [LiteracyModule.slug]: LiteracyModule, [TouchpointsModule.slug]: TouchpointsModule, + [EnvironmentsModule.slug]: EnvironmentsModule, [BankModule.slug]: BankModule, [InternetMobileModule.slug]: InternetMobileModule, [ElectricityModule.slug]: ElectricityModule, diff --git a/src/pages/Plan/modules/Factory/modules/Environment/Component.tsx b/src/pages/Plan/modules/Factory/modules/Environment/Component.tsx new file mode 100644 index 000000000..0fdc3b0af --- /dev/null +++ b/src/pages/Plan/modules/Factory/modules/Environment/Component.tsx @@ -0,0 +1,197 @@ +import { + AccordionNew, + FormField, + IconButton, + Label, + Select, + SM, + Span, + Tooltip, +} from '@appquality/unguess-design-system'; +import { useState } from 'react'; +import { Trans, useTranslation } from 'react-i18next'; +import { appTheme } from 'src/app/theme'; +import { ReactComponent as AlertIcon } from 'src/assets/icons/alert-icon.svg'; +import { ReactComponent as TrashIcon } from 'src/assets/icons/trash-stroke.svg'; +import { components } from 'src/common/schema'; +import { OutputModuleEnvironment } from 'src/features/api'; +import { useModule } from 'src/features/modules/useModule'; +import { useModuleConfiguration } from 'src/features/modules/useModuleConfiguration'; +import { useValidation } from 'src/features/modules/useModuleValidation'; +import useWindowSize from 'src/hooks/useWindowSize'; +import { DeleteModuleConfirmationModal } from 'src/pages/Plan/modules/modal/DeleteModuleConfirmationModal'; +import styled from 'styled-components'; +import { useIconWithValidation } from './useIcon'; + +const StyledInfoBox = styled.div` + display: flex; + align-items: center; + margin-top: ${appTheme.space.sm}; + gap: ${appTheme.space.xxs}; +`; + +type EnvType = OutputModuleEnvironment['envType']; + +const Environment = () => { + const { value, setOutput, remove } = useModule('environment'); + const { t } = useTranslation(); + const { getPlanStatus } = useModuleConfiguration(); + const [isOpenDeleteModal, setIsOpenDeleteModal] = useState(false); + const Icon = useIconWithValidation(); + const { width } = useWindowSize(); + const breakpointSm = parseInt(appTheme.breakpoints.sm, 10); + const isMobile = width < breakpointSm; + + const options: Array<{ value: EnvType; label: string }> = [ + { + value: 'production', + label: t('__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_PRODUCTION'), + }, + { + value: 'staging', + label: t('__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_STAGING'), + }, + { + value: 'prototype', + label: t('__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_PROTOTYPE'), + }, + { + value: 'app-beta', + label: t('__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_APP_BETA'), + }, + { + value: 'other', + label: t('__PLAN_PAGE_MODULE_ENVIRONMENT_OPTION_OTHER'), + }, + ]; + + const validation = ( + module: components['schemas']['Module'] & { type: 'environment' } + ) => { + let error; + if (!module.output?.envType) { + error = t('__PLAN_ENVIRONMENT_ERROR_REQUIRED'); + } + return error || true; + }; + + const { error, validate } = useValidation({ + type: 'environment', + validate: validation, + }); + + const handleChange = (item: EnvType) => { + setOutput({ envType: item }); + validate(); + }; + + const handleDelete = () => { + setIsOpenDeleteModal(true); + }; + + return ( + <> + + + + + {!isMobile && getPlanStatus() === 'draft' && ( + + + { + handleDelete(); + e.stopPropagation(); + }} + > + + + + + )} + + +
+ + + + + {error && typeof error === 'string' && ( + <> + + + {error} + + + )} + + +
+
+
+
+ {isOpenDeleteModal && ( + setIsOpenDeleteModal(false)} + onConfirm={remove} + /> + )} + + ); +}; + +export default Environment; diff --git a/src/pages/Plan/modules/Factory/modules/Environment/index.tsx b/src/pages/Plan/modules/Factory/modules/Environment/index.tsx new file mode 100644 index 000000000..536b8fc39 --- /dev/null +++ b/src/pages/Plan/modules/Factory/modules/Environment/index.tsx @@ -0,0 +1,16 @@ +import { createModuleDefinition } from '../../ModuleDefinition'; +import Component from './Component'; +import useIcon from './useIcon'; +import useSubtitle from './useSubtitle'; +import useTitle from './useTitle'; + +export const EnvironmentsModule = createModuleDefinition({ + slug: 'environment', + Component, + useTitle, + useIcon, + useSubtitle, + defaultData: { envType: 'production' }, + defaultVariant: 'default', + tab: 'setup', +}); diff --git a/src/pages/Plan/modules/Factory/modules/Environment/useIcon.tsx b/src/pages/Plan/modules/Factory/modules/Environment/useIcon.tsx new file mode 100644 index 000000000..372dffc13 --- /dev/null +++ b/src/pages/Plan/modules/Factory/modules/Environment/useIcon.tsx @@ -0,0 +1,17 @@ +import { ReactComponent as GlobeIcon } from '@zendeskgarden/svg-icons/src/16/signpost-fill.svg'; +import useIconColor from '../../useIconColor'; + +const useIcon = (withValidation: boolean = true) => { + const color = useIconColor({ + module_type: 'environment', + withValidation, + }); + + return ; +}; + +export const useIconWithValidation = () => useIcon(true); + +export const useIconWithoutValidation = () => useIcon(false); + +export default useIcon; diff --git a/src/pages/Plan/modules/Factory/modules/Environment/useSubtitle.tsx b/src/pages/Plan/modules/Factory/modules/Environment/useSubtitle.tsx new file mode 100644 index 000000000..7af32f985 --- /dev/null +++ b/src/pages/Plan/modules/Factory/modules/Environment/useSubtitle.tsx @@ -0,0 +1,8 @@ +import { useTranslation } from 'react-i18next'; + +const useSubtitle = () => { + const { t } = useTranslation(); + return t('__ASIDE_NAVIGATION_MODULE_ENVIRONMENT_SUBTITLE'); +}; + +export default useSubtitle; diff --git a/src/pages/Plan/modules/Factory/modules/Environment/useTitle.tsx b/src/pages/Plan/modules/Factory/modules/Environment/useTitle.tsx new file mode 100644 index 000000000..7f2a28424 --- /dev/null +++ b/src/pages/Plan/modules/Factory/modules/Environment/useTitle.tsx @@ -0,0 +1,8 @@ +import { useTranslation } from 'react-i18next'; + +const useTitle = () => { + const { t } = useTranslation(); + return t('__PLAN_PAGE_MODULE_ENVIRONMENT_TITLE'); +}; + +export default useTitle; diff --git a/src/pages/Plan/modules/Factory/modules/Tasks/Component/parts/modal/CreateTaskListsWithAI.tsx b/src/pages/Plan/modules/Factory/modules/Tasks/Component/parts/modal/CreateTaskListsWithAI.tsx index f2b853847..a94599797 100644 --- a/src/pages/Plan/modules/Factory/modules/Tasks/Component/parts/modal/CreateTaskListsWithAI.tsx +++ b/src/pages/Plan/modules/Factory/modules/Tasks/Component/parts/modal/CreateTaskListsWithAI.tsx @@ -34,6 +34,7 @@ const MODULES_TO_PROMPT = [ 'title', 'goal', 'out_of_scope', + 'environment', 'tasks', 'language', 'touchpoints',