Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: LBAC-1875 import des fiches rome V4 #1194

Merged
merged 92 commits into from
May 21, 2024
Merged
Show file tree
Hide file tree
Changes from 12 commits
Commits
Show all changes
92 commits
Select commit Hold shift + click to select a range
b2f6ef2
feat: un peu de renommage
alanlr Apr 22, 2024
1db98f5
feat: encore du renommage
alanlr Apr 22, 2024
7732a0a
feat: typage et model romeV4
alanlr Apr 23, 2024
9635d7a
feat: nouvelles fonctions d'accès rome V4
alanlr Apr 23, 2024
6d39b7b
feat: nouveau job d'import des fiches métiers V4
alanlr Apr 23, 2024
3ff7bf7
fix: écrasement
alanlr Apr 23, 2024
46cd2ae
feat: bascule sur api METIER
alanlr Apr 23, 2024
29dedc1
feat: typage rome V4
alanlr Apr 23, 2024
3735259
feat: import Rome V4 ok
alanlr Apr 23, 2024
d5ddb8c
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr Apr 23, 2024
7cc775b
feat: normalisation
alanlr Apr 23, 2024
b494a1f
fix: correction du path suite à bad merge + restriction du scope retour
alanlr Apr 24, 2024
5b83076
feat: utilisation de zod pour le typage et naming en referentielRome
alanlr Apr 24, 2024
de2dce6
feat: rename en referentielrome
alanlr Apr 24, 2024
0a49936
feat: suppression ancien import
alanlr Apr 24, 2024
4a72142
feat: suppression ancienne version
alanlr Apr 24, 2024
89d91e6
feat: bascule sur nouvelle version
alanlr Apr 24, 2024
8faa98c
feat: getJobWithRomeDetail
alanlr Apr 24, 2024
0a551cc
feat: nettoyage collection recruiters.jobs
alanlr Apr 24, 2024
b37bacc
feat: suppression fichemetierromev3
alanlr Apr 24, 2024
eb6c75d
feat: récupération from aggregate
alanlr Apr 25, 2024
bf55ef1
feat: affichage formulaire dépôt ok
alanlr Apr 25, 2024
99ad52e
feat: suppression enregistrement de rome_detail
alanlr Apr 25, 2024
62f37ea
feat: suppression de rome_detail dans la db recruiters.jobs
alanlr Apr 25, 2024
0072846
feat: nettoyage
alanlr Apr 25, 2024
27e30ae
feat: création / édition offre from form ok
alanlr Apr 25, 2024
76ba0fc
feat: maj collection jobs
alanlr Apr 25, 2024
0084cff
feat: plus nécessaire
alanlr Apr 25, 2024
c0c8542
feat: cleaning
alanlr Apr 25, 2024
ad1c690
feat: cleaning
alanlr Apr 25, 2024
9626878
feat: factorisation stage aggrégation + ajout getOffreWithRomeDetail
alanlr Apr 25, 2024
2e5c356
feat: récupération liste lbajobs et lbajob avec rome_detail ou pas
alanlr Apr 25, 2024
def3833
feat: reminder
alanlr Apr 26, 2024
3297bd0
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr Apr 29, 2024
beef9bd
feat: modèle from xml
alanlr Apr 29, 2024
ee3b65a
fix: typo
alanlr Apr 29, 2024
1293073
feat: bascule sur referentielRome
alanlr Apr 29, 2024
59c8ea1
feat: mise de côté de importFichesRomeV4
alanlr Apr 29, 2024
6ae96f9
feat: import OK
alanlr Apr 29, 2024
0f00d62
feat: index sur code_rome
alanlr Apr 29, 2024
fc8b6fa
feat: remontée lbajob item ok
alanlr Apr 29, 2024
5a93de0
feat: merge main
alanlr Apr 30, 2024
a735a6b
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr Apr 30, 2024
5044724
feat: récupération des data
alanlr Apr 30, 2024
53077c4
feat: n'existe pas dans le nouveau fichier
alanlr Apr 30, 2024
e7eb010
feat: éléments n'existant plus
alanlr Apr 30, 2024
d7c2505
feat: select 0 sur le _id
alanlr Apr 30, 2024
2848444
feat: refacto extraction presque terminé
alanlr Apr 30, 2024
26a7088
feat: import avec cas particuliers OK
alanlr May 2, 2024
e7ce6bf
fix: typo et réduction path inutile
alanlr May 2, 2024
a769e95
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 2, 2024
adda544
Merge branch 'feat/LBAC-1875-description-offre-from-rome' of github.c…
alanlr May 2, 2024
10a4ddd
feat: prise en compte pas encore de job
alanlr May 2, 2024
2fe3925
feat: qualités souhaitées et acces_metier
alanlr May 2, 2024
c305f4a
feat: competences acquises
alanlr May 2, 2024
febdde5
feat: fiche emploi ok
alanlr May 2, 2024
1802350
feat: rename acces
alanlr May 2, 2024
188c1b8
feat: récupération modifs ticket 1764
alanlr May 2, 2024
940fa89
feat: progress
alanlr May 2, 2024
d156f30
feat: progress
alanlr May 2, 2024
9ffbd5d
feat: listes OK
alanlr May 2, 2024
8f7724c
feat: wording recherche google
alanlr May 2, 2024
be2fda7
feat: modiifs cosmétiques
alanlr May 2, 2024
6b2a90a
feat: gitignore
alanlr May 3, 2024
ab00d43
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 3, 2024
1facfca
fix: typing
alanlr May 3, 2024
704b090
Merge branch 'feat/LBAC-1875-description-offre-from-rome' of github.c…
alanlr May 3, 2024
c8ec2ab
fix: typing
alanlr May 3, 2024
f498514
fix: typing
alanlr May 3, 2024
13b0c67
feat: openapi
alanlr May 3, 2024
696bbc0
feat: ajustements style
alanlr May 6, 2024
dbcf83a
fix: path et noms d'attributs
alanlr May 6, 2024
3cd1e7a
fix: nom attribut
alanlr May 6, 2024
d86010b
fix: rome details oubliés
alanlr May 6, 2024
54b2c81
feat: remise en place omit rome_detail
alanlr May 6, 2024
cce9ec4
feat: utilisation composant RomeDetail
alanlr May 6, 2024
60a71eb
feat: cleaning
alanlr May 6, 2024
a25e0d5
feat: accordéons auto refermants
alanlr May 6, 2024
bb67dc9
feat: accordion auto refermant sur description
alanlr May 6, 2024
3778874
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 6, 2024
bb9cd0d
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 6, 2024
7717e31
feat: style listes côté candidat
alanlr May 7, 2024
1b46536
feat: bloc didask sans le lien
alanlr May 7, 2024
74b2e1b
feat: bloc didask finito
alanlr May 7, 2024
c25ebf6
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 7, 2024
0c4d8a3
feat: scrolling au bon niveau
alanlr May 7, 2024
fb516a3
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 7, 2024
4e19929
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 14, 2024
5dc014a
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 17, 2024
5833f70
feat: suppression fiche rome v3
alanlr May 17, 2024
5318635
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 17, 2024
b92b81f
Merge branch 'main' into feat/LBAC-1875-description-offre-from-rome
alanlr May 21, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions server/src/commands.ts
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,9 @@ program

// Temporaire, one shot à executer en recette et prod
program.command("import:rome").description("import référentiel fiche metier rome v3").option("-q, --queued", "Run job asynchronously", false).action(createJobAction("import:rome"))

alanlr marked this conversation as resolved.
Show resolved Hide resolved
program.command("import:rome:v4").description("import fiches métiers rome v4").option("-q, --queued", "Run job asynchronously", false).action(createJobAction("import:rome:v4"))

// Temporaire, one shot à executer en recette et prod
program
.command("migration:remove-version-key-from-all-collections")
Expand Down
56 changes: 51 additions & 5 deletions server/src/common/apis/FranceTravail.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import FormData from "form-data"

import config from "@/config"
import { FTResponse } from "@/services/ftjob.service.types"
import { IAppelattionDetailsFromAPI, IFTAPIToken, IRomeDetailsFromAPI } from "@/services/rome.service.types"
import { IAppelattionDetailsFromAPI, IFTAPIToken, IRomeDetailsFromAPI, IRomeV4DetailsFromAPI, IRomeV4Short } from "@/services/rome.service.types"

import dayjs from "../../services/dayjs.service"
import { sentryCaptureException } from "../utils/sentryUtils"
Expand All @@ -14,14 +14,21 @@ import getApiClient from "./client"

const axiosClient = getApiClient({})

const ROME_ACESS = querystring.stringify({
const ROME_ACCESS = querystring.stringify({
grant_type: "client_credentials",
client_id: config.esdClientId,
client_secret: config.esdClientSecret,
scope: `application_${config.esdClientId} api_romev1 nomenclatureRome`,
})

const OFFRES_ACESS = querystring.stringify({
const ROME_V4_ACCESS = querystring.stringify({
grant_type: "client_credentials",
client_id: config.esdClientId,
client_secret: config.esdClientSecret,
scope: `application_${config.esdClientId} api_rome-metiersv1 nomenclatureRome`,
})

const OFFRES_ACCESS = querystring.stringify({
grant_type: "client_credentials",
client_id: config.esdClientId,
client_secret: config.esdClientSecret,
Expand All @@ -40,18 +47,25 @@ let tokenRomeFT: IFTAPIToken = {
token_type: "",
expires_in: 0,
}
let tokenRomeV4FT: IFTAPIToken = {
access_token: "",
scope: "",
token_type: "",
expires_in: 0,
}

const isTokenValid = (token: IFTAPIToken): any => token?.expire?.isAfter(dayjs())

const getFtAccessToken = async (access: "OFFRE" | "ROME", token): Promise<IFTAPIToken> => {
const getFtAccessToken = async (access: "OFFRE" | "ROME" | "ROMEV4", token): Promise<IFTAPIToken> => {
const isValid = isTokenValid(token)

if (isValid) {
return token
}

try {
const response = await axiosClient.post(`${config.franceTravailIO.authUrl}?realm=%2Fpartenaire`, access === "OFFRE" ? OFFRES_ACESS : ROME_ACESS, {
const tokenParams = access === "OFFRE" ? OFFRES_ACCESS : access === "ROME" ? ROME_ACCESS : ROME_V4_ACCESS
const response = await axiosClient.post(`${config.franceTravailIO.authUrl}?realm=%2Fpartenaire`, tokenParams, {
headers: { "Content-Type": "application/x-www-form-urlencoded" },
timeout: 3000,
})
Expand Down Expand Up @@ -191,6 +205,38 @@ export const getAppellationDetailsFromAPI = async (appellationCode: string): Pro
}
}

export const getRomeV4DetailsFromFT = async (romeCode: string): Promise<IRomeV4DetailsFromAPI | null | undefined> => {
tokenRomeV4FT = await getFtAccessToken("ROMEV4", tokenRomeV4FT)

try {
const { data } = await axiosClient.get<IRomeV4DetailsFromAPI>(`${config.franceTravailIO.baseUrl}/v1/metiers/metier/${romeCode}`, {
headers: {
Authorization: `Bearer ${tokenRomeV4FT.access_token}`,
},
})

return data
} catch (error: any) {
sentryCaptureException(error, { extra: { responseData: error.response?.data } })
return null
}
}

export const getRomeV4ListFromFT = async (): Promise<IRomeV4Short[] | null | undefined> => {
tokenRomeV4FT = await getFtAccessToken("ROMEV4", tokenRomeV4FT)
try {
const { data } = await axiosClient.get<IRomeV4Short[]>(`${config.franceTravailIO.baseUrl}/rome-metiers/v1/metiers/metier?champs=code`, {
headers: {
Authorization: `Bearer ${tokenRomeV4FT.access_token}`,
},
})
return data
} catch (error: any) {
sentryCaptureException(error, { extra: { responseData: error.response?.data } })
return null
}
}

/**
* Sends CSV file to France Travail API through a "form data".
*/
Expand Down
2 changes: 2 additions & 0 deletions server/src/common/model/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import eligibleTrainingsForAppointmentHistory from "./schema/eligibleTrainingsFo
import EmailBlacklist from "./schema/emailBlacklist/emailBlacklist.schema"
import Etablissement from "./schema/etablissements/etablissement.schema"
import FicheMetierRomeV3 from "./schema/ficheRomeV3/ficheRomeV3"
import FicheMetierRomeV4 from "./schema/ficheRomeV4/ficheRomeV4"
import FormationCatalogue from "./schema/formationCatalogue/formationCatalogue.schema"
import GeoLocation from "./schema/geolocation/geolocation.schema"
import InternalJobs from "./schema/internalJobs/internalJobs.schema"
Expand Down Expand Up @@ -98,6 +99,7 @@ export {
EmailBlacklist,
Etablissement,
FicheMetierRomeV3,
FicheMetierRomeV4,
FormationCatalogue,
GeoLocation,
InternalJobs,
Expand Down
23 changes: 23 additions & 0 deletions server/src/common/model/schema/ficheRomeV4/ficheRomeV4.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { IRomeV4DetailsFromAPI } from "../../../../services/rome.service.types"
import { Schema, model } from "../../../mongodb"

interface IFicheMeterRomeV4 {
code: string
fiche_metier: IRomeV4DetailsFromAPI
}

export const ficheMetierRomeV4Schema = new Schema<IFicheMeterRomeV4>({
code: {
type: String,
description: "Code Rome",
},
fiche_metier: {
type: Object,
description: "Fiche metier Rome V4",
},
})

ficheMetierRomeV4Schema.index({ code: 1 })
ficheMetierRomeV4Schema.index({ "fiche_metier.appellations.code": 1 })

export default model<IFicheMeterRomeV4>("ficheMetierRomeV4", ficheMetierRomeV4Schema)
3 changes: 3 additions & 0 deletions server/src/jobs/jobs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ import { removeDuplicateEtablissements } from "./rdv/removeDuplicateEtablissemen
import { syncEtablissementDates } from "./rdv/syncEtablissementDates"
import { syncEtablissementsAndFormations } from "./rdv/syncEtablissementsAndFormations"
import { importFicheMetierRomeV3 } from "./seed/ficheMetierRomev3/ficherMetierRomev3"
import { importFichesMetiersRomeV4 } from "./seed/ficheMetierRomev4/ficheMetierRomev4"
import updateBrevoBlockedEmails from "./updateBrevoBlockedEmails/updateBrevoBlockedEmails"
import { controlApplications } from "./verifications/controlApplications"
import { controlAppointments } from "./verifications/controlAppointments"
Expand Down Expand Up @@ -250,6 +251,8 @@ export async function runJob(job: IInternalJobsCronTask | IInternalJobsSimple):
return updateAddressDetailOnRecruitersCollection()
case "import:rome":
return importFicheMetierRomeV3()
case "import:rome:v4":
return importFichesMetiersRomeV4()
case "migration:remove-version-key-from-all-collections": // Temporaire, doit tourner en recette et production
return removeVersionKeyFromAllCollections()
case "migration:remove-delegated-from-jobs": // Temporaire, doit tourner en recette et production
Expand Down
27 changes: 27 additions & 0 deletions server/src/jobs/seed/ficheMetierRomev4/ficheMetierRomev4.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
import { getRomeV4DetailsFromFT, getRomeV4ListFromFT } from "@/common/apis/FranceTravail"
import { FicheMetierRomeV4 } from "@/common/model"

import { logger } from "../../../common/logger"
import { asyncForEach, delay } from "../../../common/utils/asyncUtils"

export const importFichesMetiersRomeV4 = async () => {
const romeList = await getRomeV4ListFromFT()

if (romeList && romeList.length > 500) {
logger.info(`${romeList.length} fiches métiers trouvées`)

logger.info("Suppression des fiches métiers V4 courantes")
await FicheMetierRomeV4.deleteMany({})

logger.info("Insertion des fiches métiers V4")

await asyncForEach(romeList, async (rome, index) => {
logger.info(`${index + 1}/${romeList.length} : insertion de ${rome.code}`)
const response = await getRomeV4DetailsFromFT(rome.code)
await FicheMetierRomeV4.create({ code: response?.code, fiche_metier: response })
await delay(1000)
})
} else {
logger.info("Liste des fiches métiers non trouvées ou anormalement petite. Processus interrompu.")
}
}
56 changes: 56 additions & 0 deletions server/src/services/rome.service.types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,62 @@ export interface IRomeDetailsFromAPI {
mobilitesEvolutionsAppellationsVersAppellations: any[]
}

export interface IRomeV4Short {
code: string
}

interface IRomeV4Item {
code: string
libelle: string
type?: string
categorie?: string
}

interface IRomeV4Competence {
type: string
code: string
libelle: string
codeOgr: string
riasecMajeur?: string
riasecMineur?: string
}

interface IRomeV4Appellation {
code: string
libelle: string
libelleCourt: string
classification?: string
competencesCles?: any[]
}

interface IRomeV4SecteurActivite {
code: string
libelle: string
secteurActivite: IRomeV4Item
}

export interface IRomeV4DetailsFromAPI {
obsolete: boolean
code: string
libelle: string
definition: string
accesEmploi: string
riasecMajeur: string
riasecMineur: string
codeIsco: string
domaineProfessionnel: DomaineProfessionnel
appellations: IRomeV4Appellation[]
themes: IRomeV4Item[]
centresInterets: any[]
secteursActivites: IRomeV4SecteurActivite[]
competencesMobilisees: IRomeV4Competence[]
competencesMobiliseesPrincipales: IRomeV4Competence[]
competencesMobiliseesEmergentes: IRomeV4Competence[]
divisionsNaf: IRomeV4Item[]
formacodes: IRomeV4Item[]
contextesTravail: IRomeV4Item[]
}

export interface IAppelattionDetailsFromAPI {
code: string
libelle: string
Expand Down
60 changes: 60 additions & 0 deletions shared/models/rome.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,63 @@ export const ZRomeDetail = z
.strict()
.openapi("RomeDetail")
//.deepPartial()

const ZCompetenceV4 = z
.object({
type: z.string(),
code: z.string(),
libelle: z.string(),
codeOgr: z.string(),
riasecMajeur: z.string().optional(),
riasecMineur: z.string().optional(),
})
.strict()

const ZRomeV4Item = z
.object({
code: z.string(),
libelle: z.string(),
})
.strict()

export const ZRomeV4Detail = z
.object({
obsolete: z.boolean(),
code: z.string(),
libelle: z.string(),
definition: z.string(),
accesEmploi: z.string(),
riasecMajeur: z.string(),
riasecMineur: z.string(),
codeIsco: z.string().nullish(),
particulier: z.boolean(),
domaineProfessionnel: z
.object({
code: z.string(),
libelle: z.string(),
grandDomaine: ZRomeV4Item.strict(),
})
.strict(),
appellations: z.array(
z
.object({
code: z.string(),
libelle: z.string(),
libelleCourt: z.string(),
classification: z.string().optional(),
competencesCles: z.array(z.any()).optional(),
})
.strict()
),
themes: z.array(ZRomeV4Item),
centesInterets: z.array(z.any()),
secteursActivites: z.array(z.object({ code: z.string(), libelle: z.string(), secteurActivite: z.any() }).strict()),
competencesMobilisees: z.array(ZCompetenceV4),
competencesMobiliseesPrincipales: z.array(ZCompetenceV4),
competencesMobiliseesEmergentes: z.array(ZCompetenceV4),
divisionsNaf: z.array(ZRomeV4Item),
formacodes: z.array(ZRomeV4Item),
contextesTravail: z.array(ZRomeV4Item),
})
.strict()
.openapi("RomeV4Detail")
1 change: 1 addition & 0 deletions shared/routes/rome.routes.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { z } from "../helpers/zodWithOpenApi"
import { ZMetiersEnrichis } from "../models"
import { ZRomeDetail } from "../models/rome.model"
// import { ZRomeV4Detail } from "../models/rome.model"

import { IRoutesDef } from "./common.routes"

Expand Down
2 changes: 1 addition & 1 deletion ui/components/DepotOffre/RomeDetail.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ export const RomeDetail = ({ definition, competencesDeBase, libelle, appellation
<h2>
<AccordionButton>
<Text fontWeight="700" flex="1" textAlign="left">
Description du métier
Descriptif du métier
</Text>
{isExpanded ? <Minus color="bluefrance.500" /> : <Plus color="bluefrance.500" />}
</AccordionButton>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AddIcon, MinusIcon } from "@chakra-ui/icons"
import { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box, Text } from "@chakra-ui/react"
import React from "react"

const MatchaAcces = ({ job }) => {
const LbaJobAcces = ({ job }) => {
const acces = job?.job?.romeDetails?.acces ?? null

if (!acces) return ""
Expand Down Expand Up @@ -31,4 +31,4 @@ const MatchaAcces = ({ job }) => {
)
}

export default MatchaAcces
export default LbaJobAcces
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AddIcon, MinusIcon } from "@chakra-ui/icons"
import { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box, Text } from "@chakra-ui/react"
import React from "react"

const MatchaCompetences = ({ job }) => {
const LbaJobCompetences = ({ job }) => {
const getText = () => {
const res = (
<Box pl="12px" mt={4}>
Expand Down Expand Up @@ -42,4 +42,4 @@ const MatchaCompetences = ({ job }) => {
)
}

export default MatchaCompetences
export default LbaJobCompetences
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AddIcon, MinusIcon } from "@chakra-ui/icons"
import { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box } from "@chakra-ui/react"
import DOMPurify from "isomorphic-dompurify"

const MatchaCustomDescription = ({ data, title }: { data: string; title: string }) => {
const LbaJobCustomDescription = ({ data, title }: { data: string; title: string }) => {
const sanitizedData = () => ({
__html: DOMPurify.sanitize(data),
})
Expand Down Expand Up @@ -30,4 +30,4 @@ const MatchaCustomDescription = ({ data, title }: { data: string; title: string
)
}

export default MatchaCustomDescription
export default LbaJobCustomDescription
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { AddIcon, MinusIcon } from "@chakra-ui/icons"
import { Accordion, AccordionButton, AccordionItem, AccordionPanel, Box, Text } from "@chakra-ui/react"
import React from "react"

const MatchaDescription = ({ job }) => {
const LbaJobDescription = ({ job }) => {
const getText = () => {
return (
<Box pl="12px" mt={4}>
Expand Down Expand Up @@ -40,4 +40,4 @@ const MatchaDescription = ({ job }) => {
)
}

export default MatchaDescription
export default LbaJobDescription
Loading
Loading