ponch-mcp-server 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth.d.ts +100 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +175 -0
- package/dist/auth.js.map +1 -0
- package/dist/firestore.d.ts +64 -0
- package/dist/firestore.d.ts.map +1 -0
- package/dist/firestore.js +207 -0
- package/dist/firestore.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +77 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/system.d.ts +18 -0
- package/dist/prompts/system.d.ts.map +1 -0
- package/dist/prompts/system.js +232 -0
- package/dist/prompts/system.js.map +1 -0
- package/dist/schemas/index.d.ts +306 -0
- package/dist/schemas/index.d.ts.map +1 -0
- package/dist/schemas/index.js +233 -0
- package/dist/schemas/index.js.map +1 -0
- package/dist/tools/context.d.ts +10 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +128 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/core.d.ts +11 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +209 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/marketing.d.ts +16 -0
- package/dist/tools/marketing.d.ts.map +1 -0
- package/dist/tools/marketing.js +472 -0
- package/dist/tools/marketing.js.map +1 -0
- package/package.json +31 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt loader
|
|
3
|
+
*
|
|
4
|
+
* Carga el system prompt del MCP en 3 partes:
|
|
5
|
+
* PARTE 1: Identidad y rol (fija)
|
|
6
|
+
* PARTE 2: Reglas de generacion (fija) — IP de Ponch
|
|
7
|
+
* PARTE 3: Contexto del tenant (dinamica, inyectada en runtime)
|
|
8
|
+
*
|
|
9
|
+
* Basado en: docs/logica/LOGICA_MARKETING_SYSTEM_PROMPT_v1.md
|
|
10
|
+
* El prompt es INVISIBLE para el tenant — no lo puede leer ni copiar.
|
|
11
|
+
*/
|
|
12
|
+
import type { Session } from '../auth.js';
|
|
13
|
+
/**
|
|
14
|
+
* Construye el system prompt completo para una sesion.
|
|
15
|
+
* Partes 1+2 son fijas. Parte 3 se inyecta desde Firestore.
|
|
16
|
+
*/
|
|
17
|
+
export declare function buildSystemPrompt(session: Session): Promise<string>;
|
|
18
|
+
//# sourceMappingURL=system.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.d.ts","sourceRoot":"","sources":["../../src/prompts/system.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAmN1C;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CA8BzE"}
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* System Prompt loader
|
|
3
|
+
*
|
|
4
|
+
* Carga el system prompt del MCP en 3 partes:
|
|
5
|
+
* PARTE 1: Identidad y rol (fija)
|
|
6
|
+
* PARTE 2: Reglas de generacion (fija) — IP de Ponch
|
|
7
|
+
* PARTE 3: Contexto del tenant (dinamica, inyectada en runtime)
|
|
8
|
+
*
|
|
9
|
+
* Basado en: docs/logica/LOGICA_MARKETING_SYSTEM_PROMPT_v1.md
|
|
10
|
+
* El prompt es INVISIBLE para el tenant — no lo puede leer ni copiar.
|
|
11
|
+
*/
|
|
12
|
+
import { readDoc, queryByTenant } from '../firestore.js';
|
|
13
|
+
import { ESTADO_CONTENIDO, ESTADO_FOTO } from '../schemas/index.js';
|
|
14
|
+
// ═══════════════════════════════════════════════════════════
|
|
15
|
+
// PARTE 1: Identidad y rol
|
|
16
|
+
// ═══════════════════════════════════════════════════════════
|
|
17
|
+
const PARTE_1_IDENTIDAD = `
|
|
18
|
+
Eres el asistente de marketing digital de {{brand_nombre}}.
|
|
19
|
+
Tu trabajo es generar contenido de alta calidad para publicar en
|
|
20
|
+
Google Business Profile, blog de {{brand_dominio}}, e Instagram.
|
|
21
|
+
|
|
22
|
+
Tu objetivo es:
|
|
23
|
+
1. Aumentar el trafico organico del negocio
|
|
24
|
+
2. Mejorar el posicionamiento en Google y en AI (ChatGPT, Perplexity, Gemini)
|
|
25
|
+
3. Generar contenido que convierta visitantes en clientes
|
|
26
|
+
4. Mantener consistencia de marca en todas las plataformas
|
|
27
|
+
|
|
28
|
+
Operas bajo el principio: "El sistema sugiere, el usuario valida."
|
|
29
|
+
Generas contenido, el dueño aprueba o edita antes de publicar.
|
|
30
|
+
NUNCA publicas sin aprobacion.
|
|
31
|
+
|
|
32
|
+
Cuando generes contenido:
|
|
33
|
+
- Usa SOLO datos reales del negocio (productos, precios, ubicacion)
|
|
34
|
+
- NUNCA inventes productos o servicios que no existen
|
|
35
|
+
- NUNCA uses informacion de competidores como si fuera del negocio
|
|
36
|
+
- Si no tienes datos suficientes, pregunta antes de inventar
|
|
37
|
+
`;
|
|
38
|
+
// ═══════════════════════════════════════════════════════════
|
|
39
|
+
// PARTE 2: Reglas de generacion (IP de Ponch)
|
|
40
|
+
// ═══════════════════════════════════════════════════════════
|
|
41
|
+
const PARTE_2_REGLAS = `
|
|
42
|
+
## REGLAS AEO (Answer Engine Optimization)
|
|
43
|
+
|
|
44
|
+
En 2026, 55% de las busquedas de Google muestran AI Overviews.
|
|
45
|
+
TODO contenido debe estar optimizado para ser CITADO por AI.
|
|
46
|
+
|
|
47
|
+
Para BLOGS:
|
|
48
|
+
1. Cada H2 debe ser una PREGUNTA que un usuario haria
|
|
49
|
+
2. La PRIMERA ORACION de cada seccion RESPONDE directamente — esto es lo que AI cita
|
|
50
|
+
3. El 44% de las citations vienen del PRIMER 30% del texto — el intro es CRITICO
|
|
51
|
+
4. Usar LISTAS y BULLET POINTS — AI extrae listas mas facilmente
|
|
52
|
+
5. FAQ Schema al final: 3-5 preguntas, JSON-LD (Article + FAQ + Breadcrumb)
|
|
53
|
+
6. Contenido FRESCO — publicar regularmente es senal de autoridad
|
|
54
|
+
7. PROFUNDIDAD > LONGITUD: 1,500-2,000 palabras bien estructuradas
|
|
55
|
+
|
|
56
|
+
## Google Business Profile Posts
|
|
57
|
+
|
|
58
|
+
- Texto: 150-300 caracteres. SIEMPRE incluir CTA (SHOP o LEARN_MORE) con URL real
|
|
59
|
+
- Keyword local en CADA post: "floreria en [ubicacion]", "envio de [producto] en [ciudad]"
|
|
60
|
+
- Alternar tipos: STANDARD, OFFER, EVENT
|
|
61
|
+
- Publicar entre 9-11 AM hora local. Posts viven ~5 dias
|
|
62
|
+
- NUNCA posts genericos sin CTA o sin relacion al negocio
|
|
63
|
+
|
|
64
|
+
## Shopify Blog Articles
|
|
65
|
+
|
|
66
|
+
- TITULO: 50-60 chars, keyword al inicio
|
|
67
|
+
- META TITLE: 50-60 chars, keyword + ubicacion si aplica
|
|
68
|
+
- META DESCRIPTION: 150-160 chars, keyword + CTA
|
|
69
|
+
- URL HANDLE: 3-5 palabras, lowercase, hyphens
|
|
70
|
+
- CUERPO: 1,500-2,000 palabras. H2 como PREGUNTAS (AEO)
|
|
71
|
+
- 3-5 internal links a productos/colecciones REALES
|
|
72
|
+
- FAQ section al final. Structured data JSON-LD
|
|
73
|
+
- INTERNAL LINKING ES CRITICO: cada blog linkea a 2-4 productos
|
|
74
|
+
|
|
75
|
+
## Instagram Posts
|
|
76
|
+
|
|
77
|
+
- Caption: keywords en PRIMEROS 125 chars. CTA al final
|
|
78
|
+
- Hashtags: 3-5 relevantes (NO 30). Mezcla: nicho + marca + local
|
|
79
|
+
- Alt text: describir imagen con keywords. Instagram indexa alt text
|
|
80
|
+
- CAROUSEL es el formato con MAS engagement (1.92%)
|
|
81
|
+
- Feed: 4:5 portrait (1080x1350). Solo JPEG via API
|
|
82
|
+
- Content mix: 40% producto, 20% behind scenes, 20% educativo, 10% seasonal, 10% UGC
|
|
83
|
+
- Senal mas valiosa: SHARES. Mejores dias: martes/miercoles
|
|
84
|
+
|
|
85
|
+
## Review Responses
|
|
86
|
+
|
|
87
|
+
- Responder en < 24 horas
|
|
88
|
+
- POSITIVAS: nombre del reviewer, agradecer especificamente, keyword + ubicacion, invitar a volver
|
|
89
|
+
- NEGATIVAS: tono empatico, reconocer problema, solucion concreta, contacto directo
|
|
90
|
+
- NUNCA respuestas template/genericas. Google INDEXA las respuestas
|
|
91
|
+
|
|
92
|
+
## Reglas Generales
|
|
93
|
+
|
|
94
|
+
IDIOMA: respetar distribucion configurada. No traducir literal — adaptar
|
|
95
|
+
NUNCA: emojis excesivos, hashtags de precio bajo (#barato), inventar datos
|
|
96
|
+
SIEMPRE: verificar URLs existen, respetar tono de marca, incluir CTA, variar contenido
|
|
97
|
+
`;
|
|
98
|
+
// ═══════════════════════════════════════════════════════════
|
|
99
|
+
// PARTE 3: Contexto dinamico del tenant
|
|
100
|
+
// ═══════════════════════════════════════════════════════════
|
|
101
|
+
async function buildTenantContext(session) {
|
|
102
|
+
const tenantId = session.tenantId;
|
|
103
|
+
const brandId = session.brandId;
|
|
104
|
+
if (!tenantId || !brandId)
|
|
105
|
+
return '';
|
|
106
|
+
const config = await readDoc('marketing_config', tenantId);
|
|
107
|
+
if (!config)
|
|
108
|
+
return '';
|
|
109
|
+
const brands = (config.brands ?? {});
|
|
110
|
+
const brand = brands[brandId];
|
|
111
|
+
if (!brand)
|
|
112
|
+
return '';
|
|
113
|
+
// Leer datos en paralelo
|
|
114
|
+
const [fotosEditadas, contenidoReciente, productos] = await Promise.all([
|
|
115
|
+
queryByTenant(session, 'marketing_fotos', [
|
|
116
|
+
{ field: 'brandId', op: '==', value: brandId },
|
|
117
|
+
{ field: 'estado', op: '==', value: ESTADO_FOTO.EDITADA },
|
|
118
|
+
], { limit: 10 }),
|
|
119
|
+
queryByTenant(session, 'marketing_contenido', [
|
|
120
|
+
{ field: 'brandId', op: '==', value: brandId },
|
|
121
|
+
{ field: 'estado', op: '==', value: ESTADO_CONTENIDO.PUBLICADO },
|
|
122
|
+
], { limit: 10 }),
|
|
123
|
+
queryByTenant(session, 'productos', [], { limit: 50 }),
|
|
124
|
+
]);
|
|
125
|
+
const seo = brand.seoSnapshot;
|
|
126
|
+
const idiomas = brand.idiomas;
|
|
127
|
+
const frecuencia = brand.frecuencia;
|
|
128
|
+
const gbpPerfiles = (brand.gbpPerfiles ?? []);
|
|
129
|
+
let ctx = `
|
|
130
|
+
CONTEXTO DEL NEGOCIO:
|
|
131
|
+
Marca: ${brand.nombre}
|
|
132
|
+
Dominio: ${brand.dominio ?? 'sin dominio'}
|
|
133
|
+
`;
|
|
134
|
+
if (gbpPerfiles.length > 0) {
|
|
135
|
+
ctx += `Ubicacion: ${gbpPerfiles[0].direccion ?? 'no configurada'}\n`;
|
|
136
|
+
}
|
|
137
|
+
const plan = brand.plan;
|
|
138
|
+
ctx += `Tono: ${plan?.tonoMarca ?? 'profesional y cercano'}\n`;
|
|
139
|
+
if (idiomas) {
|
|
140
|
+
ctx += `Idioma principal: ${idiomas.primario ?? 'es'}\n`;
|
|
141
|
+
if (idiomas.distribucion) {
|
|
142
|
+
ctx += `Distribucion de idiomas: ${JSON.stringify(idiomas.distribucion)}\n`;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (frecuencia) {
|
|
146
|
+
ctx += `\nFRECUENCIA CONFIGURADA:\n`;
|
|
147
|
+
ctx += `GBP: ${frecuencia.gbp ?? '?'} posts/semana\n`;
|
|
148
|
+
ctx += `Blog: ${frecuencia.blog ?? '?'} articulos/mes\n`;
|
|
149
|
+
ctx += `Instagram: ${frecuencia.instagram ?? '?'} posts/semana\n`;
|
|
150
|
+
}
|
|
151
|
+
if (productos.length > 0) {
|
|
152
|
+
ctx += `\nPRODUCTOS DISPONIBLES (${productos.length}):\n`;
|
|
153
|
+
for (const p of productos.slice(0, 20)) {
|
|
154
|
+
ctx += `- ${p.nombre}${p.precio ? ` ($${p.precio})` : ''}${p.categoria ? ` [${p.categoria}]` : ''}\n`;
|
|
155
|
+
}
|
|
156
|
+
if (productos.length > 20)
|
|
157
|
+
ctx += `... y ${productos.length - 20} mas\n`;
|
|
158
|
+
}
|
|
159
|
+
if (seo) {
|
|
160
|
+
ctx += `\nSNAPSHOT SEO:\n`;
|
|
161
|
+
ctx += `Rank: #${seo.rank} | Keywords: ${seo.totalKeywords} | Trafico: ${seo.traficoOrganico}/mes\n`;
|
|
162
|
+
const topKw = (seo.topKeywords ?? []);
|
|
163
|
+
if (topKw.length > 0) {
|
|
164
|
+
ctx += `Top keywords:\n`;
|
|
165
|
+
for (const kw of topKw.slice(0, 10)) {
|
|
166
|
+
ctx += ` - "${kw.keyword}" pos:${kw.posicion} vol:${kw.volumen}\n`;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
const oportunidades = (seo.oportunidades ?? []);
|
|
170
|
+
if (oportunidades.length > 0) {
|
|
171
|
+
ctx += `Oportunidades:\n`;
|
|
172
|
+
for (const op of oportunidades.slice(0, 5)) {
|
|
173
|
+
ctx += ` - "${op.keyword}" pos:${op.posicion} vol:${op.volumen} dif:${op.dificultad}\n`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
if (fotosEditadas.length > 0) {
|
|
178
|
+
ctx += `\nFOTOS EDITADAS DISPONIBLES (${fotosEditadas.length}):\n`;
|
|
179
|
+
for (const f of fotosEditadas) {
|
|
180
|
+
ctx += `- ${f.id}: ${f.tipo ?? 'sin tipo'} | flores: ${f.flores?.join(', ') || 'n/a'}\n`;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
if (contenidoReciente.length > 0) {
|
|
184
|
+
ctx += `\nHISTORIAL RECIENTE (no repetir):\n`;
|
|
185
|
+
for (const c of contenidoReciente) {
|
|
186
|
+
ctx += `- ${c.plataforma}: "${c.keyword ?? 'sin keyword'}" (${c.publicadoAt ?? '?'})\n`;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
if (plan) {
|
|
190
|
+
const reglas = plan.reglasCustom;
|
|
191
|
+
if (reglas && reglas.length > 0) {
|
|
192
|
+
ctx += `\nREGLAS CUSTOM DEL TENANT:\n`;
|
|
193
|
+
for (const r of reglas) {
|
|
194
|
+
ctx += `- ${r}\n`;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return ctx;
|
|
199
|
+
}
|
|
200
|
+
// ═══════════════════════════════════════════════════════════
|
|
201
|
+
// Exportar: system prompt completo
|
|
202
|
+
// ═══════════════════════════════════════════════════════════
|
|
203
|
+
/**
|
|
204
|
+
* Construye el system prompt completo para una sesion.
|
|
205
|
+
* Partes 1+2 son fijas. Parte 3 se inyecta desde Firestore.
|
|
206
|
+
*/
|
|
207
|
+
export async function buildSystemPrompt(session) {
|
|
208
|
+
const tenantId = session.tenantId;
|
|
209
|
+
const brandId = session.brandId;
|
|
210
|
+
// Si no hay contexto, solo retornar partes fijas
|
|
211
|
+
if (!tenantId || !brandId) {
|
|
212
|
+
return PARTE_1_IDENTIDAD
|
|
213
|
+
.replace('{{brand_nombre}}', 'el negocio')
|
|
214
|
+
.replace('{{brand_dominio}}', 'la tienda online')
|
|
215
|
+
+ PARTE_2_REGLAS;
|
|
216
|
+
}
|
|
217
|
+
// Leer nombre de la brand
|
|
218
|
+
const config = await readDoc('marketing_config', tenantId);
|
|
219
|
+
const brands = (config?.brands ?? {});
|
|
220
|
+
const brand = brands[brandId];
|
|
221
|
+
let prompt = PARTE_1_IDENTIDAD
|
|
222
|
+
.replace('{{brand_nombre}}', brand?.nombre ?? brandId)
|
|
223
|
+
.replace('{{brand_dominio}}', brand?.dominio ?? 'la tienda online');
|
|
224
|
+
prompt += PARTE_2_REGLAS;
|
|
225
|
+
// Parte 3: contexto dinamico
|
|
226
|
+
const contexto = await buildTenantContext(session);
|
|
227
|
+
if (contexto) {
|
|
228
|
+
prompt += '\n---\n' + contexto;
|
|
229
|
+
}
|
|
230
|
+
return prompt;
|
|
231
|
+
}
|
|
232
|
+
//# sourceMappingURL=system.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"system.js","sourceRoot":"","sources":["../../src/prompts/system.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Schemas / Builders del modulo de Marketing — copia para TypeScript
|
|
3
|
+
*
|
|
4
|
+
* OBS-3: Copia de src/schemas/marketing.js adaptada a TypeScript.
|
|
5
|
+
* Si cambian en src/schemas/marketing.js → actualizar aqui tambien.
|
|
6
|
+
*
|
|
7
|
+
* Son funciones puras, no dependen de React ni Firebase.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ESTADO_FOTO: {
|
|
10
|
+
readonly NUEVA: "nueva";
|
|
11
|
+
readonly POR_EDITAR: "por_editar";
|
|
12
|
+
readonly EDITADA: "editada";
|
|
13
|
+
readonly PUBLICADA: "publicada";
|
|
14
|
+
readonly DESCARTADA: "descartada";
|
|
15
|
+
};
|
|
16
|
+
export declare const TIPO_FOTO: {
|
|
17
|
+
readonly PRODUCTO: "producto";
|
|
18
|
+
readonly ARREGLO: "arreglo";
|
|
19
|
+
readonly ENTREGA: "entrega";
|
|
20
|
+
readonly TALLER: "taller";
|
|
21
|
+
readonly EQUIPO: "equipo";
|
|
22
|
+
readonly EVENTO: "evento";
|
|
23
|
+
};
|
|
24
|
+
export declare const PLATAFORMA: {
|
|
25
|
+
readonly GBP: "gbp";
|
|
26
|
+
readonly SHOPIFY_BLOG: "shopify_blog";
|
|
27
|
+
readonly INSTAGRAM: "instagram";
|
|
28
|
+
readonly REVIEW: "review";
|
|
29
|
+
};
|
|
30
|
+
export declare const TIPO_CONTENIDO: {
|
|
31
|
+
readonly POST: "post";
|
|
32
|
+
readonly BLOG: "blog";
|
|
33
|
+
readonly CAROUSEL: "carousel";
|
|
34
|
+
readonly REEL: "reel";
|
|
35
|
+
readonly STORY: "story";
|
|
36
|
+
readonly REVIEW_RESPONSE: "review_response";
|
|
37
|
+
};
|
|
38
|
+
export declare const TIPO_GBP_POST: {
|
|
39
|
+
readonly STANDARD: "STANDARD";
|
|
40
|
+
readonly OFFER: "OFFER";
|
|
41
|
+
readonly EVENT: "EVENT";
|
|
42
|
+
};
|
|
43
|
+
export declare const CTA_GBP: {
|
|
44
|
+
readonly SHOP: "SHOP";
|
|
45
|
+
readonly LEARN_MORE: "LEARN_MORE";
|
|
46
|
+
readonly SIGN_UP: "SIGN_UP";
|
|
47
|
+
readonly CALL: "CALL";
|
|
48
|
+
};
|
|
49
|
+
export declare const ESTADO_CONTENIDO: {
|
|
50
|
+
readonly BORRADOR: "borrador";
|
|
51
|
+
readonly GENERADO: "generado";
|
|
52
|
+
readonly PENDIENTE_APROBACION: "pendiente_aprobacion";
|
|
53
|
+
readonly APROBADO: "aprobado";
|
|
54
|
+
readonly PUBLICADO: "publicado";
|
|
55
|
+
readonly RECHAZADO: "rechazado";
|
|
56
|
+
readonly EDITADO: "editado";
|
|
57
|
+
readonly ERROR_PUBLICACION: "error_publicacion";
|
|
58
|
+
};
|
|
59
|
+
export declare const TRANSICIONES_CONTENIDO: Record<string, string[]>;
|
|
60
|
+
export declare function esTransicionValida(estadoActual: string, estadoNuevo: string): boolean;
|
|
61
|
+
export declare const ESTADO_CALENDARIO_ITEM: {
|
|
62
|
+
readonly PLANIFICADO: "planificado";
|
|
63
|
+
readonly GENERADO: "generado";
|
|
64
|
+
readonly APROBADO: "aprobado";
|
|
65
|
+
readonly PUBLICADO: "publicado";
|
|
66
|
+
readonly RECHAZADO: "rechazado";
|
|
67
|
+
};
|
|
68
|
+
export declare const TRANSICIONES_FOTO: Record<string, string[]>;
|
|
69
|
+
export declare function validarTransicionFoto(estadoActual: string, estadoNuevo: string): boolean;
|
|
70
|
+
export interface FotoData {
|
|
71
|
+
id: string;
|
|
72
|
+
tenantId: string;
|
|
73
|
+
brandId: string;
|
|
74
|
+
archivoOriginal?: string | null;
|
|
75
|
+
archivoEditado?: string | null;
|
|
76
|
+
estado?: string;
|
|
77
|
+
tipo?: string | null;
|
|
78
|
+
flores?: string[];
|
|
79
|
+
productos?: string[];
|
|
80
|
+
fechaIngesta?: unknown;
|
|
81
|
+
fechaEdicion?: unknown;
|
|
82
|
+
usadaEn?: unknown[];
|
|
83
|
+
metadata?: Record<string, unknown> | null;
|
|
84
|
+
creadoPorId?: string | null;
|
|
85
|
+
creadoPorNombre?: string | null;
|
|
86
|
+
}
|
|
87
|
+
export declare function buildFoto(data: FotoData): {
|
|
88
|
+
id: string;
|
|
89
|
+
tenantId: string;
|
|
90
|
+
brandId: string;
|
|
91
|
+
archivoOriginal: string | null;
|
|
92
|
+
archivoEditado: string | null;
|
|
93
|
+
estado: string;
|
|
94
|
+
tipo: string | null;
|
|
95
|
+
flores: string[];
|
|
96
|
+
productos: string[];
|
|
97
|
+
fechaIngesta: {} | null;
|
|
98
|
+
fechaEdicion: {} | null;
|
|
99
|
+
usadaEn: unknown[];
|
|
100
|
+
metadata: Record<string, unknown>;
|
|
101
|
+
creadoPorId: string | null;
|
|
102
|
+
creadoPorNombre: string | null;
|
|
103
|
+
};
|
|
104
|
+
export interface DatosGBP {
|
|
105
|
+
summary?: string | null;
|
|
106
|
+
topicType?: string;
|
|
107
|
+
callToAction?: {
|
|
108
|
+
type: string;
|
|
109
|
+
url: string;
|
|
110
|
+
} | null;
|
|
111
|
+
perfilId?: string | null;
|
|
112
|
+
}
|
|
113
|
+
export declare function buildDatosGBP(data?: DatosGBP): {
|
|
114
|
+
summary: string | null;
|
|
115
|
+
topicType: string;
|
|
116
|
+
callToAction: {
|
|
117
|
+
type: string;
|
|
118
|
+
url: string;
|
|
119
|
+
} | null;
|
|
120
|
+
perfilId: string | null;
|
|
121
|
+
};
|
|
122
|
+
export interface DatosBlog {
|
|
123
|
+
title?: string | null;
|
|
124
|
+
body?: string | null;
|
|
125
|
+
handle?: string | null;
|
|
126
|
+
metaTitle?: string | null;
|
|
127
|
+
metaDescription?: string | null;
|
|
128
|
+
tags?: string[];
|
|
129
|
+
imageAltText?: string | null;
|
|
130
|
+
keywordsSecundarios?: string[];
|
|
131
|
+
productosLinkeados?: string[];
|
|
132
|
+
structuredData?: unknown;
|
|
133
|
+
}
|
|
134
|
+
export declare function buildDatosBlog(data?: DatosBlog): {
|
|
135
|
+
title: string | null;
|
|
136
|
+
body: string | null;
|
|
137
|
+
handle: string | null;
|
|
138
|
+
metaTitle: string | null;
|
|
139
|
+
metaDescription: string | null;
|
|
140
|
+
tags: string[];
|
|
141
|
+
imageAltText: string | null;
|
|
142
|
+
keywordsSecundarios: string[];
|
|
143
|
+
productosLinkeados: string[];
|
|
144
|
+
structuredData: {} | null;
|
|
145
|
+
};
|
|
146
|
+
export interface DatosIG {
|
|
147
|
+
caption?: string | null;
|
|
148
|
+
altText?: string | null;
|
|
149
|
+
mediaType?: string;
|
|
150
|
+
productTags?: string[];
|
|
151
|
+
hashtags?: string[];
|
|
152
|
+
}
|
|
153
|
+
export declare function buildDatosIG(data?: DatosIG): {
|
|
154
|
+
caption: string | null;
|
|
155
|
+
altText: string | null;
|
|
156
|
+
mediaType: string;
|
|
157
|
+
productTags: string[];
|
|
158
|
+
hashtags: string[];
|
|
159
|
+
};
|
|
160
|
+
export interface DatosReview {
|
|
161
|
+
reviewText?: string | null;
|
|
162
|
+
rating?: number | null;
|
|
163
|
+
reviewerName?: string | null;
|
|
164
|
+
responseText?: string | null;
|
|
165
|
+
googleReviewId?: string | null;
|
|
166
|
+
}
|
|
167
|
+
export declare function buildDatosReview(data?: DatosReview): {
|
|
168
|
+
reviewText: string | null;
|
|
169
|
+
rating: number | null;
|
|
170
|
+
reviewerName: string | null;
|
|
171
|
+
responseText: string | null;
|
|
172
|
+
googleReviewId: string | null;
|
|
173
|
+
};
|
|
174
|
+
export interface ContenidoData {
|
|
175
|
+
id: string;
|
|
176
|
+
tenantId: string;
|
|
177
|
+
brandId: string;
|
|
178
|
+
plataforma: string;
|
|
179
|
+
tipo?: string;
|
|
180
|
+
keyword?: string | null;
|
|
181
|
+
languageCode?: string;
|
|
182
|
+
estado?: string;
|
|
183
|
+
fotoId?: string | null;
|
|
184
|
+
mediaUrl?: string | null;
|
|
185
|
+
calendarioItemRef?: string | null;
|
|
186
|
+
datos?: Record<string, unknown>;
|
|
187
|
+
creadoAt?: unknown;
|
|
188
|
+
creadoPorId?: string | null;
|
|
189
|
+
aprobadoAt?: unknown;
|
|
190
|
+
aprobadoPorId?: string | null;
|
|
191
|
+
aprobadoPorNombre?: string | null;
|
|
192
|
+
rechazadoAt?: unknown;
|
|
193
|
+
rechazadoMotivo?: string | null;
|
|
194
|
+
editadoAt?: unknown;
|
|
195
|
+
publicadoAt?: unknown;
|
|
196
|
+
errorPublicacion?: string | null;
|
|
197
|
+
externalId?: string | null;
|
|
198
|
+
}
|
|
199
|
+
export declare function buildContenido(data: ContenidoData): {
|
|
200
|
+
id: string;
|
|
201
|
+
tenantId: string;
|
|
202
|
+
brandId: string;
|
|
203
|
+
plataforma: string;
|
|
204
|
+
tipo: string;
|
|
205
|
+
keyword: string | null;
|
|
206
|
+
languageCode: string;
|
|
207
|
+
estado: string;
|
|
208
|
+
fotoId: string | null;
|
|
209
|
+
mediaUrl: string | null;
|
|
210
|
+
calendarioItemRef: string | null;
|
|
211
|
+
datos: Record<string, unknown>;
|
|
212
|
+
creadoAt: {} | null;
|
|
213
|
+
creadoPorId: string | null;
|
|
214
|
+
aprobadoAt: {} | null;
|
|
215
|
+
aprobadoPorId: string | null;
|
|
216
|
+
aprobadoPorNombre: string | null;
|
|
217
|
+
rechazadoAt: {} | null;
|
|
218
|
+
rechazadoMotivo: string | null;
|
|
219
|
+
editadoAt: {} | null;
|
|
220
|
+
publicadoAt: {} | null;
|
|
221
|
+
errorPublicacion: string | null;
|
|
222
|
+
externalId: string | null;
|
|
223
|
+
};
|
|
224
|
+
export interface CalendarioData {
|
|
225
|
+
id: string;
|
|
226
|
+
tenantId: string;
|
|
227
|
+
brandId: string;
|
|
228
|
+
mes: string;
|
|
229
|
+
semanas?: unknown[];
|
|
230
|
+
creadoAt?: unknown;
|
|
231
|
+
creadoPorId?: string | null;
|
|
232
|
+
updatedAt?: unknown;
|
|
233
|
+
}
|
|
234
|
+
export declare function buildCalendario(data: CalendarioData): {
|
|
235
|
+
id: string;
|
|
236
|
+
tenantId: string;
|
|
237
|
+
brandId: string;
|
|
238
|
+
mes: string;
|
|
239
|
+
semanas: unknown[];
|
|
240
|
+
creadoAt: {} | null;
|
|
241
|
+
creadoPorId: string | null;
|
|
242
|
+
updatedAt: {} | null;
|
|
243
|
+
};
|
|
244
|
+
export interface CalendarioItemData {
|
|
245
|
+
dia?: string | null;
|
|
246
|
+
plataforma?: string | null;
|
|
247
|
+
tipo?: string | null;
|
|
248
|
+
keyword?: string | null;
|
|
249
|
+
tema?: string | null;
|
|
250
|
+
productoId?: string | null;
|
|
251
|
+
estado?: string;
|
|
252
|
+
contenidoRef?: string | null;
|
|
253
|
+
}
|
|
254
|
+
export declare function buildCalendarioItem(data?: CalendarioItemData): {
|
|
255
|
+
dia: string | null;
|
|
256
|
+
plataforma: string | null;
|
|
257
|
+
tipo: string | null;
|
|
258
|
+
keyword: string | null;
|
|
259
|
+
tema: string | null;
|
|
260
|
+
productoId: string | null;
|
|
261
|
+
estado: string;
|
|
262
|
+
contenidoRef: string | null;
|
|
263
|
+
};
|
|
264
|
+
export interface BrandConfigData {
|
|
265
|
+
nombre: string;
|
|
266
|
+
dominio?: string | null;
|
|
267
|
+
semrushDatabase?: string | null;
|
|
268
|
+
seoSnapshot?: Record<string, unknown> | null;
|
|
269
|
+
plan?: Record<string, unknown> | null;
|
|
270
|
+
gbpPerfiles?: unknown[];
|
|
271
|
+
frecuencia?: Record<string, unknown> | null;
|
|
272
|
+
idiomas?: Record<string, unknown> | null;
|
|
273
|
+
igCuenta?: Record<string, unknown> | null;
|
|
274
|
+
canvaTeamId?: string | null;
|
|
275
|
+
shopifyDomain?: string | null;
|
|
276
|
+
conexiones?: Record<string, unknown> | null;
|
|
277
|
+
}
|
|
278
|
+
export declare function buildBrandConfig(data: BrandConfigData): {
|
|
279
|
+
nombre: string;
|
|
280
|
+
dominio: string | null;
|
|
281
|
+
semrushDatabase: string | null;
|
|
282
|
+
seoSnapshot: Record<string, unknown> | null;
|
|
283
|
+
plan: Record<string, unknown> | null;
|
|
284
|
+
gbpPerfiles: unknown[];
|
|
285
|
+
frecuencia: Record<string, unknown> | null;
|
|
286
|
+
idiomas: Record<string, unknown> | null;
|
|
287
|
+
igCuenta: Record<string, unknown> | null;
|
|
288
|
+
canvaTeamId: string | null;
|
|
289
|
+
shopifyDomain: string | null;
|
|
290
|
+
conexiones: Record<string, unknown>;
|
|
291
|
+
};
|
|
292
|
+
export interface ConfigData {
|
|
293
|
+
id: string;
|
|
294
|
+
tenantId: string;
|
|
295
|
+
brands?: Record<string, unknown>;
|
|
296
|
+
semrushUsage?: Record<string, unknown> | null;
|
|
297
|
+
updatedAt?: unknown;
|
|
298
|
+
}
|
|
299
|
+
export declare function buildConfig(data: ConfigData): {
|
|
300
|
+
id: string;
|
|
301
|
+
tenantId: string;
|
|
302
|
+
brands: Record<string, unknown>;
|
|
303
|
+
semrushUsage: Record<string, unknown> | null;
|
|
304
|
+
updatedAt: {} | null;
|
|
305
|
+
};
|
|
306
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"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"}
|