@hed-hog/catalog 0.0.276

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.
Files changed (65) hide show
  1. package/dist/catalog-resource.config.d.ts +12 -0
  2. package/dist/catalog-resource.config.d.ts.map +1 -0
  3. package/dist/catalog-resource.config.js +209 -0
  4. package/dist/catalog-resource.config.js.map +1 -0
  5. package/dist/catalog.controller.d.ts +29 -0
  6. package/dist/catalog.controller.d.ts.map +1 -0
  7. package/dist/catalog.controller.js +117 -0
  8. package/dist/catalog.controller.js.map +1 -0
  9. package/dist/catalog.module.d.ts +3 -0
  10. package/dist/catalog.module.d.ts.map +1 -0
  11. package/dist/catalog.module.js +25 -0
  12. package/dist/catalog.module.js.map +1 -0
  13. package/dist/catalog.service.d.ts +36 -0
  14. package/dist/catalog.service.d.ts.map +1 -0
  15. package/dist/catalog.service.js +142 -0
  16. package/dist/catalog.service.js.map +1 -0
  17. package/dist/index.d.ts +2 -0
  18. package/dist/index.d.ts.map +1 -0
  19. package/dist/index.js +18 -0
  20. package/dist/index.js.map +1 -0
  21. package/hedhog/data/menu.yaml +233 -0
  22. package/hedhog/data/role.yaml +7 -0
  23. package/hedhog/data/route.yaml +56 -0
  24. package/hedhog/frontend/app/[resource]/page.tsx.ejs +684 -0
  25. package/hedhog/frontend/app/_components/catalog-nav.tsx.ejs +85 -0
  26. package/hedhog/frontend/app/_lib/catalog-resources.tsx.ejs +569 -0
  27. package/hedhog/frontend/app/dashboard/page.tsx.ejs +566 -0
  28. package/hedhog/frontend/app/page.tsx.ejs +5 -0
  29. package/hedhog/frontend/messages/en.json +293 -0
  30. package/hedhog/frontend/messages/pt.json +293 -0
  31. package/hedhog/table/catalog_affiliate_program.yaml +41 -0
  32. package/hedhog/table/catalog_attribute.yaml +53 -0
  33. package/hedhog/table/catalog_attribute_group.yaml +18 -0
  34. package/hedhog/table/catalog_brand.yaml +34 -0
  35. package/hedhog/table/catalog_category_attribute.yaml +36 -0
  36. package/hedhog/table/catalog_click_event.yaml +50 -0
  37. package/hedhog/table/catalog_comparison.yaml +65 -0
  38. package/hedhog/table/catalog_comparison_highlight.yaml +39 -0
  39. package/hedhog/table/catalog_comparison_item.yaml +30 -0
  40. package/hedhog/table/catalog_content_relation.yaml +42 -0
  41. package/hedhog/table/catalog_import_run.yaml +33 -0
  42. package/hedhog/table/catalog_import_source.yaml +24 -0
  43. package/hedhog/table/catalog_merchant.yaml +29 -0
  44. package/hedhog/table/catalog_offer.yaml +83 -0
  45. package/hedhog/table/catalog_price_history.yaml +34 -0
  46. package/hedhog/table/catalog_product.yaml +76 -0
  47. package/hedhog/table/catalog_product_attribute_value.yaml +60 -0
  48. package/hedhog/table/catalog_product_category.yaml +26 -0
  49. package/hedhog/table/catalog_product_image.yaml +34 -0
  50. package/hedhog/table/catalog_product_score.yaml +38 -0
  51. package/hedhog/table/catalog_product_site.yaml +47 -0
  52. package/hedhog/table/catalog_product_tag.yaml +19 -0
  53. package/hedhog/table/catalog_score_criterion.yaml +37 -0
  54. package/hedhog/table/catalog_seo_page_rule.yaml +51 -0
  55. package/hedhog/table/catalog_similarity_rule.yaml +28 -0
  56. package/hedhog/table/catalog_site.yaml +40 -0
  57. package/hedhog/table/catalog_site_category.yaml +26 -0
  58. package/package.json +40 -0
  59. package/src/catalog-resource.config.ts +218 -0
  60. package/src/catalog.controller.ts +82 -0
  61. package/src/catalog.module.ts +12 -0
  62. package/src/catalog.service.ts +167 -0
  63. package/src/index.ts +1 -0
  64. package/src/language/en.json +4 -0
  65. package/src/language/pt.json +4 -0
@@ -0,0 +1,293 @@
1
+ {
2
+ "title": "Catalog",
3
+ "subtitle": "Manage the generic multi-niche catalog foundation.",
4
+ "openResource": "Open resource",
5
+ "searchPlaceholder": "Search by id, slug, name or title...",
6
+ "create": "Create",
7
+ "edit": "Edit",
8
+ "delete": "Delete",
9
+ "save": "Save",
10
+ "cancel": "Cancel",
11
+ "payload": "Payload",
12
+ "empty": "No records found.",
13
+ "backToCatalog": "Back to dashboard",
14
+ "refresh": "Refresh",
15
+ "newRecord": "New record",
16
+ "editRecord": "Edit record",
17
+ "confirmDelete": "Delete this record?",
18
+ "confirmDeleteDescription": "This operation cannot be undone.",
19
+ "unsupportedResource": "Unsupported catalog resource.",
20
+ "breadcrumbs": {
21
+ "home": "Home",
22
+ "catalog": "Catalog"
23
+ },
24
+ "navigation": {
25
+ "current": "Current"
26
+ },
27
+ "dashboard": {
28
+ "title": "Dashboard",
29
+ "subtitle": "Operational overview of the catalog with indicators, distribution, and quick access.",
30
+ "heroBadge": "Catalog overview",
31
+ "heroTitle": "Track the catalog ecosystem from one control room.",
32
+ "heroDescription": "Monitor the most important domains, compare resource volume, and jump straight to the areas your team touches every day.",
33
+ "primaryAction": "Open products",
34
+ "secondaryAction": "View imports",
35
+ "summary": {
36
+ "totalRecords": "Total records",
37
+ "activeRecords": "Active monitored",
38
+ "monitoredResources": "Resources with data"
39
+ },
40
+ "card": {
41
+ "totalLabel": "Total",
42
+ "activeLabel": "{count} active",
43
+ "noActiveLabel": "No active metric"
44
+ },
45
+ "charts": {
46
+ "volume": {
47
+ "title": "Highest volume by resource",
48
+ "description": "Comparison across the catalog resources with the largest record sets."
49
+ },
50
+ "status": {
51
+ "title": "Active vs other records",
52
+ "description": "Status view across the {count} resources that expose active metrics."
53
+ },
54
+ "distribution": {
55
+ "title": "Volume distribution",
56
+ "description": "Relative share of the top resources inside the current catalog base."
57
+ }
58
+ },
59
+ "ranking": {
60
+ "title": "Resource ranking",
61
+ "description": "The largest catalog areas right now.",
62
+ "activeCount": "{count} active"
63
+ },
64
+ "quickActions": {
65
+ "itemHint": "Quick access"
66
+ },
67
+ "footer": {
68
+ "title": "Consolidated module view",
69
+ "description": "The charts use real per-resource stats that already exist and organize team navigation around them.",
70
+ "realData": "Real data",
71
+ "multiView": "Multi-resource view",
72
+ "resourceCount": "{count} monitored resources"
73
+ }
74
+ },
75
+ "resource": {
76
+ "notFound": "Resource not found",
77
+ "unsupportedDescription": "Choose one of the module resources to continue navigating through the catalog.",
78
+ "createShortcut": "Create new record",
79
+ "listTitle": "Resource records",
80
+ "listDescription": "Track the resource data with search, filter, pagination, and quick actions.",
81
+ "payloadHintTitle": "Raw format editing",
82
+ "payloadHintDescription": "The dialogs use JSON to speed up testing and operational adjustments for the team.",
83
+ "recordPreview": "Raw preview of the current payload.",
84
+ "emptyState": "No records found for this current slice.",
85
+ "booleans": {
86
+ "true": "Yes",
87
+ "false": "No"
88
+ },
89
+ "kpis": {
90
+ "total": "Resource total",
91
+ "active": "Active",
92
+ "visible": "Visible records",
93
+ "activeInSlice": "Active in slice",
94
+ "inStockInSlice": "In stock in slice",
95
+ "filterableInSlice": "Filterable in slice",
96
+ "requiredInSlice": "Required in slice",
97
+ "publishedInSlice": "Active/published in slice"
98
+ },
99
+ "filters": {
100
+ "all": "All",
101
+ "status": "Status",
102
+ "availability_status": "Availability",
103
+ "data_type": "Data type",
104
+ "facet_mode": "Facet mode"
105
+ },
106
+ "filterOptions": {
107
+ "status": {
108
+ "active": "Active",
109
+ "inactive": "Inactive",
110
+ "draft": "Draft",
111
+ "published": "Published"
112
+ },
113
+ "availability_status": {
114
+ "inStock": "In stock",
115
+ "outOfStock": "Out of stock",
116
+ "preorder": "Pre-order"
117
+ },
118
+ "data_type": {
119
+ "text": "Text",
120
+ "number": "Number",
121
+ "boolean": "Boolean",
122
+ "json": "JSON"
123
+ },
124
+ "facet_mode": {
125
+ "default": "Default",
126
+ "range": "Range",
127
+ "select": "Select"
128
+ }
129
+ },
130
+ "fields": {
131
+ "actions": "Actions",
132
+ "id": "ID",
133
+ "name": "Name",
134
+ "slug": "Slug",
135
+ "status": "Status",
136
+ "normalizedName": "Normalized name",
137
+ "websiteUrl": "Website",
138
+ "domain": "Domain",
139
+ "defaultLocaleId": "Default locale",
140
+ "sku": "SKU",
141
+ "brandId": "Brand",
142
+ "categoryId": "Category",
143
+ "groupId": "Group",
144
+ "label": "Label",
145
+ "dataType": "Data type",
146
+ "comparisonMode": "Comparison mode",
147
+ "requiredForComparison": "Required for comparison",
148
+ "facetMode": "Facet mode",
149
+ "attributeId": "Attribute",
150
+ "isRequired": "Required",
151
+ "isHighlighted": "Highlighted",
152
+ "weight": "Weight",
153
+ "siteId": "Site",
154
+ "merchantId": "Merchant",
155
+ "productId": "Product",
156
+ "priceAmount": "Price",
157
+ "merchantType": "Merchant type",
158
+ "logoFileId": "Logo file",
159
+ "commissionType": "Commission type",
160
+ "defaultCommissionValue": "Default commission",
161
+ "priority": "Priority",
162
+ "sourceType": "Source type",
163
+ "isFilterable": "Filterable"
164
+ },
165
+ "summary": {
166
+ "total": "Resource total",
167
+ "visible": "Visible in list",
168
+ "active": "Active"
169
+ },
170
+ "valueLabels": {
171
+ "status": {
172
+ "active": "Active",
173
+ "inactive": "Inactive",
174
+ "draft": "Draft",
175
+ "published": "Published"
176
+ },
177
+ "comparison_status": {
178
+ "active": "Active",
179
+ "inactive": "Inactive",
180
+ "draft": "Draft",
181
+ "published": "Published"
182
+ },
183
+ "availability_status": {
184
+ "in_stock": "In stock",
185
+ "out_of_stock": "Out of stock",
186
+ "preorder": "Pre-order"
187
+ },
188
+ "site_type": {
189
+ "portal": "Portal"
190
+ },
191
+ "merchant_type": {
192
+ "retailer": "Retailer"
193
+ },
194
+ "network_type": {
195
+ "direct": "Direct"
196
+ },
197
+ "commission_type": {
198
+ "percentage": "Percentage"
199
+ },
200
+ "page_type": {
201
+ "comparison": "Comparison"
202
+ },
203
+ "canonical_strategy": {
204
+ "self": "Self"
205
+ },
206
+ "source_type": {
207
+ "api": "API"
208
+ },
209
+ "data_type": {
210
+ "text": "Text",
211
+ "number": "Number",
212
+ "boolean": "Boolean",
213
+ "json": "JSON"
214
+ },
215
+ "comparison_mode": {
216
+ "neutral": "Neutral"
217
+ },
218
+ "facet_mode": {
219
+ "default": "Default",
220
+ "range": "Range",
221
+ "select": "Select"
222
+ }
223
+ }
224
+ },
225
+ "toasts": {
226
+ "saveSuccess": "{resource} saved successfully.",
227
+ "saveError": "Failed to save resource.",
228
+ "deleteSuccess": "Record deleted successfully.",
229
+ "deleteError": "Failed to delete record."
230
+ },
231
+ "resources": {
232
+ "brands": {
233
+ "title": "Brands",
234
+ "shortTitle": "Brands",
235
+ "description": "Manufacturers, brands, and portfolio normalization."
236
+ },
237
+ "sites": {
238
+ "title": "Sites",
239
+ "shortTitle": "Sites",
240
+ "description": "Domains, visual identity, and multi-site publishing scope."
241
+ },
242
+ "products": {
243
+ "title": "Products",
244
+ "shortTitle": "Products",
245
+ "description": "Core product catalog with reusable relationships."
246
+ },
247
+ "attributeGroups": {
248
+ "title": "Attribute groups",
249
+ "shortTitle": "Groups",
250
+ "description": "Visual and logical groupings for comparable specifications."
251
+ },
252
+ "attributes": {
253
+ "title": "Attributes",
254
+ "shortTitle": "Attributes",
255
+ "description": "Dictionary of dynamic and comparable technical attributes."
256
+ },
257
+ "categoryAttributes": {
258
+ "title": "Category attributes",
259
+ "shortTitle": "Cat. attrs",
260
+ "description": "Relevance and display rules for attributes by category."
261
+ },
262
+ "comparisons": {
263
+ "title": "Comparisons",
264
+ "shortTitle": "Comparisons",
265
+ "description": "Manual and automated comparison pages across products."
266
+ },
267
+ "offers": {
268
+ "title": "Offers",
269
+ "shortTitle": "Offers",
270
+ "description": "Commercial offers, prices, and affiliate links."
271
+ },
272
+ "merchants": {
273
+ "title": "Merchants",
274
+ "shortTitle": "Merchants",
275
+ "description": "Stores, retailers, and commerce partners."
276
+ },
277
+ "affiliatePrograms": {
278
+ "title": "Affiliate programs",
279
+ "shortTitle": "Affiliate",
280
+ "description": "Affiliate networks and direct programs per merchant."
281
+ },
282
+ "seoRules": {
283
+ "title": "SEO rules",
284
+ "shortTitle": "SEO",
285
+ "description": "Rules for programmatic page generation and canonical behavior."
286
+ },
287
+ "importSources": {
288
+ "title": "Import sources",
289
+ "shortTitle": "Imports",
290
+ "description": "Feeds, APIs, and external integrations for catalog ingestion."
291
+ }
292
+ }
293
+ }
@@ -0,0 +1,293 @@
1
+ {
2
+ "title": "Catalogo",
3
+ "subtitle": "Gerencie a base generica do catalogo multi-nicho.",
4
+ "openResource": "Abrir recurso",
5
+ "searchPlaceholder": "Busque por id, slug, nome ou titulo...",
6
+ "create": "Criar",
7
+ "edit": "Editar",
8
+ "delete": "Excluir",
9
+ "save": "Salvar",
10
+ "cancel": "Cancelar",
11
+ "payload": "Payload",
12
+ "empty": "Nenhum registro encontrado.",
13
+ "backToCatalog": "Voltar para o dashboard",
14
+ "refresh": "Atualizar",
15
+ "newRecord": "Novo registro",
16
+ "editRecord": "Editar registro",
17
+ "confirmDelete": "Excluir este registro?",
18
+ "confirmDeleteDescription": "Esta operacao nao pode ser desfeita.",
19
+ "unsupportedResource": "Recurso de catalogo nao suportado.",
20
+ "breadcrumbs": {
21
+ "home": "Home",
22
+ "catalog": "Catalogo"
23
+ },
24
+ "navigation": {
25
+ "current": "Atual"
26
+ },
27
+ "dashboard": {
28
+ "title": "Dashboard",
29
+ "subtitle": "Visao geral operacional do catalogo, com indicadores, distribuicao e acessos rapidos.",
30
+ "heroBadge": "Panorama do catalogo",
31
+ "heroTitle": "Acompanhe o ecossistema do catalogo em um unico painel.",
32
+ "heroDescription": "Monitore os dominios mais importantes, compare volumes entre recursos e navegue rapidamente para os pontos onde o time opera todos os dias.",
33
+ "primaryAction": "Abrir produtos",
34
+ "secondaryAction": "Ver importacoes",
35
+ "summary": {
36
+ "totalRecords": "Registros totais",
37
+ "activeRecords": "Ativos monitorados",
38
+ "monitoredResources": "Recursos com dados"
39
+ },
40
+ "card": {
41
+ "totalLabel": "Total",
42
+ "activeLabel": "{count} ativos",
43
+ "noActiveLabel": "Sem indicador de ativo"
44
+ },
45
+ "charts": {
46
+ "volume": {
47
+ "title": "Maior volume por recurso",
48
+ "description": "Comparativo entre os recursos com mais registros no catalogo."
49
+ },
50
+ "status": {
51
+ "title": "Ativos x demais registros",
52
+ "description": "Leitura dos {count} recursos que expõem estatistica de status."
53
+ },
54
+ "distribution": {
55
+ "title": "Distribuicao do volume",
56
+ "description": "Participacao relativa dos principais recursos dentro da base atual."
57
+ }
58
+ },
59
+ "ranking": {
60
+ "title": "Ranking de recursos",
61
+ "description": "Os modulos mais volumosos do catalogo neste momento.",
62
+ "activeCount": "{count} ativos"
63
+ },
64
+ "quickActions": {
65
+ "itemHint": "Acesso rapido"
66
+ },
67
+ "footer": {
68
+ "title": "Leitura consolidada do modulo",
69
+ "description": "Os graficos usam estatisticas reais ja disponiveis por recurso e organizam a navegacao do time em volta delas.",
70
+ "realData": "Dados reais",
71
+ "multiView": "Visao multi-recurso",
72
+ "resourceCount": "{count} recursos monitorados"
73
+ }
74
+ },
75
+ "resource": {
76
+ "notFound": "Recurso nao encontrado",
77
+ "unsupportedDescription": "Selecione um dos recursos do modulo para continuar navegando pelo catalogo.",
78
+ "createShortcut": "Criar novo registro",
79
+ "listTitle": "Registros do recurso",
80
+ "listDescription": "Acompanhe os dados do recurso com busca, filtro, paginação e acoes operacionais.",
81
+ "payloadHintTitle": "Edicao em formato bruto",
82
+ "payloadHintDescription": "Os dialogs usam JSON para acelerar testes e ajustes operacionais do time.",
83
+ "recordPreview": "Preview bruto do payload atual.",
84
+ "emptyState": "Nenhum registro encontrado para esse recorte.",
85
+ "booleans": {
86
+ "true": "Sim",
87
+ "false": "Nao"
88
+ },
89
+ "kpis": {
90
+ "total": "Total do recurso",
91
+ "active": "Ativos",
92
+ "visible": "Registros exibidos",
93
+ "activeInSlice": "Ativos no recorte",
94
+ "inStockInSlice": "Em estoque no recorte",
95
+ "filterableInSlice": "Filtraveis no recorte",
96
+ "requiredInSlice": "Obrigatorios no recorte",
97
+ "publishedInSlice": "Ativos/publicados no recorte"
98
+ },
99
+ "filters": {
100
+ "all": "Todos",
101
+ "status": "Status",
102
+ "availability_status": "Disponibilidade",
103
+ "data_type": "Tipo de dado",
104
+ "facet_mode": "Modo de faceta"
105
+ },
106
+ "filterOptions": {
107
+ "status": {
108
+ "active": "Ativo",
109
+ "inactive": "Inativo",
110
+ "draft": "Rascunho",
111
+ "published": "Publicado"
112
+ },
113
+ "availability_status": {
114
+ "inStock": "Em estoque",
115
+ "outOfStock": "Sem estoque",
116
+ "preorder": "Pre-venda"
117
+ },
118
+ "data_type": {
119
+ "text": "Texto",
120
+ "number": "Numero",
121
+ "boolean": "Booleano",
122
+ "json": "JSON"
123
+ },
124
+ "facet_mode": {
125
+ "default": "Padrao",
126
+ "range": "Faixa",
127
+ "select": "Selecao"
128
+ }
129
+ },
130
+ "fields": {
131
+ "actions": "Acoes",
132
+ "id": "ID",
133
+ "name": "Nome",
134
+ "slug": "Slug",
135
+ "status": "Status",
136
+ "normalizedName": "Nome normalizado",
137
+ "websiteUrl": "Site",
138
+ "domain": "Dominio",
139
+ "defaultLocaleId": "Locale padrao",
140
+ "sku": "SKU",
141
+ "brandId": "Marca",
142
+ "categoryId": "Categoria",
143
+ "groupId": "Grupo",
144
+ "label": "Label",
145
+ "dataType": "Tipo de dado",
146
+ "comparisonMode": "Modo de comparacao",
147
+ "requiredForComparison": "Obrigatorio para comparacao",
148
+ "facetMode": "Modo de faceta",
149
+ "attributeId": "Atributo",
150
+ "isRequired": "Obrigatorio",
151
+ "isHighlighted": "Destacado",
152
+ "weight": "Peso",
153
+ "siteId": "Site",
154
+ "merchantId": "Lojista",
155
+ "productId": "Produto",
156
+ "priceAmount": "Preco",
157
+ "merchantType": "Tipo de lojista",
158
+ "logoFileId": "Arquivo de logo",
159
+ "commissionType": "Tipo de comissao",
160
+ "defaultCommissionValue": "Comissao padrao",
161
+ "priority": "Prioridade",
162
+ "sourceType": "Tipo de fonte",
163
+ "isFilterable": "Filtravel"
164
+ },
165
+ "summary": {
166
+ "total": "Total do recurso",
167
+ "visible": "Visiveis na lista",
168
+ "active": "Ativos"
169
+ },
170
+ "valueLabels": {
171
+ "status": {
172
+ "active": "Ativo",
173
+ "inactive": "Inativo",
174
+ "draft": "Rascunho",
175
+ "published": "Publicado"
176
+ },
177
+ "comparison_status": {
178
+ "active": "Ativo",
179
+ "inactive": "Inativo",
180
+ "draft": "Rascunho",
181
+ "published": "Publicado"
182
+ },
183
+ "availability_status": {
184
+ "in_stock": "Em estoque",
185
+ "out_of_stock": "Sem estoque",
186
+ "preorder": "Pre-venda"
187
+ },
188
+ "site_type": {
189
+ "portal": "Portal"
190
+ },
191
+ "merchant_type": {
192
+ "retailer": "Varejista"
193
+ },
194
+ "network_type": {
195
+ "direct": "Direto"
196
+ },
197
+ "commission_type": {
198
+ "percentage": "Percentual"
199
+ },
200
+ "page_type": {
201
+ "comparison": "Comparacao"
202
+ },
203
+ "canonical_strategy": {
204
+ "self": "Self"
205
+ },
206
+ "source_type": {
207
+ "api": "API"
208
+ },
209
+ "data_type": {
210
+ "text": "Texto",
211
+ "number": "Numero",
212
+ "boolean": "Booleano",
213
+ "json": "JSON"
214
+ },
215
+ "comparison_mode": {
216
+ "neutral": "Neutro"
217
+ },
218
+ "facet_mode": {
219
+ "default": "Padrao",
220
+ "range": "Faixa",
221
+ "select": "Selecao"
222
+ }
223
+ }
224
+ },
225
+ "toasts": {
226
+ "saveSuccess": "{resource} salvo com sucesso.",
227
+ "saveError": "Falha ao salvar o recurso.",
228
+ "deleteSuccess": "Registro excluido com sucesso.",
229
+ "deleteError": "Falha ao excluir o registro."
230
+ },
231
+ "resources": {
232
+ "brands": {
233
+ "title": "Marcas",
234
+ "shortTitle": "Marcas",
235
+ "description": "Fabricantes, marcas e normalizacao do portfolio."
236
+ },
237
+ "sites": {
238
+ "title": "Sites",
239
+ "shortTitle": "Sites",
240
+ "description": "Dominios, identidade visual e escopo de publicacao multi-site."
241
+ },
242
+ "products": {
243
+ "title": "Produtos",
244
+ "shortTitle": "Produtos",
245
+ "description": "Catalogo principal de produtos com relacoes reutilizaveis."
246
+ },
247
+ "attributeGroups": {
248
+ "title": "Grupos de atributos",
249
+ "shortTitle": "Grupos",
250
+ "description": "Agrupamentos visuais e logicos para especificacoes comparaveis."
251
+ },
252
+ "attributes": {
253
+ "title": "Atributos",
254
+ "shortTitle": "Atributos",
255
+ "description": "Dicionario de atributos tecnicos dinamicos e comparaveis."
256
+ },
257
+ "categoryAttributes": {
258
+ "title": "Atributos por categoria",
259
+ "shortTitle": "Cat. atributos",
260
+ "description": "Regras de relevancia e exibicao de atributos por categoria."
261
+ },
262
+ "comparisons": {
263
+ "title": "Comparacoes",
264
+ "shortTitle": "Comparacoes",
265
+ "description": "Paginas comparativas manuais ou automaticas entre produtos."
266
+ },
267
+ "offers": {
268
+ "title": "Ofertas",
269
+ "shortTitle": "Ofertas",
270
+ "description": "Ofertas comerciais, precos e links de afiliacao."
271
+ },
272
+ "merchants": {
273
+ "title": "Lojistas",
274
+ "shortTitle": "Lojistas",
275
+ "description": "Lojas, varejistas e parceiros comerciais."
276
+ },
277
+ "affiliatePrograms": {
278
+ "title": "Programas de afiliacao",
279
+ "shortTitle": "Afiliacao",
280
+ "description": "Redes de afiliacao e programas diretos por merchant."
281
+ },
282
+ "seoRules": {
283
+ "title": "Regras de SEO",
284
+ "shortTitle": "SEO",
285
+ "description": "Configuracoes para geracao programatica de paginas e canonicals."
286
+ },
287
+ "importSources": {
288
+ "title": "Fontes de importacao",
289
+ "shortTitle": "Importacoes",
290
+ "description": "Feeds, APIs e integracoes externas para ingestao do catalogo."
291
+ }
292
+ }
293
+ }
@@ -0,0 +1,41 @@
1
+ columns:
2
+ - type: pk
3
+ - name: merchant_id
4
+ type: fk
5
+ isNullable: true
6
+ references:
7
+ table: catalog_merchant
8
+ column: id
9
+ onDelete: SET NULL
10
+ - name: slug
11
+ type: varchar
12
+ length: 255
13
+ - name: name
14
+ type: varchar
15
+ length: 255
16
+ - name: network_type
17
+ type: enum
18
+ values: [amazon, mercado_livre, aliexpress, kabum, direct, network]
19
+ default: direct
20
+ - name: tracking_template
21
+ type: text
22
+ isNullable: true
23
+ - name: commission_type
24
+ type: enum
25
+ values: [percentage, fixed]
26
+ default: percentage
27
+ - name: default_commission_value
28
+ type: decimal
29
+ precision: 8
30
+ scale: 2
31
+ default: 0
32
+ - name: status
33
+ type: enum
34
+ values: [active, inactive]
35
+ default: active
36
+ - type: created_at
37
+ - type: updated_at
38
+ indices:
39
+ - columns: [slug]
40
+ isUnique: true
41
+ - columns: [merchant_id, status]
@@ -0,0 +1,53 @@
1
+ columns:
2
+ - type: pk
3
+ - name: group_id
4
+ type: fk
5
+ isNullable: true
6
+ references:
7
+ table: catalog_attribute_group
8
+ column: id
9
+ onDelete: SET NULL
10
+ - name: slug
11
+ type: varchar
12
+ length: 255
13
+ - name: label
14
+ type: varchar
15
+ length: 255
16
+ - name: description
17
+ type: text
18
+ isNullable: true
19
+ - name: data_type
20
+ type: enum
21
+ values: [text, number, boolean, json]
22
+ default: text
23
+ - name: unit
24
+ type: varchar
25
+ length: 63
26
+ isNullable: true
27
+ - name: comparison_mode
28
+ type: enum
29
+ values: [neutral, higher_better, lower_better, boolean_true_better, enum_ordered]
30
+ default: neutral
31
+ - name: is_filterable
32
+ type: boolean
33
+ default: false
34
+ - name: is_sortable
35
+ type: boolean
36
+ default: false
37
+ - name: is_required_for_comparison
38
+ type: boolean
39
+ default: false
40
+ - name: normalization_rule_json
41
+ type: json
42
+ isNullable: true
43
+ - name: display_order
44
+ type: int
45
+ default: 0
46
+ - type: created_at
47
+ - type: updated_at
48
+ indices:
49
+ - columns: [slug]
50
+ isUnique: true
51
+ - columns: [group_id, display_order]
52
+ - columns: [data_type]
53
+ - columns: [is_filterable]