feat: add langueSource to parole
This commit is contained in:
@@ -125,6 +125,23 @@
|
|||||||
"allowedTypes": [
|
"allowedTypes": [
|
||||||
"files"
|
"files"
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
"langueSource": {
|
||||||
|
"type": "enumeration",
|
||||||
|
"enum": ["ka", "fr", "en", "es", "de", "it"],
|
||||||
|
"default": "ka"
|
||||||
|
},
|
||||||
|
"sourceOriginale": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "manyToOne",
|
||||||
|
"target": "api::parole.parole",
|
||||||
|
"inversedBy": "remixes"
|
||||||
|
},
|
||||||
|
"remixes": {
|
||||||
|
"type": "relation",
|
||||||
|
"relation": "oneToMany",
|
||||||
|
"target": "api::parole.parole",
|
||||||
|
"mappedBy": "sourceOriginale"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ module.exports = createCoreService('api::parole.parole', ({strapi}) => ({
|
|||||||
const batch = await strapi.documents('api::parole.parole').findMany({
|
const batch = await strapi.documents('api::parole.parole').findMany({
|
||||||
status: 'published',
|
status: 'published',
|
||||||
populate: ['artistes', 'traductions'],
|
populate: ['artistes', 'traductions'],
|
||||||
fields: ['documentId', 'titre', 'slug', 'transcription', 'annee'],
|
fields: ['documentId', 'titre', 'slug', 'transcription', 'annee', 'langueSource'],
|
||||||
limit: pageSize,
|
limit: pageSize,
|
||||||
start,
|
start,
|
||||||
})
|
})
|
||||||
@@ -138,10 +138,13 @@ module.exports = createCoreService('api::parole.parole', ({strapi}) => ({
|
|||||||
|
|
||||||
for (const parole of paroles) {
|
for (const parole of paroles) {
|
||||||
const source = stripMarkdown(parole.transcription)
|
const source = stripMarkdown(parole.transcription)
|
||||||
|
const sourceLang = parole.langueSource || 'ka'
|
||||||
const artists = (parole.artistes || []).map(a => a.alias)
|
const artists = (parole.artistes || []).map(a => a.alias)
|
||||||
const paroleMeta = { title: parole.titre, artists }
|
const paroleMeta = { title: parole.titre, artists }
|
||||||
|
|
||||||
if (suspectFrench(source)) {
|
if (sourceLang !== 'ka') {
|
||||||
|
nonKa.push({ documentId: parole.documentId, slug: parole.slug, ...paroleMeta, suspected_lang: sourceLang })
|
||||||
|
} else if (suspectFrench(source)) {
|
||||||
nonKa.push({ documentId: parole.documentId, slug: parole.slug, ...paroleMeta, suspected_lang: 'fr' })
|
nonKa.push({ documentId: parole.documentId, slug: parole.slug, ...paroleMeta, suspected_lang: 'fr' })
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -152,25 +155,26 @@ module.exports = createCoreService('api::parole.parole', ({strapi}) => ({
|
|||||||
|
|
||||||
for (const lang of targetLangs) {
|
for (const lang of targetLangs) {
|
||||||
const { field, targetLang, userPrompt } = LANG_MAP[lang]
|
const { field, targetLang, userPrompt } = LANG_MAP[lang]
|
||||||
|
if (lang === sourceLang) continue
|
||||||
const target = stripMarkdown(parole.traductions?.[field])
|
const target = stripMarkdown(parole.traductions?.[field])
|
||||||
if (!target) continue
|
if (!target) continue
|
||||||
|
|
||||||
langCounts[lang] = (langCounts[lang] || 0) + 1
|
langCounts[lang] = (langCounts[lang] || 0) + 1
|
||||||
|
|
||||||
if (type === 'instruct') {
|
if (type === 'instruct') {
|
||||||
|
const systemPrompt = sourceLang === 'ka'
|
||||||
|
? 'Tu es un expert en langue KA (créole guadeloupéen/martiniquais). Traduis le texte KA suivant.'
|
||||||
|
: `Tu es un expert en traduction. Traduis le texte suivant (langue source : ${sourceLang}).`
|
||||||
pairs.push({
|
pairs.push({
|
||||||
messages: [
|
messages: [
|
||||||
{
|
{ role: 'system', content: systemPrompt },
|
||||||
role: 'system',
|
|
||||||
content: 'Tu es un expert en langue KA (créole guadeloupéen/martiniquais). Traduis le texte KA suivant.',
|
|
||||||
},
|
|
||||||
{ role: 'user', content: `${userPrompt} :\n\n${source}` },
|
{ role: 'user', content: `${userPrompt} :\n\n${source}` },
|
||||||
{ role: 'assistant', content: target },
|
{ role: 'assistant', content: target },
|
||||||
],
|
],
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
pairs.push({
|
pairs.push({
|
||||||
source_lang: 'ka',
|
source_lang: sourceLang,
|
||||||
target_lang: targetLang,
|
target_lang: targetLang,
|
||||||
source,
|
source,
|
||||||
target,
|
target,
|
||||||
|
|||||||
Vendored
+9
@@ -540,6 +540,10 @@ export interface ApiParoleParole extends Struct.CollectionTypeSchema {
|
|||||||
>;
|
>;
|
||||||
forceSlug: Schema.Attribute.Boolean;
|
forceSlug: Schema.Attribute.Boolean;
|
||||||
gadeEmbed: Schema.Attribute.String;
|
gadeEmbed: Schema.Attribute.String;
|
||||||
|
langueSource: Schema.Attribute.Enumeration<
|
||||||
|
['ka', 'fr', 'en', 'es', 'de', 'it']
|
||||||
|
> &
|
||||||
|
Schema.Attribute.DefaultTo<'ka'>;
|
||||||
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
locale: Schema.Attribute.String & Schema.Attribute.Private;
|
||||||
localizations: Schema.Attribute.Relation<
|
localizations: Schema.Attribute.Relation<
|
||||||
'oneToMany',
|
'oneToMany',
|
||||||
@@ -551,7 +555,12 @@ export interface ApiParoleParole extends Struct.CollectionTypeSchema {
|
|||||||
pawol: Schema.Attribute.Media<'files'>;
|
pawol: Schema.Attribute.Media<'files'>;
|
||||||
prioriteArtistes: Schema.Attribute.String;
|
prioriteArtistes: Schema.Attribute.String;
|
||||||
publishedAt: Schema.Attribute.DateTime;
|
publishedAt: Schema.Attribute.DateTime;
|
||||||
|
remixes: Schema.Attribute.Relation<'oneToMany', 'api::parole.parole'>;
|
||||||
slug: Schema.Attribute.String & Schema.Attribute.Unique;
|
slug: Schema.Attribute.String & Schema.Attribute.Unique;
|
||||||
|
sourceOriginale: Schema.Attribute.Relation<
|
||||||
|
'manyToOne',
|
||||||
|
'api::parole.parole'
|
||||||
|
>;
|
||||||
streamAudio: Schema.Attribute.Component<'store.album', true>;
|
streamAudio: Schema.Attribute.Component<'store.album', true>;
|
||||||
streamVideo: Schema.Attribute.Component<'url.liens', true>;
|
streamVideo: Schema.Attribute.Component<'url.liens', true>;
|
||||||
titre: Schema.Attribute.String & Schema.Attribute.Required;
|
titre: Schema.Attribute.String & Schema.Attribute.Required;
|
||||||
|
|||||||
Reference in New Issue
Block a user