diff --git a/.node-red/.config.nodes.json.backup b/.node-red/.config.nodes.json.backup new file mode 100644 index 0000000..8f100cf --- /dev/null +++ b/.node-red/.config.nodes.json.backup @@ -0,0 +1,469 @@ +{ + "node-red": { + "name": "node-red", + "version": "4.0.9-git", + "local": false, + "user": false, + "nodes": { + "junction": { + "name": "junction", + "types": [ + "junction" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/05-junction.js" + }, + "inject": { + "name": "inject", + "types": [ + "inject" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/20-inject.js" + }, + "debug": { + "name": "debug", + "types": [ + "debug" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/21-debug.js" + }, + "complete": { + "name": "complete", + "types": [ + "complete" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/24-complete.js" + }, + "catch": { + "name": "catch", + "types": [ + "catch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/25-catch.js" + }, + "status": { + "name": "status", + "types": [ + "status" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/25-status.js" + }, + "link": { + "name": "link", + "types": [ + "link in", + "link out", + "link call" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/60-link.js" + }, + "comment": { + "name": "comment", + "types": [ + "comment" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/90-comment.js" + }, + "global-config": { + "name": "global-config", + "types": [ + "global-config" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/91-global-config.js" + }, + "unknown": { + "name": "unknown", + "types": [ + "unknown" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/common/98-unknown.js" + }, + "function": { + "name": "function", + "types": [ + "function" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/10-function.js" + }, + "switch": { + "name": "switch", + "types": [ + "switch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/10-switch.js" + }, + "change": { + "name": "change", + "types": [ + "change" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/15-change.js" + }, + "range": { + "name": "range", + "types": [ + "range" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/16-range.js" + }, + "template": { + "name": "template", + "types": [ + "template" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/80-template.js" + }, + "delay": { + "name": "delay", + "types": [ + "delay" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/89-delay.js" + }, + "trigger": { + "name": "trigger", + "types": [ + "trigger" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/89-trigger.js" + }, + "exec": { + "name": "exec", + "types": [ + "exec" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/90-exec.js" + }, + "rbe": { + "name": "rbe", + "types": [ + "rbe" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/function/rbe.js" + }, + "tls": { + "name": "tls", + "types": [ + "tls-config" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/05-tls.js" + }, + "httpproxy": { + "name": "httpproxy", + "types": [ + "http proxy" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/06-httpproxy.js" + }, + "mqtt": { + "name": "mqtt", + "types": [ + "mqtt in", + "mqtt out", + "mqtt-broker" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/10-mqtt.js" + }, + "httpin": { + "name": "httpin", + "types": [ + "http in", + "http response" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/21-httpin.js" + }, + "httprequest": { + "name": "httprequest", + "types": [ + "http request" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/21-httprequest.js" + }, + "websocket": { + "name": "websocket", + "types": [ + "websocket in", + "websocket out", + "websocket-listener", + "websocket-client" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/22-websocket.js" + }, + "tcpin": { + "name": "tcpin", + "types": [ + "tcp in", + "tcp out", + "tcp request" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/31-tcpin.js" + }, + "udp": { + "name": "udp", + "types": [ + "udp in", + "udp out" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/network/32-udp.js" + }, + "CSV": { + "name": "CSV", + "types": [ + "csv" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/parsers/70-CSV.js" + }, + "HTML": { + "name": "HTML", + "types": [ + "html" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/parsers/70-HTML.js" + }, + "JSON": { + "name": "JSON", + "types": [ + "json" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/parsers/70-JSON.js" + }, + "XML": { + "name": "XML", + "types": [ + "xml" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/parsers/70-XML.js" + }, + "YAML": { + "name": "YAML", + "types": [ + "yaml" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/parsers/70-YAML.js" + }, + "split": { + "name": "split", + "types": [ + "split", + "join" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/sequence/17-split.js" + }, + "sort": { + "name": "sort", + "types": [ + "sort" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/sequence/18-sort.js" + }, + "batch": { + "name": "batch", + "types": [ + "batch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/sequence/19-batch.js" + }, + "file": { + "name": "file", + "types": [ + "file", + "file in" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/storage/10-file.js" + }, + "watch": { + "name": "watch", + "types": [ + "watch" + ], + "enabled": true, + "local": false, + "user": false, + "module": "node-red", + "file": "/home/mrosero/devs/projects/webservices/node_modules/@node-red/nodes/core/storage/23-watch.js" + } + } + }, + "@nickcuper/node-red-contrib-html-pro": { + "name": "@nickcuper/node-red-contrib-html-pro", + "version": "1.0.1", + "local": true, + "user": true, + "nodes": { + "html-pro": { + "name": "html-pro", + "types": [ + "html-pro" + ], + "enabled": true, + "local": true, + "user": false, + "module": "@nickcuper/node-red-contrib-html-pro", + "file": "/home/mrosero/devs/projects/webservices/.node-red/node_modules/@nickcuper/node-red-contrib-html-pro/nodes/html-pro/index.js" + } + } + }, + "node-red-contrib-google-sheets-advance": { + "name": "node-red-contrib-google-sheets-advance", + "version": "0.0.7", + "local": true, + "user": true, + "nodes": { + "gSheetAdvance": { + "name": "gSheetAdvance", + "types": [ + "GSheetAdvance", + "gauthAdv" + ], + "enabled": true, + "local": true, + "user": false, + "module": "node-red-contrib-google-sheets-advance", + "file": "/home/mrosero/devs/projects/webservices/.node-red/node_modules/node-red-contrib-google-sheets-advance/gSheetAdvance.js" + } + } + } +} \ No newline at end of file diff --git a/.node-red/.config.runtime.json.backup b/.node-red/.config.runtime.json.backup new file mode 100644 index 0000000..154da98 --- /dev/null +++ b/.node-red/.config.runtime.json.backup @@ -0,0 +1,3 @@ +{ + "instanceId": "a202990288260eaa" +} \ No newline at end of file diff --git a/.node-red/.config.users.json.backup b/.node-red/.config.users.json.backup new file mode 100644 index 0000000..1671e35 --- /dev/null +++ b/.node-red/.config.users.json.backup @@ -0,0 +1,20 @@ +{ + "_": { + "editor": { + "view": { + "view-store-zoom": false, + "view-store-position": false, + "view-show-grid": true, + "view-snap-grid": true, + "view-grid-size": 20, + "view-node-status": true, + "view-node-show-label": true, + "view-show-tips": true, + "view-show-welcome-tours": true + }, + "tours": { + "welcome": "4.0.9-git" + } + } + } +} \ No newline at end of file diff --git a/.node-red/.flows_cred.json.backup b/.node-red/.flows_cred.json.backup new file mode 100644 index 0000000..66cc704 --- /dev/null +++ b/.node-red/.flows_cred.json.backup @@ -0,0 +1,3 @@ +{ + "$": "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" +} \ No newline at end of file diff --git a/.node-red/flows.json b/.node-red/flows.json index 17d35d5..bede561 100644 --- a/.node-red/flows.json +++ b/.node-red/flows.json @@ -2,9 +2,9 @@ { "id": "7f0acab470911e6e", "type": "tab", - "label": "Get Coops Panamá ", + "label": "Local Leads 507", "disabled": false, - "info": "### Fuente: IPCOOP", + "info": "", "env": [] }, { @@ -28,8 +28,8 @@ "topic": "", "payload": "", "payloadType": "date", - "x": 90, - "y": 80, + "x": 150, + "y": 100, "wires": [ [ "14d7e672986e5a93" @@ -52,8 +52,8 @@ "authType": "", "senderr": false, "headers": [], - "x": 240, - "y": 40, + "x": 160, + "y": 180, "wires": [ [ "8c2bc9a9303297a6" @@ -71,8 +71,8 @@ "ret": "html", "as": "multi", "chr": "_", - "x": 220, - "y": 180, + "x": 420, + "y": 40, "wires": [ [ "030626a963966e90" @@ -96,8 +96,8 @@ "returnArray": true } ], - "x": 480, - "y": 220, + "x": 560, + "y": 260, "wires": [ [ "b6385dfa3d13631a" @@ -116,8 +116,8 @@ "complete": "false", "statusVal": "", "statusType": "auto", - "x": 900, - "y": 360, + "x": 1060, + "y": 120, "wires": [] }, { @@ -132,7 +132,7 @@ "as": "multi", "chr": "_", "x": 420, - "y": 120, + "y": 180, "wires": [ [ "072f59e44c2a666e" @@ -151,8 +151,8 @@ "initialize": "", "finalize": "", "libs": [], - "x": 610, - "y": 380, + "x": 670, + "y": 40, "wires": [ [ "b4c01ef9959e3d46" @@ -175,8 +175,8 @@ "strings": true, "include_empty_strings": "", "include_null_values": "", - "x": 680, - "y": 60, + "x": 780, + "y": 200, "wires": [ [ "8bf7ab33a2355e9e" @@ -204,8 +204,8 @@ "reduceInit": "", "reduceInitType": "", "reduceFixup": "", - "x": 790, - "y": 160, + "x": 870, + "y": 120, "wires": [ [ "564ee299fea9449b" @@ -223,12 +223,236 @@ "createDir": false, "overwriteFile": "true", "encoding": "none", - "x": 860, - "y": 240, + "x": 1000, + "y": 40, "wires": [ [ "ef9384e43a31a072" ] ] + }, + { + "id": "d6845fd4ff25f851", + "type": "comment", + "z": "7f0acab470911e6e", + "name": "Cooperativas Leads", + "info": "### Fuente: IPCOOP", + "x": 110, + "y": 40, + "wires": [] + }, + { + "id": "df26defb28f7bf46", + "type": "file in", + "z": "7f0acab470911e6e", + "name": "Read Industrias (csv-raw)", + "filename": "/home/mrosero/Documentos/mercadeo/industria/mfg001_raw_507.csv", + "filenameType": "str", + "format": "lines", + "chunk": false, + "sendError": false, + "encoding": "none", + "allProps": true, + "x": 370, + "y": 400, + "wires": [ + [ + "f4f8079998fb73d5" + ] + ] + }, + { + "id": "144097555fbde30c", + "type": "inject", + "z": "7f0acab470911e6e", + "name": "Start", + "props": [ + { + "p": "payload" + }, + { + "p": "topic", + "vt": "str" + } + ], + "repeat": "", + "crontab": "", + "once": false, + "onceDelay": 0.1, + "topic": "", + "payload": "", + "payloadType": "date", + "x": 150, + "y": 460, + "wires": [ + [ + "df26defb28f7bf46" + ] + ] + }, + { + "id": "98fd8925d21c887b", + "type": "csv", + "z": "7f0acab470911e6e", + "name": "Set to CSV", + "spec": "rfc", + "sep": ",", + "hdrin": true, + "hdrout": "none", + "multi": "one", + "ret": "\\r\\n", + "temp": "", + "skip": "0", + "strings": true, + "include_empty_strings": true, + "include_null_values": false, + "x": 630, + "y": 480, + "wires": [ + [ + "29806b641ea02489" + ] + ] + }, + { + "id": "29806b641ea02489", + "type": "function", + "z": "7f0acab470911e6e", + "name": "Fix Data", + "func": "var productos = \"\"\nvar sector = \"\"\nvar instagram = \"\"\nvar facebook = \"\"\nvar website = \"\"\nvar email = \"\"\nvar contact = \"\"\nvar industry = []\n\nlet emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\nlet phoneRegex = /(\\+?\\d{1,4}[-.\\s]?)?(\\(?\\d{2,4}\\)?[-.\\s]?)?\\d{3,4}[-.\\s]?\\d{3,4}/g;\n \nif (msg.payload.Products.startsWith(\"Produce:\") ) {\n productos = msg.payload.Products.substring(9)\n}\n\nif (msg.payload.Products.startsWith(\"Sector:\") ) {\n sector=msg.payload['Products'].substring(8)\n}\n\nif (emailRegex.test(msg.payload['Female Employees Percentage'])) {\n email = msg.payload['Female Employees Percentage'];\n} \n\nif (emailRegex.test(msg.payload['Year Founded'])) {\n email = msg.payload['Year Founded'];\n}\n\nif (emailRegex.test(msg.payload['market'])) {\n email = msg.payload['market'];\n}\n\nif (emailRegex.test(msg.payload['Contact Information'])) {\n email = msg.payload['Contact Information'];\n}\n\nif (typeof msg.payload['email'] !== \"undefined\") {\n if (emailRegex.test(msg.payload['email'])) {\n email = msg.payload['email'];\n }\n}\n\nif (phoneRegex.test(msg.payload['Female Employees Percentage'])) {\n contact = msg.payload['Female Employees Percentage'];\n} \n\nif (phoneRegex.test(msg.payload['Year Founded'])) {\n contact = msg.payload['Year Founded'];\n}\n\nif (phoneRegex.test(msg.payload['market'])) {\n contact = msg.payload['market'];\n}\n\nif (typeof msg.payload['Contact Information'] !== \"undefined\") {\n if (phoneRegex.test(msg.payload['Contact Information'])) {\n contact = msg.payload['Contact Information'];\n }\n}\n\nif ( typeof msg.payload['Instagram Link'] !== \"undefined\" ) {\n if (msg.payload['Instagram Link'].search(\"instagram.com\") !== -1) {\n instagram = msg.payload['Instagram Link']\n } else if (msg.payload['Instagram Link'].search(\"facebook.com\") !== -1) {\n facebook = msg.payload['Instagram Link']\n } else {\n website = msg.payload['Instagram Link']\n }\n}\n\nif ( typeof msg.payload['Facebook Link'] !== \"undefined\" ) {\n if (msg.payload['Facebook Link'].search(\"instagram.com\") !== -1) {\n instagram = msg.payload['Facebook Link']\n } else if (msg.payload['Facebook Link'].search(\"facebook.com\") !== -1) {\n facebook = msg.payload['Facebook Link']\n } else {\n website = msg.payload['Facebook Link']\n }\n}\n\nindustry=[\n msg.payload['Position'],\n msg.payload['Company Name'].toLocaleUpperCase(),\n sector.replace(/\\b\\w+/g, word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()),\n productos.toLowerCase().replace(/(^|\\.\\s+)([a-z])/g, (match, sep, letter) => sep + letter.toUpperCase()),\n msg.payload['Company Size'],\n msg.payload['Number of Employees'],\n msg.payload['Location'],\n contact,\n email,\n website,\n instagram,\n facebook,\n msg.payload['Company Image'],\n]\n\nmsg.payload = industry;\nreturn msg;", + "outputs": 1, + "timeout": 0, + "noerr": 0, + "initialize": "", + "finalize": "", + "libs": [], + "x": 820, + "y": 440, + "wires": [ + [ + "5512e4f11e424bca" + ] + ] + }, + { + "id": "7d2cd39e7bcf1c60", + "type": "file", + "z": "7f0acab470911e6e", + "name": "Save industrias", + "filename": "/home/mrosero/Documentos/mercadeo/industria/mfg001_507.csv", + "filenameType": "str", + "appendNewline": false, + "createDir": false, + "overwriteFile": "false", + "encoding": "none", + "x": 860, + "y": 580, + "wires": [ + [ + "043fa26ea24c4a85" + ] + ] + }, + { + "id": "043fa26ea24c4a85", + "type": "debug", + "z": "7f0acab470911e6e", + "name": "debug 2", + "active": true, + "tosidebar": true, + "console": false, + "tostatus": false, + "complete": "false", + "statusVal": "", + "statusType": "auto", + "x": 1060, + "y": 440, + "wires": [] + }, + { + "id": "f4f8079998fb73d5", + "type": "switch", + "z": "7f0acab470911e6e", + "name": "Clean empty record", + "property": "payload", + "propertyType": "msg", + "rules": [ + { + "t": "nempty" + } + ], + "checkall": "true", + "repair": true, + "outputs": 1, + "x": 610, + "y": 400, + "wires": [ + [ + "d92b4c8ffab2ca69" + ] + ] + }, + { + "id": "5512e4f11e424bca", + "type": "csv", + "z": "7f0acab470911e6e", + "name": "", + "spec": "rfc", + "sep": ",", + "hdrin": "", + "hdrout": "none", + "multi": "mult", + "ret": "\\r\\n", + "temp": "", + "skip": "0", + "strings": false, + "include_empty_strings": false, + "include_null_values": "", + "x": 690, + "y": 620, + "wires": [ + [ + "7d2cd39e7bcf1c60" + ] + ] + }, + { + "id": "d92b4c8ffab2ca69", + "type": "join", + "z": "7f0acab470911e6e", + "name": "", + "mode": "auto", + "build": "string", + "property": "payload", + "propertyType": "msg", + "key": "topic", + "joiner": "\\n", + "joinerType": "str", + "useparts": false, + "accumulate": false, + "timeout": "", + "count": "", + "reduceRight": false, + "reduceExp": "", + "reduceInit": "", + "reduceInitType": "", + "reduceFixup": "", + "x": 430, + "y": 460, + "wires": [ + [ + "98fd8925d21c887b" + ] + ] + }, + { + "id": "d83575dc7c3a1a52", + "type": "comment", + "z": "7f0acab470911e6e", + "name": "Industrias Leads", + "info": "### Fuente: MICI - Directorio de Empresas", + "x": 100, + "y": 360, + "wires": [] } ] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e35c9b..cb60e7e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,19 @@ Todos los cambios notables en este proyecto se documentarán en este archivo. El formato está basado en [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), y este proyecto adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [0.4.0] - 2025-03-26 + +### Añadido +- Nuevo flujo "Industrias Leads" para procesamiento de datos de empresas manufactureras +- Funcionalidad de extracción inteligente de datos de contacto mediante expresiones regulares +- Normalización automática de información empresarial (productos, sectores, contactos) +- Documentación completa del nuevo flujo en README.md + +### Mejorado +- Renombrado del flujo "Get Coops Panamá" a "Cooperativas Leads" para mayor consistencia +- Organización visual de los nodos en los flujos para mejor comprensión +- Respaldo de archivos de configuración críticos (.config.nodes.json, .flows_cred.json, etc.) + ## [0.3.0] - 2025-03-25 ### Añadido @@ -38,6 +51,7 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.h - Licencia privativa (LICENSE.md) - Configuración inicial del repositorio +[0.4.0]: https://github.com/username/webservices/compare/v0.3.0...v0.4.0 [0.3.0]: https://github.com/username/webservices/compare/v0.2.0...v0.3.0 [0.2.0]: https://github.com/username/webservices/compare/v0.1.0...v0.2.0 [0.1.0]: https://github.com/username/webservices/releases/tag/v0.1.0 \ No newline at end of file diff --git a/README.md b/README.md index b503b4c..23f4edd 100644 --- a/README.md +++ b/README.md @@ -80,7 +80,7 @@ Acceda a la interfaz de Node-RED en: http://localhost:1880 ## 📊 Flujos Implementados -### Get Coops Panamá +### Cooperativas Leads Flujo automatizado para extraer información sobre cooperativas registradas en Panamá desde el sitio web oficial del IPACOOP. **Funcionalidad:** @@ -100,6 +100,31 @@ Flujo automatizado para extraer información sobre cooperativas registradas en P **Fuente de datos:** [IPACOOP - Listado de Cooperativas](https://ipacoop.gob.pa/listado-de-cooperativas-obligadas/) +### Industrias Leads +Flujo para procesar y normalizar datos de industrias manufactureras en Panamá. + +**Funcionalidad:** +- Lectura de datos desde archivo CSV crudo +- Limpieza y normalización de información +- Extracción inteligente de datos de contacto mediante expresiones regulares +- Estructuración de datos empresariales + +**Datos procesados:** +- Nombre de empresa +- Sector industrial +- Productos/servicios +- Tamaño de empresa +- Número de empleados +- Ubicación +- Información de contacto (teléfono, email) +- Presencia digital (sitio web, redes sociales) + +**Formato de salida:** +- Archivo CSV (mfg001_507.csv) +- Datos normalizados y estructurados para uso en mercadeo + +**Fuente de datos:** MICI - Directorio de Empresas (datos preexistentes) + ## 🔍 Prerrequisitos - Node.js 18.x o superior