[{"data":1,"prerenderedAt":1844},["ShallowReactive",2],{"nav-docs-es":3,"page-/es/docs/webspace/examples/realtime-gomoku":1156,"surround-/es/docs/webspace/examples/realtime-gomoku":1838,"raw-/es/docs/webspace/examples/realtime-gomoku":1841},[4,67,374,775,902,1074,1084,1109],{"title":5,"tags":6,"slug":6,"path":7,"stem":8,"children":9,"page":66,"sourcePath":7},"Primeros pasos con SpaceBuilder",null,"/getting-started","00.getting-started",[10,15,20,27,34,39,45,50,55,60],{"title":11,"path":12,"stem":13,"tags":6,"slug":14,"sourcePath":12},"Introducción a SpaceBuilder","/getting-started/overview","00.getting-started/00.overview","/getting-started/overview/",{"title":16,"path":17,"stem":18,"tags":6,"slug":19,"sourcePath":17},"Crear una cuenta de SetFN","/getting-started/create-setfn-account","00.getting-started/05.create-setfn-account","/getting-started/create-setfn-account/",{"title":21,"path":22,"stem":23,"tags":24,"slug":26,"sourcePath":22},"Instalación en Linux","/getting-started/install-linux","00.getting-started/10.install-linux",[25],"recommended","/getting-started/install-linux/",{"title":28,"path":29,"stem":30,"tags":31,"slug":33,"sourcePath":29},"Instalación con Docker","/getting-started/install-docker","00.getting-started/12.install-docker",[32],"preparing","/getting-started/install-docker/",{"title":35,"path":36,"stem":37,"tags":6,"slug":38,"sourcePath":36},"Instalación en Windows","/getting-started/install-windows","00.getting-started/14.install-windows","/getting-started/install-windows/",{"title":40,"path":41,"stem":42,"tags":43,"slug":44,"sourcePath":41},"Instalación en macOS","/getting-started/install-macos","00.getting-started/16.install-macos",[32],"/getting-started/install-macos/",{"title":46,"path":47,"stem":48,"tags":6,"slug":49,"sourcePath":47},"Configuración inicial","/getting-started/initial-setup","00.getting-started/20.initial-setup","/getting-started/initial-setup/",{"title":51,"path":52,"stem":53,"tags":6,"slug":54,"sourcePath":52},"Activar la licencia","/getting-started/license-activation","00.getting-started/30.license-activation","/getting-started/license-activation/",{"title":56,"path":57,"stem":58,"tags":6,"slug":59,"sourcePath":57},"Consultar la dirección de acceso (red local/interna)","/getting-started/access-url","00.getting-started/35.access-url","/getting-started/access-url/",{"title":61,"path":62,"stem":63,"tags":64,"slug":65,"sourcePath":62},"Elegir un método de acceso externo","/getting-started/access-domain","00.getting-started/40.access-domain",[25],"/getting-started/access-domain/",false,{"title":68,"tags":6,"slug":6,"path":69,"stem":70,"children":71,"page":66,"sourcePath":69},"Administración del espacio","/admin","10.admin",[72,92,162,197,249,274,289,299,339],{"title":73,"tags":6,"slug":6,"path":74,"stem":75,"children":76,"page":66,"sourcePath":74},"Inicio del administrador","/admin/home","10.admin/00.home",[77,82,87],{"title":78,"path":79,"stem":80,"tags":6,"slug":81,"sourcePath":79},"Acceder a la página de administración","/admin/home/admin-page-access","10.admin/00.home/00.admin-page-access","/admin/home/admin-page-access/",{"title":83,"path":69,"stem":84,"tags":6,"slug":85,"sourcePath":86},"Recorrer los menús de administración","10.admin/00.home/00.overview","/admin/","/admin/home/overview",{"title":88,"path":89,"stem":90,"tags":6,"slug":91,"sourcePath":89},"Gestión de licencias","/admin/home/license","10.admin/00.home/20.license","/admin/home/license/",{"title":93,"tags":6,"slug":6,"path":94,"stem":95,"children":96,"page":66,"sourcePath":94},"Gestión de usuarios","/admin/user-management","10.admin/10.user-management",[97,102,107,112,117,122,127,132,137,142,147,152,157],{"title":98,"path":99,"stem":100,"tags":6,"slug":101,"sourcePath":99},"Configurar la política de registro y los permisos predeterminados","/admin/user-management/signup-policy","10.admin/10.user-management/02.signup-policy","/admin/user-management/signup-policy/",{"title":103,"path":104,"stem":105,"tags":6,"slug":106,"sourcePath":104},"Registrar los términos de registro","/admin/user-management/signup-terms","10.admin/10.user-management/04.signup-terms","/admin/user-management/signup-terms/",{"title":108,"path":109,"stem":110,"tags":6,"slug":111,"sourcePath":109},"Crear una cuenta de usuario","/admin/user-management/invite-new-member","10.admin/10.user-management/10.invite-new-member","/admin/user-management/invite-new-member/",{"title":113,"path":114,"stem":115,"tags":6,"slug":116,"sourcePath":114},"Modificar una cuenta de usuario","/admin/user-management/edit-member","10.admin/10.user-management/11.edit-member","/admin/user-management/edit-member/",{"title":118,"path":119,"stem":120,"tags":6,"slug":121,"sourcePath":119},"Añadir un administrador","/admin/user-management/add-new-admin","10.admin/10.user-management/12.add-new-admin","/admin/user-management/add-new-admin/",{"title":123,"path":124,"stem":125,"tags":6,"slug":126,"sourcePath":124},"Gestión de equipos","/admin/user-management/team","10.admin/10.user-management/22.team","/admin/user-management/team/",{"title":128,"path":129,"stem":130,"tags":6,"slug":131,"sourcePath":129},"Gestión de niveles","/admin/user-management/level","10.admin/10.user-management/24.level","/admin/user-management/level/",{"title":133,"path":134,"stem":135,"tags":6,"slug":136,"sourcePath":134},"Consultar los registros de acceso","/admin/user-management/access-log","10.admin/10.user-management/30.access-log","/admin/user-management/access-log/",{"title":138,"path":139,"stem":140,"tags":6,"slug":141,"sourcePath":139},"Administrar dispositivos activos","/admin/user-management/active-devices","10.admin/10.user-management/31.active-devices","/admin/user-management/active-devices/",{"title":143,"path":144,"stem":145,"tags":6,"slug":146,"sourcePath":144},"Configurar las políticas de cuenta y seguridad","/admin/user-management/account-security","10.admin/10.user-management/32.account-security","/admin/user-management/account-security/",{"title":148,"path":149,"stem":150,"tags":6,"slug":151,"sourcePath":149},"Configurar CAPTCHA","/admin/user-management/captcha","10.admin/10.user-management/33.captcha","/admin/user-management/captcha/",{"title":153,"path":154,"stem":155,"tags":6,"slug":156,"sourcePath":154},"Configurar avisos a miembros","/admin/user-management/notice-settings","10.admin/10.user-management/34.notice-settings","/admin/user-management/notice-settings/",{"title":158,"path":159,"stem":160,"tags":6,"slug":161,"sourcePath":159},"Enviar un correo colectivo a los miembros","/admin/user-management/bulk-mail","10.admin/10.user-management/36.bulk-mail","/admin/user-management/bulk-mail/",{"title":163,"tags":6,"slug":6,"path":164,"stem":165,"children":166,"page":66,"sourcePath":164},"Configuración de servicios","/admin/service-config","10.admin/20.service-config",[167,172,177,182,187,192],{"title":168,"path":169,"stem":170,"tags":6,"slug":171,"sourcePath":169},"Configuración del área de archivos","/admin/service-config/file-area","10.admin/20.service-config/10.file-area","/admin/service-config/file-area/",{"title":173,"path":174,"stem":175,"tags":6,"slug":176,"sourcePath":174},"Configuración de webhooks","/admin/service-config/webhook-settings","10.admin/20.service-config/16.webhook-settings","/admin/service-config/webhook-settings/",{"title":178,"path":179,"stem":180,"tags":6,"slug":181,"sourcePath":179},"Configuración de la comunidad","/admin/service-config/community-space","10.admin/20.service-config/22.community-space","/admin/service-config/community-space/",{"title":183,"path":184,"stem":185,"tags":6,"slug":186,"sourcePath":184},"Configurar la política del chatbot de IA","/admin/service-config/community-ai-chatbot","10.admin/20.service-config/24.community-ai-chatbot","/admin/service-config/community-ai-chatbot/",{"title":188,"path":189,"stem":190,"tags":6,"slug":191,"sourcePath":189},"Configuración de correo","/admin/service-config/email-settings","10.admin/20.service-config/30.email-settings","/admin/service-config/email-settings/",{"title":193,"path":194,"stem":195,"tags":6,"slug":196,"sourcePath":194},"Configuración de marca","/admin/service-config/brand","10.admin/20.service-config/40.brand","/admin/service-config/brand/",{"title":198,"tags":6,"slug":6,"path":199,"stem":200,"children":201,"page":66,"sourcePath":199},"Servicios de conocimiento","/admin/knowledge","10.admin/30.knowledge",[202,207,214,219,224,229,234,239,244],{"title":203,"path":199,"stem":204,"tags":6,"slug":205,"sourcePath":206},"Introducción a los servicios de conocimiento","10.admin/30.knowledge/00.overview","/admin/knowledge/","/admin/knowledge/overview",{"title":208,"path":209,"stem":210,"children":211,"tags":6,"slug":213,"sourcePath":209},"Recopilación e indexación","/admin/knowledge/indexing","10.admin/30.knowledge/10.indexing",[212],{"title":208,"path":209,"stem":210,"tags":6,"slug":213,"sourcePath":209},"/admin/knowledge/indexing/",{"title":215,"path":216,"stem":217,"tags":6,"slug":218,"sourcePath":216},"Calidad e idioma de búsqueda","/admin/knowledge/search","10.admin/30.knowledge/20.search","/admin/knowledge/search/",{"title":220,"path":221,"stem":222,"tags":6,"slug":223,"sourcePath":221},"Almacenamiento de conocimiento","/admin/knowledge/storage","10.admin/30.knowledge/30.storage","/admin/knowledge/storage/",{"title":225,"path":226,"stem":227,"tags":6,"slug":228,"sourcePath":226},"Operar el almacenamiento de conocimiento","/admin/knowledge/storage-operations","10.admin/30.knowledge/32.storage-operations","/admin/knowledge/storage-operations/",{"title":230,"path":231,"stem":232,"tags":6,"slug":233,"sourcePath":231},"Conectar Qdrant","/admin/knowledge/qdrant","10.admin/30.knowledge/34.qdrant","/admin/knowledge/qdrant/",{"title":235,"path":236,"stem":237,"tags":6,"slug":238,"sourcePath":236},"Preparar un servidor Qdrant","/admin/knowledge/qdrant-server-setup","10.admin/30.knowledge/35.qdrant-server-setup","/admin/knowledge/qdrant-server-setup/",{"title":240,"path":241,"stem":242,"tags":6,"slug":243,"sourcePath":241},"Conectar Milvus","/admin/knowledge/milvus","10.admin/30.knowledge/36.milvus","/admin/knowledge/milvus/",{"title":245,"path":246,"stem":247,"tags":6,"slug":248,"sourcePath":246},"Búsqueda externa y fuentes","/admin/knowledge/web-search","10.admin/30.knowledge/40.web-search","/admin/knowledge/web-search/",{"title":250,"tags":6,"slug":6,"path":251,"stem":252,"children":253,"page":66,"sourcePath":251},"Servicios de IA","/admin/ai","10.admin/35.ai",[254,259,264,269],{"title":255,"path":251,"stem":256,"tags":6,"slug":257,"sourcePath":258},"Administrar los servicios de IA","10.admin/35.ai/00.overview","/admin/ai/","/admin/ai/overview",{"title":260,"path":261,"stem":262,"tags":6,"slug":263,"sourcePath":261},"Configurar modelos y entornos de ejecución","/admin/ai/models","10.admin/35.ai/10.models","/admin/ai/models/",{"title":265,"path":266,"stem":267,"tags":6,"slug":268,"sourcePath":266},"Configurar herramientas e integraciones","/admin/ai/integrations","10.admin/35.ai/20.integrations","/admin/ai/integrations/",{"title":270,"path":271,"stem":272,"tags":6,"slug":273,"sourcePath":271},"Administrar servidores MCP","/admin/ai/mcp","10.admin/35.ai/30.mcp","/admin/ai/mcp/",{"title":275,"tags":6,"slug":6,"path":276,"stem":277,"children":278,"page":66,"sourcePath":276},"Plugins","/admin/plugin","10.admin/40.plugin",[279,284],{"title":280,"path":281,"stem":282,"tags":6,"slug":283,"sourcePath":281},"Administrar plugins","/admin/plugin/overview","10.admin/40.plugin/00.overview","/admin/plugin/overview/",{"title":285,"path":286,"stem":287,"tags":6,"slug":288,"sourcePath":286},"Configurar plugins de extensión","/admin/plugin/settings","10.admin/40.plugin/10.settings","/admin/plugin/settings/",{"title":290,"path":291,"stem":292,"children":293,"page":66,"sourcePath":291},"Operations","/admin/operations","10.admin/45.operations",[294],{"title":295,"path":291,"stem":296,"tags":6,"slug":297,"sourcePath":298},"Consultar los registros de operaciones y auditoría","10.admin/45.operations/00.overview","/admin/operations/","/admin/operations/overview",{"title":300,"tags":6,"slug":6,"path":301,"stem":302,"children":303,"page":66,"sourcePath":301},"Seguridad","/admin/security","10.admin/50.security",[304,309,314,319,324,329,334],{"title":305,"path":306,"stem":307,"tags":6,"slug":308,"sourcePath":306},"Resumen de seguridad","/admin/security/overview","10.admin/50.security/00.overview","/admin/security/overview/",{"title":310,"path":311,"stem":312,"tags":6,"slug":313,"sourcePath":311},"Consultar el registro de actividad","/admin/security/audit-log","10.admin/50.security/05.audit-log","/admin/security/audit-log/",{"title":315,"path":316,"stem":317,"tags":6,"slug":318,"sourcePath":316},"Gestionar bloqueos","/admin/security/block-management","10.admin/50.security/10.block-management","/admin/security/block-management/",{"title":320,"path":321,"stem":322,"tags":6,"slug":323,"sourcePath":321},"Configurar la seguridad","/admin/security/security-setting","10.admin/50.security/12.security-setting","/admin/security/security-setting/",{"title":325,"path":326,"stem":327,"tags":6,"slug":328,"sourcePath":326},"Procesar dispositivos pendientes de aprobación","/admin/security/device-approvals","10.admin/50.security/14.device-approvals","/admin/security/device-approvals/",{"title":330,"path":331,"stem":332,"tags":6,"slug":333,"sourcePath":331},"Restringir el acceso por IP","/admin/security/ip-restriction","10.admin/50.security/16.ip-restriction","/admin/security/ip-restriction/",{"title":335,"path":336,"stem":337,"tags":6,"slug":338,"sourcePath":336},"Configurar la verificación en dos pasos para administradores","/admin/security/two-factor-auth","10.admin/50.security/18.two-factor-auth","/admin/security/two-factor-auth/",{"title":340,"tags":6,"slug":6,"path":341,"stem":342,"children":343,"page":66,"sourcePath":341},"Administración del sistema","/admin/system-admin","10.admin/60.system-admin",[344,349,354,359,364,369],{"title":345,"path":346,"stem":347,"tags":6,"slug":348,"sourcePath":346},"Consultar la información del dispositivo","/admin/system-admin/device-info","10.admin/60.system-admin/10.device-info","/admin/system-admin/device-info/",{"title":350,"path":351,"stem":352,"tags":6,"slug":353,"sourcePath":351},"Reiniciar y mantener el servidor","/admin/system-admin/server-restart","10.admin/60.system-admin/12.server-restart","/admin/system-admin/server-restart/",{"title":355,"path":356,"stem":357,"tags":6,"slug":358,"sourcePath":356},"Gestionar servicios en segundo plano","/admin/system-admin/background-service","10.admin/60.system-admin/14.background-service","/admin/system-admin/background-service/",{"title":360,"path":361,"stem":362,"tags":6,"slug":363,"sourcePath":361},"Actualizar SpaceBuilder","/admin/system-admin/update","10.admin/60.system-admin/16.update","/admin/system-admin/update/",{"title":365,"path":366,"stem":367,"tags":6,"slug":368,"sourcePath":366},"Desinstalar SpaceBuilder","/admin/system-admin/uninstall","10.admin/60.system-admin/18.uninstall","/admin/system-admin/uninstall/",{"title":370,"path":371,"stem":372,"tags":6,"slug":373,"sourcePath":371},"Migrar a otro servidor","/admin/system-admin/server-migration","10.admin/60.system-admin/20.server-migration","/admin/system-admin/server-migration/",{"title":375,"tags":6,"slug":6,"path":376,"stem":377,"children":378,"page":66,"sourcePath":376},"Uso de Workspace","/workspace","20.workspace",[379,419,439,523,662,718,754],{"title":380,"tags":6,"slug":6,"path":381,"stem":382,"children":383,"page":66,"sourcePath":381},"Menú","/workspace/menu","20.workspace/05.menu",[384,389,394,399,404,409,414],{"title":385,"path":386,"stem":387,"tags":6,"slug":388,"sourcePath":386},"Introducción al espacio de trabajo","/workspace/menu/overview","20.workspace/05.menu/00.overview","/workspace/menu/overview/",{"title":390,"path":391,"stem":392,"tags":6,"slug":393,"sourcePath":391},"Espacio de equipo","/workspace/menu/team-space","20.workspace/05.menu/05.team-space","/workspace/menu/team-space/",{"title":395,"path":396,"stem":397,"tags":6,"slug":398,"sourcePath":396},"Espacio de cliente","/workspace/menu/client-space","20.workspace/05.menu/06.client-space","/workspace/menu/client-space/",{"title":400,"path":401,"stem":402,"tags":6,"slug":403,"sourcePath":401},"Favoritos","/workspace/menu/favorites","20.workspace/05.menu/10.favorites","/workspace/menu/favorites/",{"title":405,"path":406,"stem":407,"tags":6,"slug":408,"sourcePath":406},"Documentos recientes","/workspace/menu/recent","20.workspace/05.menu/20.recent","/workspace/menu/recent/",{"title":410,"path":411,"stem":412,"tags":6,"slug":413,"sourcePath":411},"Uso compartido externo","/workspace/menu/external-share","20.workspace/05.menu/30.external-share","/workspace/menu/external-share/",{"title":415,"path":416,"stem":417,"tags":6,"slug":418,"sourcePath":416},"Papelera","/workspace/menu/trash","20.workspace/05.menu/40.trash","/workspace/menu/trash/",{"title":420,"tags":6,"slug":6,"path":421,"stem":422,"children":423,"page":66,"sourcePath":421},"Cuenta","/workspace/account","20.workspace/10.account",[424,429,434],{"title":425,"path":426,"stem":427,"tags":6,"slug":428,"sourcePath":426},"Registrarse e iniciar sesión","/workspace/account/signup","20.workspace/10.account/10.signup","/workspace/account/signup/",{"title":430,"path":431,"stem":432,"tags":6,"slug":433,"sourcePath":431},"Restablecer la contraseña","/workspace/account/reset-password","20.workspace/10.account/20.reset-password","/workspace/account/reset-password/",{"title":435,"path":436,"stem":437,"tags":6,"slug":438,"sourcePath":436},"Configuración de la cuenta","/workspace/account/account-settings","20.workspace/10.account/30.account-settings","/workspace/account/account-settings/",{"title":440,"tags":6,"slug":6,"path":441,"stem":442,"children":443,"page":66,"sourcePath":441},"Carpetas","/workspace/folder","20.workspace/20.folder",[444,449,454,459,464,471,476,481,486,491,496,501,506,511,518],{"title":445,"path":446,"stem":447,"tags":6,"slug":448,"sourcePath":446},"Funciones básicas de las carpetas","/workspace/folder/basic","20.workspace/20.folder/10.basic","/workspace/folder/basic/",{"title":450,"path":451,"stem":452,"tags":6,"slug":453,"sourcePath":451},"Crear varias carpetas a la vez","/workspace/folder/bulk-folder-creation","20.workspace/20.folder/12.bulk-folder-creation","/workspace/folder/bulk-folder-creation/",{"title":455,"path":456,"stem":457,"tags":6,"slug":458,"sourcePath":456},"Filtro","/workspace/folder/filter","20.workspace/20.folder/13.filter","/workspace/folder/filter/",{"title":460,"path":461,"stem":462,"tags":6,"slug":463,"sourcePath":461},"Configurar las opciones de vista de una carpeta","/workspace/folder/folder-view-options","20.workspace/20.folder/14.folder-view-options","/workspace/folder/folder-view-options/",{"title":465,"path":466,"stem":467,"tags":468,"slug":470,"sourcePath":466},"Usar una carpeta como tablón de anuncios","/workspace/folder/board-view","20.workspace/20.folder/15.board-view",[469],"hot","/workspace/folder/board-view/",{"title":472,"path":473,"stem":474,"tags":6,"slug":475,"sourcePath":473},"Vista web de una carpeta","/workspace/folder/folder-web-view","20.workspace/20.folder/16.folder-web-view","/workspace/folder/folder-web-view/",{"title":477,"path":478,"stem":479,"tags":6,"slug":480,"sourcePath":478},"Organizar carpetas","/workspace/folder/folder-organize","20.workspace/20.folder/17.folder-organize","/workspace/folder/folder-organize/",{"title":482,"path":483,"stem":484,"tags":6,"slug":485,"sourcePath":483},"Aviso de carpeta (README)","/workspace/folder/folder-readme","20.workspace/20.folder/18.folder-readme","/workspace/folder/folder-readme/",{"title":487,"path":488,"stem":489,"tags":6,"slug":490,"sourcePath":488},"Exportar listas de carpetas y archivos","/workspace/folder/folder-export","20.workspace/20.folder/20.folder-export","/workspace/folder/folder-export/",{"title":492,"path":493,"stem":494,"tags":6,"slug":495,"sourcePath":493},"Configurar permisos de acceso por nivel","/workspace/folder/level-access-permissions","20.workspace/20.folder/24.level-access-permissions","/workspace/folder/level-access-permissions/",{"title":497,"path":498,"stem":499,"tags":6,"slug":500,"sourcePath":498},"Configurar permisos de acceso por equipo","/workspace/folder/team-access-permissions","20.workspace/20.folder/26.team-access-permissions","/workspace/folder/team-access-permissions/",{"title":502,"path":503,"stem":504,"tags":6,"slug":505,"sourcePath":503},"Configurar reglas de archivos","/workspace/folder/file-rules","20.workspace/20.folder/28.file-rules","/workspace/folder/file-rules/",{"title":507,"path":508,"stem":509,"tags":6,"slug":510,"sourcePath":508},"Webhooks de carpeta","/workspace/folder/webhook","20.workspace/20.folder/30.webhook","/workspace/folder/webhook/",{"title":512,"path":513,"stem":514,"children":515,"tags":6,"slug":517,"sourcePath":513},"Configurar el índice de conocimiento de una carpeta","/workspace/folder/knowledge-index","20.workspace/20.folder/32.knowledge-index",[516],{"title":512,"path":513,"stem":514,"tags":6,"slug":517,"sourcePath":513},"/workspace/folder/knowledge-index/",{"title":519,"path":520,"stem":521,"tags":6,"slug":522,"sourcePath":520},"Carpeta de automatización del trabajo","/workspace/folder/automation","20.workspace/20.folder/40.automation","/workspace/folder/automation/",{"title":524,"tags":6,"slug":6,"path":525,"stem":526,"children":527,"page":66,"sourcePath":525},"Archivos","/workspace/file","20.workspace/30.file",[528,533,538,543,548,553,558,563,568,573,578,583,588,593,598,603,608,613,618,623,628,633,637,642,647,652,657],{"title":529,"path":530,"stem":531,"tags":6,"slug":532,"sourcePath":530},"Funciones básicas de gestión de archivos","/workspace/file/overview","20.workspace/30.file/00.overview","/workspace/file/overview/",{"title":534,"path":535,"stem":536,"tags":6,"slug":537,"sourcePath":535},"Consultar la lista mientras ve un archivo","/workspace/file/list-in-file","20.workspace/30.file/05.list-in-file","/workspace/file/list-in-file/",{"title":539,"path":540,"stem":541,"tags":6,"slug":542,"sourcePath":540},"Ver y editar archivos Markdown y de texto","/workspace/file/text-file-viewer","20.workspace/30.file/10.text-file-viewer","/workspace/file/text-file-viewer/",{"title":544,"path":545,"stem":546,"tags":6,"slug":547,"sourcePath":545},"Ver archivos HTML","/workspace/file/html-viewer","20.workspace/30.file/11.html-viewer","/workspace/file/html-viewer/",{"title":549,"path":550,"stem":551,"tags":6,"slug":552,"sourcePath":550},"Ver y editar archivos CSV","/workspace/file/csv-viewer","20.workspace/30.file/12.csv-viewer","/workspace/file/csv-viewer/",{"title":554,"path":555,"stem":556,"tags":6,"slug":557,"sourcePath":555},"Ver archivos de imagen y vídeo","/workspace/file/image-file-viewer","20.workspace/30.file/13.image-file-viewer","/workspace/file/image-file-viewer/",{"title":559,"path":560,"stem":561,"tags":6,"slug":562,"sourcePath":560},"Ver archivos de Office y PDF","/workspace/file/office-viewer","20.workspace/30.file/14.office-viewer","/workspace/file/office-viewer/",{"title":564,"path":565,"stem":566,"tags":6,"slug":567,"sourcePath":565},"Pegar páginas web (HTML)","/workspace/file/paste-html","20.workspace/30.file/20.paste-html","/workspace/file/paste-html/",{"title":569,"path":570,"stem":571,"tags":6,"slug":572,"sourcePath":570},"Pegar capturas de pantalla","/workspace/file/paste-screenshot","20.workspace/30.file/21.paste-screenshot","/workspace/file/paste-screenshot/",{"title":574,"path":575,"stem":576,"tags":6,"slug":577,"sourcePath":575},"Pegar Markdown (MD)","/workspace/file/paste-md","20.workspace/30.file/22.paste-md","/workspace/file/paste-md/",{"title":579,"path":580,"stem":581,"tags":6,"slug":582,"sourcePath":580},"Grabar la pantalla","/workspace/file/screen-recording","20.workspace/30.file/23.screen-recording","/workspace/file/screen-recording/",{"title":584,"path":585,"stem":586,"tags":6,"slug":587,"sourcePath":585},"Nota rápida","/workspace/file/quick-note","20.workspace/30.file/24.quick-note","/workspace/file/quick-note/",{"title":589,"path":590,"stem":591,"tags":6,"slug":592,"sourcePath":590},"Etiquetas de archivo","/workspace/file/file-tag","20.workspace/30.file/33.file-tag","/workspace/file/file-tag/",{"title":594,"path":595,"stem":596,"tags":6,"slug":597,"sourcePath":595},"Cambiar nombres de archivos en bloque","/workspace/file/bulk-name-revise","20.workspace/30.file/34.bulk-name-revise","/workspace/file/bulk-name-revise/",{"title":599,"path":600,"stem":601,"tags":6,"slug":602,"sourcePath":600},"Conversión de archivos","/workspace/file/file-convert-overview","20.workspace/30.file/40.file-convert-overview","/workspace/file/file-convert-overview/",{"title":604,"path":605,"stem":606,"tags":6,"slug":607,"sourcePath":605},"Archivos de plantilla","/workspace/file/templates","20.workspace/30.file/41.templates","/workspace/file/templates/",{"title":609,"path":610,"stem":611,"tags":6,"slug":612,"sourcePath":610},"Lista de tareas (Todo)","/workspace/file/template-todo","20.workspace/30.file/42.template-todo","/workspace/file/template-todo/",{"title":614,"path":615,"stem":616,"tags":6,"slug":617,"sourcePath":615},"Formulario de aprobación","/workspace/file/template-approval","20.workspace/30.file/43.template-approval","/workspace/file/template-approval/",{"title":619,"path":620,"stem":621,"tags":6,"slug":622,"sourcePath":620},"Tablero Kanban","/workspace/file/template-kanban","20.workspace/30.file/44.template-kanban","/workspace/file/template-kanban/",{"title":624,"path":625,"stem":626,"tags":6,"slug":627,"sourcePath":625},"Cronología","/workspace/file/template-timeline","20.workspace/30.file/45.template-timeline","/workspace/file/template-timeline/",{"title":629,"path":630,"stem":631,"tags":6,"slug":632,"sourcePath":630},"Bloc de notas","/workspace/file/template-memo","20.workspace/30.file/46.template-memo","/workspace/file/template-memo/",{"title":634,"path":635,"stem":636,"tags":6,"slug":635,"sourcePath":635},"Archivo de chat con AI","/workspace/file/ai-chat-file","20.workspace/30.file/47.ai-chat-file",{"title":638,"path":639,"stem":640,"tags":6,"slug":641,"sourcePath":639},"Consultar el registro de cambios del archivo","/workspace/file/audit-trail","20.workspace/30.file/50.audit-trail","/workspace/file/audit-trail/",{"title":643,"path":644,"stem":645,"tags":6,"slug":646,"sourcePath":644},"Control de versiones de archivos","/workspace/file/version-trail","20.workspace/30.file/51.version-trail","/workspace/file/version-trail/",{"title":648,"path":649,"stem":650,"tags":6,"slug":651,"sourcePath":649},"Bloqueo de edición","/workspace/file/file-lock","20.workspace/30.file/52.file-lock","/workspace/file/file-lock/",{"title":653,"path":654,"stem":655,"tags":6,"slug":656,"sourcePath":654},"Cifrado de archivos","/workspace/file/file-encrypt","20.workspace/30.file/53.file-encrypt","/workspace/file/file-encrypt/",{"title":658,"path":659,"stem":660,"tags":6,"slug":661,"sourcePath":659},"Registrar archivos del disco","/workspace/file/disk-file-registration","20.workspace/30.file/60.disk-file-registration","/workspace/file/disk-file-registration/",{"title":663,"tags":6,"slug":6,"path":664,"stem":665,"children":666,"page":66,"sourcePath":664},"Colaboración","/workspace/cooperation","20.workspace/35.cooperation",[667,672,677,682,687,692,697,702,707,713],{"title":668,"path":669,"stem":670,"tags":6,"slug":671,"sourcePath":669},"Comentarios en archivos y carpetas","/workspace/cooperation/file-comments","20.workspace/35.cooperation/00.file-comments","/workspace/cooperation/file-comments/",{"title":673,"path":674,"stem":675,"tags":6,"slug":676,"sourcePath":674},"Chat","/workspace/cooperation/chat","20.workspace/35.cooperation/10.chat","/workspace/cooperation/chat/",{"title":678,"path":679,"stem":680,"tags":6,"slug":681,"sourcePath":679},"Chat colaborativo y bloqueo de edición","/workspace/cooperation/collaboration-chat","20.workspace/35.cooperation/11.collaboration-chat","/workspace/cooperation/collaboration-chat/",{"title":683,"path":684,"stem":685,"tags":6,"slug":686,"sourcePath":684},"Seguir la ubicación de un miembro del equipo","/workspace/cooperation/follow-team-location","20.workspace/35.cooperation/12.follow-team-location","/workspace/cooperation/follow-team-location/",{"title":688,"path":689,"stem":690,"tags":6,"slug":691,"sourcePath":689},"Menciones","/workspace/cooperation/mention","20.workspace/35.cooperation/14.mention","/workspace/cooperation/mention/",{"title":693,"path":694,"stem":695,"tags":6,"slug":696,"sourcePath":694},"Mensajes directos","/workspace/cooperation/dm","20.workspace/35.cooperation/16.dm","/workspace/cooperation/dm/",{"title":698,"path":699,"stem":700,"tags":6,"slug":701,"sourcePath":699},"Archivo de notificaciones","/workspace/cooperation/notification-inbox","20.workspace/35.cooperation/18.notification-inbox","/workspace/cooperation/notification-inbox/",{"title":703,"path":704,"stem":705,"tags":6,"slug":706,"sourcePath":704},"Consultar la actividad del equipo","/workspace/cooperation/file-activity","20.workspace/35.cooperation/30.file-activity","/workspace/cooperation/file-activity/",{"title":708,"path":709,"stem":710,"tags":711,"slug":712,"sourcePath":709},"Crear un enlace para compartir externamente","/workspace/cooperation/share-link-creation","20.workspace/35.cooperation/40.share-link-creation",[469],"/workspace/cooperation/share-link-creation/",{"title":714,"path":715,"stem":716,"tags":6,"slug":717,"sourcePath":715},"Enviar un enlace compartido por correo","/workspace/cooperation/share-link-email","20.workspace/35.cooperation/42.share-link-email","/workspace/cooperation/share-link-email/",{"title":719,"tags":6,"slug":6,"path":720,"stem":721,"children":722,"page":66,"sourcePath":720},"Búsqueda","/workspace/search","20.workspace/40.search",[723,728,734,739,744,749],{"title":724,"path":725,"stem":726,"tags":6,"slug":727,"sourcePath":725},"Buscar archivos","/workspace/search/search","20.workspace/40.search/00.search","/workspace/search/search/",{"title":729,"path":730,"stem":731,"tags":732,"slug":733,"sourcePath":730},"Búsqueda contextual (búsqueda con AI)","/workspace/search/context-search","20.workspace/40.search/10.context-search",[469],"/workspace/search/context-search/",{"title":735,"path":736,"stem":737,"tags":6,"slug":738,"sourcePath":736},"Buscar imágenes","/workspace/search/image-search","20.workspace/40.search/20.image-search","/workspace/search/image-search/",{"title":740,"path":741,"stem":742,"tags":6,"slug":743,"sourcePath":741},"Buscar en el chat","/workspace/search/chat-search","20.workspace/40.search/30.chat-search","/workspace/search/chat-search/",{"title":745,"path":746,"stem":747,"tags":6,"slug":748,"sourcePath":746},"Buscar comentarios","/workspace/search/comment-search","20.workspace/40.search/40.comment-search","/workspace/search/comment-search/",{"title":750,"path":751,"stem":752,"tags":6,"slug":753,"sourcePath":751},"Buscar sinónimos","/workspace/search/synonym-search","20.workspace/40.search/50.synonym-search","/workspace/search/synonym-search/",{"title":755,"tags":6,"slug":6,"path":756,"stem":757,"children":758,"page":66,"sourcePath":756},"IA","/workspace/ai","20.workspace/50.ai",[759,764,770],{"title":760,"path":761,"stem":762,"tags":6,"slug":763,"sourcePath":761},"Resumen de funciones de AI","/workspace/ai/overview","20.workspace/50.ai/00.overview","/workspace/ai/overview/",{"title":765,"path":766,"stem":767,"tags":768,"slug":769,"sourcePath":766},"Solicitar tareas a la AI local","/workspace/ai/ai-work","20.workspace/50.ai/10.ai-work",[469],"/workspace/ai/ai-work/",{"title":771,"path":772,"stem":773,"tags":6,"slug":774,"sourcePath":772},"Usar una AI externa","/workspace/ai/external-ai","20.workspace/50.ai/20.external-ai","/workspace/ai/external-ai/",{"title":776,"tags":6,"slug":6,"path":777,"stem":778,"children":779,"page":66,"sourcePath":777},"Webspace","/webspace","40.webspace",[780,785,790,795,800,805,811,816,821,826,831,866],{"title":781,"path":782,"stem":783,"tags":6,"slug":784,"sourcePath":782},"¿Qué es Webspace?","/webspace/overview","40.webspace/00.overview","/webspace/overview/",{"title":786,"path":787,"stem":788,"tags":6,"slug":789,"sourcePath":787},"Desplegar un sitio web","/webspace/website-release","40.webspace/10.website-release","/webspace/website-release/",{"title":791,"path":792,"stem":793,"tags":6,"slug":794,"sourcePath":792},"Crear un archivo de esquema (.sfn)","/webspace/create-database","40.webspace/20.create-database","/webspace/create-database/",{"title":796,"path":797,"stem":798,"tags":6,"slug":799,"sourcePath":797},"Crear API y desplegar una base de datos","/webspace/api-overview","40.webspace/24.api-overview","/webspace/api-overview/",{"title":801,"path":802,"stem":803,"tags":6,"slug":804,"sourcePath":802},"Consultar el ejemplo de frontend","/webspace/frontend-example","40.webspace/26.frontend-example","/webspace/frontend-example/",{"title":806,"path":807,"stem":808,"tags":809,"slug":810,"sourcePath":807},"Crear un servicio web interno para el equipo","/webspace/internal-webservice","40.webspace/32.internal-webservice",[469],"/webspace/internal-webservice/",{"title":812,"path":813,"stem":814,"tags":6,"slug":815,"sourcePath":813},"Crear un servicio web de acceso público","/webspace/external-webservice","40.webspace/34.external-webservice","/webspace/external-webservice/",{"title":817,"path":818,"stem":819,"tags":6,"slug":820,"sourcePath":818},"Importar y exportar SQL","/webspace/sql-converter","40.webspace/42.sql-converter","/webspace/sql-converter/",{"title":822,"path":823,"stem":824,"tags":6,"slug":825,"sourcePath":823},"Convertir un esquema en código","/webspace/code-converter","40.webspace/44.code-converter","/webspace/code-converter/",{"title":827,"path":828,"stem":829,"tags":6,"slug":830,"sourcePath":828},"Rendimiento y escalado","/webspace/performance","40.webspace/48.performance","/webspace/performance/",{"title":832,"tags":6,"slug":6,"path":833,"stem":834,"children":835,"page":66,"sourcePath":833},"Administración de Webspace","/webspace/admin","40.webspace/50.admin",[836,841,846,851,856,861],{"title":837,"path":838,"stem":839,"tags":6,"slug":840,"sourcePath":838},"Empezar a administrar Webspace","/webspace/admin/overview","40.webspace/50.admin/00.overview","/webspace/admin/overview/",{"title":842,"path":843,"stem":844,"tags":6,"slug":845,"sourcePath":843},"Operaciones","/webspace/admin/operations","40.webspace/50.admin/10.operations","/webspace/admin/operations/",{"title":847,"path":848,"stem":849,"tags":6,"slug":850,"sourcePath":848},"Acceso al espacio de trabajo","/webspace/admin/workspace-access","40.webspace/50.admin/20.workspace-access","/webspace/admin/workspace-access/",{"title":852,"path":853,"stem":854,"tags":6,"slug":855,"sourcePath":853},"Seguridad de API y sitios","/webspace/admin/api-site-security","40.webspace/50.admin/30.api-site-security","/webspace/admin/api-site-security/",{"title":857,"path":858,"stem":859,"tags":6,"slug":860,"sourcePath":858},"Servicios y capacidad","/webspace/admin/service-capacity","40.webspace/50.admin/40.service-capacity","/webspace/admin/service-capacity/",{"title":862,"path":863,"stem":864,"tags":6,"slug":865,"sourcePath":863},"Gestión de despliegues y versiones de frontend","/webspace/admin/deployments","40.webspace/50.admin/50.deployments","/webspace/admin/deployments/",{"title":867,"tags":868,"slug":6,"path":869,"stem":870,"children":871,"page":66,"sourcePath":869},"Ejemplos de Webspace",[469],"/webspace/examples","40.webspace/60.examples",[872,876,881,887,892,897],{"title":867,"path":869,"stem":873,"tags":6,"slug":874,"sourcePath":875},"40.webspace/60.examples/00.overview","/webspace/examples/","/webspace/examples/overview",{"title":877,"path":878,"stem":879,"tags":6,"slug":880,"sourcePath":878},"Crear su propio sistema empresarial","/webspace/examples/my-own-system","40.webspace/60.examples/10.my-own-system","/webspace/examples/my-own-system/",{"title":882,"path":883,"stem":884,"tags":885,"slug":886,"sourcePath":883},"Crear un juego de Gomoku en tiempo real","/webspace/examples/realtime-gomoku","40.webspace/60.examples/20.realtime-gomoku",[469],"/webspace/examples/realtime-gomoku/",{"title":888,"path":889,"stem":890,"tags":6,"slug":891,"sourcePath":889},"Crear un tablón de recursos con archivos de una carpeta","/webspace/examples/folder-board","40.webspace/60.examples/30.folder-board","/webspace/examples/folder-board/",{"title":893,"path":894,"stem":895,"tags":6,"slug":896,"sourcePath":894},"Crear una incursión cooperativa contra un monstruo","/webspace/examples/monster-raid","40.webspace/60.examples/40.monster-raid","/webspace/examples/monster-raid/",{"title":898,"path":899,"stem":900,"tags":6,"slug":901,"sourcePath":899},"Desplegar un ejemplo de chat de asistencia con AI","/webspace/examples/ai-support-chat","40.webspace/60.examples/50.ai-support-chat","/webspace/examples/ai-support-chat/",{"title":903,"tags":6,"slug":6,"path":904,"stem":905,"children":906,"page":66,"sourcePath":904},"Uso de plugins","/plugin","50.plugin",[907,912,932,993,1014,1049],{"title":908,"path":909,"stem":910,"tags":6,"slug":911,"sourcePath":909},"Introducción a los plugins","/plugin/overview","50.plugin/00.overview","/plugin/overview/",{"title":913,"tags":6,"slug":6,"path":914,"stem":915,"children":916,"page":66,"sourcePath":914},"Calendario","/plugin/calendar","50.plugin/10.calendar",[917,922,927],{"title":918,"path":919,"stem":920,"tags":6,"slug":921,"sourcePath":919},"Introducción a Calendar","/plugin/calendar/overview","50.plugin/10.calendar/00.overview","/plugin/calendar/overview/",{"title":923,"path":924,"stem":925,"tags":6,"slug":926,"sourcePath":924},"Crear, editar y eliminar eventos","/plugin/calendar/create-event","50.plugin/10.calendar/10.create-event","/plugin/calendar/create-event/",{"title":928,"path":929,"stem":930,"tags":6,"slug":931,"sourcePath":929},"Consultar el historial de actividad","/plugin/calendar/file-activity","50.plugin/10.calendar/40.file-activity","/plugin/calendar/file-activity/",{"title":933,"tags":6,"slug":6,"path":934,"stem":935,"children":936,"page":66,"sourcePath":934},"Correo electrónico","/plugin/email","50.plugin/20.email",[937,942,947,952,957,963,968,973,978,983,988],{"title":938,"path":939,"stem":940,"tags":6,"slug":941,"sourcePath":939},"Introducción a Email","/plugin/email/overview","50.plugin/20.email/00.overview","/plugin/email/overview/",{"title":943,"path":944,"stem":945,"tags":6,"slug":946,"sourcePath":944},"Configurar Email","/plugin/email/setfn-email-setting","50.plugin/20.email/05.setfn-email-setting","/plugin/email/setfn-email-setting/",{"title":948,"path":949,"stem":950,"tags":6,"slug":951,"sourcePath":949},"Conectar una cuenta de correo externa","/plugin/email/external-email","50.plugin/20.email/07.external-email","/plugin/email/external-email/",{"title":953,"path":954,"stem":955,"tags":6,"slug":956,"sourcePath":954},"Funciones básicas de Email","/plugin/email/email-basic","50.plugin/20.email/10.email-basic","/plugin/email/email-basic/",{"title":958,"path":959,"stem":960,"tags":6,"slug":961,"sourcePath":962},"Usar Email AI Assistant","/plugin/email/ai-assistant","50.plugin/20.email/15.email-ai-assistant","/plugin/email/ai-assistant/","/plugin/email/email-ai-assistant",{"title":964,"path":965,"stem":966,"tags":6,"slug":967,"sourcePath":965},"Redactar y enviar mensajes","/plugin/email/email-compose","50.plugin/20.email/20.email-compose","/plugin/email/email-compose/",{"title":969,"path":970,"stem":971,"tags":6,"slug":972,"sourcePath":970},"Adjuntar archivos","/plugin/email/email-attachment","50.plugin/20.email/30.email-attachment","/plugin/email/email-attachment/",{"title":974,"path":975,"stem":976,"tags":6,"slug":977,"sourcePath":975},"Gestionar carpetas de correo","/plugin/email/email-folders","50.plugin/20.email/40.email-folders","/plugin/email/email-folders/",{"title":979,"path":980,"stem":981,"tags":6,"slug":982,"sourcePath":980},"Clasificar mensajes automáticamente","/plugin/email/email-auto-classify","50.plugin/20.email/50.email-auto-classify","/plugin/email/email-auto-classify/",{"title":984,"path":985,"stem":986,"tags":6,"slug":987,"sourcePath":985},"Archivar y compartir mensajes en File Space","/plugin/email/email-open-in-space","50.plugin/20.email/60.email-open-in-space","/plugin/email/email-open-in-space/",{"title":989,"path":990,"stem":991,"tags":6,"slug":992,"sourcePath":990},"Seguridad de Email","/plugin/email/email-security","50.plugin/20.email/70.email-security","/plugin/email/email-security/",{"title":994,"tags":6,"slug":6,"path":995,"stem":996,"children":997,"page":66,"sourcePath":995},"Flujos de trabajo (automatización)","/plugin/workflow","50.plugin/30.workflow",[998,1003,1009],{"title":999,"path":1000,"stem":1001,"tags":6,"slug":1002,"sourcePath":1000},"Introducción a Workflow","/plugin/workflow/overview","50.plugin/30.workflow/00.overview","/plugin/workflow/overview/",{"title":1004,"path":1005,"stem":1006,"tags":1007,"slug":1008,"sourcePath":1005},"Crear un workflow","/plugin/workflow/new-workflow","50.plugin/30.workflow/10.new-workflow",[469],"/plugin/workflow/new-workflow/",{"title":1010,"path":1011,"stem":1012,"tags":6,"slug":1013,"sourcePath":1011},"Consultar el historial de ejecución","/plugin/workflow/execution-history","50.plugin/30.workflow/20.execution-history","/plugin/workflow/execution-history/",{"title":1015,"tags":6,"slug":6,"path":1016,"stem":1017,"children":1018,"page":66,"sourcePath":1016},"Fine-Tuning (entrenamiento de IA)","/plugin/fine-tuning","50.plugin/40.fine-tuning",[1019,1024,1029,1034,1039,1044],{"title":1020,"path":1021,"stem":1022,"tags":6,"slug":1023,"sourcePath":1021},"Introducción a Fine-tuning","/plugin/fine-tuning/overview","50.plugin/40.fine-tuning/00.overview","/plugin/fine-tuning/overview/",{"title":1025,"path":1026,"stem":1027,"tags":6,"slug":1028,"sourcePath":1026},"Preprocesar datos de entrenamiento","/plugin/fine-tuning/pre-processing","50.plugin/40.fine-tuning/10.pre-processing","/plugin/fine-tuning/pre-processing/",{"title":1030,"path":1031,"stem":1032,"tags":6,"slug":1033,"sourcePath":1031},"Entrenar","/plugin/fine-tuning/training","50.plugin/40.fine-tuning/20.training","/plugin/fine-tuning/training/",{"title":1035,"path":1036,"stem":1037,"tags":6,"slug":1038,"sourcePath":1036},"Evaluar","/plugin/fine-tuning/evaluation","50.plugin/40.fine-tuning/30.evaluation","/plugin/fine-tuning/evaluation/",{"title":1040,"path":1041,"stem":1042,"tags":6,"slug":1043,"sourcePath":1041},"Probar el chat","/plugin/fine-tuning/chat-test","50.plugin/40.fine-tuning/40.chat-test","/plugin/fine-tuning/chat-test/",{"title":1045,"path":1046,"stem":1047,"tags":6,"slug":1048,"sourcePath":1046},"Exportar","/plugin/fine-tuning/export","50.plugin/40.fine-tuning/50.export","/plugin/fine-tuning/export/",{"title":1050,"tags":6,"slug":6,"path":1051,"stem":1052,"children":1053,"page":66,"sourcePath":1051},"EDC (recopilación de datos)","/plugin/edc","50.plugin/50.edc",[1054,1059,1064,1069],{"title":1055,"path":1056,"stem":1057,"tags":6,"slug":1058,"sourcePath":1056},"Introducción a EDC","/plugin/edc/overview","50.plugin/50.edc/00.overview","/plugin/edc/overview/",{"title":1060,"path":1061,"stem":1062,"tags":6,"slug":1063,"sourcePath":1061},"Introducir datos y consultar Audit Trail","/plugin/edc/data-entry","50.plugin/50.edc/10.data-entry","/plugin/edc/data-entry/",{"title":1065,"path":1066,"stem":1067,"tags":6,"slug":1068,"sourcePath":1066},"Builder","/plugin/edc/builder","50.plugin/50.edc/20.builder","/plugin/edc/builder/",{"title":1070,"path":1071,"stem":1072,"tags":6,"slug":1073,"sourcePath":1071},"Configurar usuarios y centros","/plugin/edc/account","50.plugin/50.edc/30.account","/plugin/edc/account/",{"title":1075,"tags":6,"slug":6,"path":1076,"stem":1077,"children":1078,"page":66,"sourcePath":1076},"Herramienta de línea de comandos","/cli","90.cli",[1079],{"title":1080,"path":1081,"stem":1082,"tags":6,"slug":1083,"sourcePath":1081},"Administrar el servidor mediante comandos","/cli/commands","90.cli/10.commands","/cli/commands/",{"title":1085,"tags":6,"slug":6,"path":1086,"stem":1087,"children":1088,"page":66,"sourcePath":1086},"Actualizaciones de seguridad","/security-updates","95.security-updates",[1089,1094,1099,1104],{"title":1090,"path":1091,"stem":1092,"tags":6,"slug":1093,"sourcePath":1091},"Conocer las revisiones de seguridad y el método de actualización","/security-updates/overview","95.security-updates/00.overview","/security-updates/overview/",{"title":1095,"path":1096,"stem":1097,"tags":6,"slug":1098,"sourcePath":1096},"Registro de revisiones de seguridad","/security-updates/review-log","95.security-updates/10.review-log","/security-updates/review-log/",{"title":1100,"path":1101,"stem":1102,"tags":6,"slug":1103,"sourcePath":1101},"Estado de revisión de las principales vulnerabilidades","/security-updates/vulnerability-status","95.security-updates/20.vulnerability-status","/security-updates/vulnerability-status/",{"title":1105,"path":1106,"stem":1107,"tags":6,"slug":1108,"sourcePath":1106},"Comprobar las actualizaciones de seguridad del servidor","/security-updates/server-checklist","95.security-updates/30.server-checklist","/security-updates/server-checklist/",{"title":1110,"tags":6,"slug":6,"path":1111,"stem":1112,"children":1113,"page":66,"sourcePath":1111},"Preguntas frecuentes","/faq","99.FAQ",[1114,1120,1126,1132,1138,1144,1150],{"title":1115,"path":1116,"stem":1117,"tags":6,"slug":1118,"sourcePath":1119},"Comparación entre SetFN y los servicios en la nube","/FAQ/comparison-cloud","99.FAQ/10.comparison-cloud","/FAQ/comparison-cloud/","/faq/comparison-cloud",{"title":1121,"path":1122,"stem":1123,"tags":6,"slug":1124,"sourcePath":1125},"Comparación entre SetFN y NAS","/FAQ/comparison-nas","99.FAQ/20.comparison-nas","/FAQ/comparison-nas/","/faq/comparison-nas",{"title":1127,"path":1128,"stem":1129,"tags":6,"slug":1130,"sourcePath":1131},"Política de seguridad","/FAQ/security-policy","99.FAQ/30.security-policy","/FAQ/security-policy/","/faq/security-policy",{"title":1133,"path":1134,"stem":1135,"tags":6,"slug":1136,"sourcePath":1137},"Por qué SetFN es rápido","/FAQ/why-fast","99.FAQ/40.why-fast","/FAQ/why-fast/","/faq/why-fast",{"title":1139,"path":1140,"stem":1141,"tags":6,"slug":1142,"sourcePath":1143},"Preguntas sobre licencias","/FAQ/license-faq","99.FAQ/50.license-faq","/FAQ/license-faq/","/faq/license-faq",{"title":1145,"path":1146,"stem":1147,"tags":6,"slug":1148,"sourcePath":1149},"Preguntas sobre funciones de AI","/FAQ/ai-faq","99.FAQ/60.ai-faq","/FAQ/ai-faq/","/faq/ai-faq",{"title":1151,"path":1152,"stem":1153,"tags":6,"slug":1154,"sourcePath":1155},"Solución de problemas","/FAQ/troubleshooting","99.FAQ/70.troubleshooting","/FAQ/troubleshooting/","/faq/troubleshooting",{"id":1157,"title":882,"body":1158,"cover":6,"description":1817,"extension":1818,"image":6,"meta":1819,"navigation":1820,"path":883,"reviewSummary":6,"reviewedAt":6,"seo":1821,"slug":886,"stem":884,"tags":1834,"thumbnail":1178,"thumbnailPosition":1835,"thumbnailScale":1836,"__hash__":1837},"docs_es/40.webspace/60.examples/20.realtime-gomoku.md",{"type":1159,"value":1160,"toc":1801},"minimal",[1161,1165,1169,1172,1179,1182,1187,1195,1226,1229,1246,1249,1253,1320,1323,1327,1330,1340,1347,1391,1394,1398,1405,1453,1456,1460,1467,1474,1477,1483,1490,1494,1504,1514,1527,1531,1560,1563,1569,1573,1576,1582,1589,1593,1598,1694,1697,1700,1703,1771,1775,1778,1782],[1162,1163,882],"h1",{"id":1164},"crear-un-juego-de-gomoku-en-tiempo-real",[1166,1167,1168],"p",{},"Suba los archivos, despliegue el esquema y abra dos navegadores. Un amigo podrá entrar en la sala creada desde uno de ellos y cada movimiento aparecerá de inmediato en la otra pantalla. El servidor registrará los resultados y las clasificaciones.",[1166,1170,1171],{},"No necesita ninguna herramienta adicional para compilar el frontend. Juegue primero una partida con el ejemplo completo y después modifique la estructura de datos, el comportamiento en tiempo real y las reglas del juego.",[1166,1173,1174],{},[1175,1176],"img",{"alt":1177,"src":1178},"Tablero de 19×19, retransmisión en directo y clasificación de jugadores","/img/docs/webspace/gomoku/realtime-gomoku-board.png",[1180,1181],"hr",{},[1183,1184,1186],"h2",{"id":1185},"_1-jugar-primero-una-partida","1. Jugar primero una partida",[1166,1188,1189,1190,1194],{},"La forma más rápida de empezar es usar el ",[1191,1192,1193],"strong",{},"ZIP con el ejemplo completo",". Suba el esquema y los archivos de la interfaz a la misma carpeta y despliegue el esquema para abrir una partida de inmediato.",[1196,1197,1198,1219],"ul",{},[1199,1200,1201,1206,1207,1211,1212,1211,1215,1218],"li",{},[1202,1203,1205],"a",{"href":1204},"/examples/webspace/gomoku/setfn-realtime-gomoku-sample.zip","Descargar el ZIP completo del ejemplo de Gomoku en tiempo real",": incluye el esquema, ",[1208,1209,1210],"code",{},"index.html",", ",[1208,1213,1214],{},"style.css",[1208,1216,1217],{},"app.js"," y el archivo README",[1199,1220,1221,1225],{},[1202,1222,1224],{"href":1223},"/examples/webspace/gomoku/gomoku-realtime.sfn","Descargar el archivo de esquema de Gomoku (.sfn)",": úselo para examinar solo el backend o conectarlo a su propia interfaz",[1166,1227,1228],{},"El ejemplo permite comprobar lo siguiente:",[1196,1230,1231,1234,1237,1240,1243],{},[1199,1232,1233],{},"Una partida entre dos usuarios mediante un código de sala",[1199,1235,1236],{},"El último movimiento, sus fichas y el turno actual",[1199,1238,1239],{},"Un límite de tres minutos que se reinicia tras cada movimiento",[1199,1241,1242],{},"Una retransmisión de la partida en tiempo real",[1199,1244,1245],{},"La actualización automática del resultado, las partidas recientes y la clasificación",[1166,1247,1248],{},"El esquema ya incluye un tablero de 19×19, la victoria con cinco fichas seguidas y una puntuación de 3 por victoria, 1 por empate y 0 por derrota. Cada usuario puede crear hasta tres salas en espera. Las salas sin participantes durante 30 minutos quedan disponibles para su eliminación.",[1183,1250,1252],{"id":1251},"funciones-que-intervienen-en-el-juego","Funciones que intervienen en el juego",[1254,1255,1256,1269],"table",{},[1257,1258,1259],"thead",{},[1260,1261,1262,1266],"tr",{},[1263,1264,1265],"th",{},"Función",[1263,1267,1268],{},"Papel en Gomoku",[1270,1271,1272,1281,1289,1297,1305,1313],"tbody",{},[1260,1273,1274,1278],{},[1275,1276,1277],"td",{},"Archivo de esquema",[1275,1279,1280],{},"Define las partidas, los movimientos y los historiales de los usuarios",[1260,1282,1283,1286],{},[1275,1284,1285],{},"API REST",[1275,1287,1288],{},"Consulta las partidas recientes y la clasificación de jugadores",[1260,1290,1291,1294],{},[1275,1292,1293],{},"WebSocket",[1275,1295,1296],{},"Transmite en tiempo real la creación de salas, la entrada y los resultados de cada movimiento",[1260,1298,1299,1302],{},[1275,1300,1301],{},"Controlador de eventos",[1275,1303,1304],{},"Valida en el servidor los turnos, las coordenadas, las condiciones de victoria y el límite de tiempo",[1260,1306,1307,1310],{},[1275,1308,1309],{},"Permisos de miembros",[1275,1311,1312],{},"Permite participar solo a usuarios que hayan iniciado sesión",[1260,1314,1315,1317],{},[1275,1316,663],{},[1275,1318,1319],{},"Permite que los participantes conversen en la misma pantalla",[1166,1321,1322],{},"El navegador no declara la victoria ni escribe directamente la puntuación. El servidor comprueba el tablero y el turno, guarda solo los movimientos válidos y envía el mismo resultado a ambos usuarios.",[1183,1324,1326],{"id":1325},"_2-subir-los-archivos-a-un-espacio-de-trabajo","2. Subir los archivos a un espacio de trabajo",[1166,1328,1329],{},"Si descargó solo el archivo de esquema, súbalo a una carpeta de proyecto de un espacio de trabajo personal o de equipo. Si descargó el ZIP completo, coloque los cinco archivos en la misma carpeta mediante la carga de carpetas o de archivos comprimidos.",[1331,1332,1338],"pre",{"className":1333,"code":1335,"language":1336,"meta":1337},[1334],"language-text","오목대국장/\n├── gomoku-realtime.sfn\n├── index.html\n├── style.css\n├── app.js\n└── README.md\n","text","",[1208,1339,1335],{"__ignoreMap":1337},[1166,1341,1342,1343,1346],{},"Abra el archivo de esquema y compruebe las tres tablas en ",[1208,1344,1345],{},"DB Structure",".",[1254,1348,1349,1359],{},[1257,1350,1351],{},[1260,1352,1353,1356],{},[1263,1354,1355],{},"Tabla",[1263,1357,1358],{},"Datos almacenados",[1270,1360,1361,1371,1381],{},[1260,1362,1363,1368],{},[1275,1364,1365],{},[1208,1366,1367],{},"gomoku_games",[1275,1369,1370],{},"Código de sala, participantes, turno actual, límite de tiempo y resultado final",[1260,1372,1373,1378],{},[1275,1374,1375],{},[1208,1376,1377],{},"gomoku_moves",[1275,1379,1380],{},"Número de movimiento, color de la ficha, coordenadas y usuario",[1260,1382,1383,1388],{},[1275,1384,1385],{},[1208,1386,1387],{},"gomoku_players",[1275,1389,1390],{},"Victorias, derrotas, empates, puntuación acumulada y partidas recientes de cada usuario",[1166,1392,1393],{},"Las partidas y los historiales se guardan por separado, por lo que puede volver a cargar los registros recientes y la clasificación incluso después de abrir de nuevo la página.",[1183,1395,1397],{"id":1396},"_3-comprobar-la-api-y-las-funciones-en-tiempo-real","3. Comprobar la API y las funciones en tiempo real",[1166,1399,1400,1401,1404],{},"Abra ",[1208,1402,1403],{},"API Build"," en la parte superior y compruebe lo siguiente:",[1406,1407,1408,1414,1423,1436,1450],"ol",{},[1199,1409,1410,1411,1346],{},"El nombre de la base de datos es ",[1208,1412,1413],{},"gomoku",[1199,1415,1416,1419,1420,1346],{},[1208,1417,1418],{},"Realtime socket"," está configurado como ",[1208,1421,1422],{},"Enabled",[1199,1424,1425,1419,1428,1431,1432,1435],{},[1208,1426,1427],{},"Server feature",[1208,1429,1430],{},"Turn-based board game"," (",[1208,1433,1434],{},"turn-based-board",").",[1199,1437,1438,1439,1442,1443,1446,1447,1346],{},"Los permisos ",[1208,1440,1441],{},"Send"," y ",[1208,1444,1445],{},"Receive"," están configurados como ",[1208,1448,1449],{},"Members only",[1199,1451,1452],{},"Las API de creación y actualización están desactivadas en las tres tablas.",[1166,1454,1455],{},"Las API de creación y actualización se desactivan para impedir que los participantes cambien directamente las victorias o los movimientos mediante REST. Todos los cambios del estado del juego deben pasar por el controlador de eventos del servidor.",[1183,1457,1459],{"id":1458},"_4-desplegar-con-sqlite3","4. Desplegar con SQLite3",[1166,1461,1462,1463,1466],{},"Para la primera ejecución, seleccione SQLite3 en ",[1208,1464,1465],{},"Storage",". No necesitará preparar una dirección ni una cuenta de base de datos aparte, por lo que es la opción más sencilla para probar el ejemplo.",[1166,1468,1469,1470,1473],{},"Antes de seleccionar ",[1208,1471,1472],{},"Deploy",", revise los cambios y el resumen de permisos que aparecen en pantalla. Si ya hay registros en una base de datos con el mismo nombre, puede que un administrador o responsable del despliegue deba aprobar la operación según la política de sobrescritura del servidor.",[1166,1475,1476],{},"Una vez finalizado el despliegue, estarán disponibles una API REST y un WebSocket con estas rutas:",[1331,1478,1481],{"className":1479,"code":1480,"language":1336,"meta":1337},[1334],"GET /api/web/gomoku/gomoku_games/list\nGET /api/web/gomoku/gomoku_players/list\nWS  /api/web/gomoku/realtime-ws\n",[1208,1482,1480],{"__ignoreMap":1337},[1166,1484,1485,1486,1489],{},"Si el servidor de producción usa HTTPS, el navegador debe utilizar una conexión segura ",[1208,1487,1488],{},"wss://"," en el mismo dominio. Conviene construir la dirección a partir del host de la página actual en lugar de fijar un dominio de desarrollo en el código.",[1183,1491,1493],{"id":1492},"_5-abrir-la-interfaz-de-gomoku","5. Abrir la interfaz de Gomoku",[1166,1495,1496,1497,1211,1499,1442,1501,1503],{},"El archivo de esquema crea la base de datos y el backend del juego, mientras que ",[1208,1498,1210],{},[1208,1500,1214],{},[1208,1502,1217],{}," se encargan del tablero y la experiencia de usuario. Al mantener ambas partes separadas, puede rediseñar la interfaz sin perder el historial de partidas.",[1166,1505,1506,1507,1509,1510,1513],{},"Si subió el ejemplo completo, seleccione ",[1208,1508,1210],{}," y abra ",[1208,1511,1512],{},"Preview",". Si usa solo el esquema, conecte desde su propio HTML la API REST y el WebSocket anteriores.",[1166,1515,1516,1517,1211,1520,1442,1523,1526],{},"El cliente envía por WebSocket acciones como ",[1208,1518,1519],{},"board-game.create",[1208,1521,1522],{},"board-game.join",[1208,1524,1525],{},"board-game.move",". Las fichas y la puntuación se muestran únicamente a partir de los eventos confirmados que devuelve el servidor.",[1183,1528,1530],{"id":1529},"_6-jugar-con-dos-usuarios","6. Jugar con dos usuarios",[1406,1532,1533,1539,1545,1548,1554,1557],{},[1199,1534,1535,1536,1538],{},"Abra el mismo ",[1208,1537,1210],{}," con dos cuentas de miembro distintas.",[1199,1540,1541,1542,1346],{},"En la primera cuenta, seleccione ",[1208,1543,1544],{},"Create new match",[1199,1546,1547],{},"Envíe a la segunda cuenta el código de sala generado.",[1199,1549,1550,1551,1346],{},"Introduzca el código en la segunda cuenta y seleccione ",[1208,1552,1553],{},"Join",[1199,1555,1556],{},"Jueguen por turnos y compruebe que el mismo movimiento aparece en ambas pantallas.",[1199,1558,1559],{},"Cuando se alineen cinco fichas, compruebe que se actualizan la indicación de victoria, las partidas recientes y la clasificación.",[1166,1561,1562],{},"Para hacer la prueba en un solo equipo, resulta práctico usar navegadores con sesiones separadas, por ejemplo una ventana normal y otra de incógnito.",[1166,1564,1565],{},[1175,1566],{"alt":1567,"src":1568},"Pantalla de Gomoku en tiempo real con el chat de colaboración abierto","/img/docs/webspace/gomoku/realtime-gomoku-collaboration.png",[1183,1570,1572],{"id":1571},"el-servidor-registra-el-resultado","El servidor registra el resultado",[1166,1574,1575],{},"Cuando cinco fichas se alinean en horizontal, vertical o diagonal, el servidor finaliza la partida y guarda el ganador y la puntuación. Si se supera el tiempo de un turno, el servidor determina la derrota por tiempo según su propio reloj.",[1166,1577,1578],{},[1175,1579],{"alt":1580,"src":1581},"Victoria en Gomoku y clasificación de jugadores calculada automáticamente","/img/docs/webspace/gomoku/realtime-gomoku-result.png",[1166,1583,1584,1585,1588],{},"Si las partidas recientes y la clasificación no cambian de inmediato, compruebe que el cliente vuelve a consultar las listas después de recibir el evento de finalización por WebSocket, en vez de seleccionar repetidamente el botón. Despliegue ",[1208,1586,1587],{},"Developer information"," para consultar el JSON enviado y recibido y el tiempo de procesamiento del servidor.",[1183,1590,1592],{"id":1591},"convertirlo-en-su-propio-juego","Convertirlo en su propio juego",[1166,1594,1595,1597],{},[1208,1596,1434],{}," no es un controlador exclusivo de Gomoku. Cambie los siguientes valores en la configuración del controlador del archivo de esquema para usarlo como punto de partida de otro juego por turnos.",[1254,1599,1600,1614],{},[1257,1601,1602],{},[1260,1603,1604,1607,1611],{},[1263,1605,1606],{},"Configuración",[1263,1608,1610],{"align":1609},"right","Valor actual",[1263,1612,1613],{},"Significado",[1270,1615,1616,1629,1642,1655,1668,1681],{},[1260,1617,1618,1623,1626],{},[1275,1619,1620],{},[1208,1621,1622],{},"boardSize",[1275,1624,1625],{"align":1609},"19",[1275,1627,1628],{},"Número de casillas en cada lado del tablero",[1260,1630,1631,1636,1639],{},[1275,1632,1633],{},[1208,1634,1635],{},"winLength",[1275,1637,1638],{"align":1609},"5",[1275,1640,1641],{},"Número de fichas consecutivas necesarias para ganar",[1260,1643,1644,1649,1652],{},[1275,1645,1646],{},[1208,1647,1648],{},"turnTimeSeconds",[1275,1650,1651],{"align":1609},"180",[1275,1653,1654],{},"Límite de tiempo de cada movimiento",[1260,1656,1657,1662,1665],{},[1275,1658,1659],{},[1208,1660,1661],{},"winScore",[1275,1663,1664],{"align":1609},"3",[1275,1666,1667],{},"Puntos por victoria",[1260,1669,1670,1675,1678],{},[1275,1671,1672],{},[1208,1673,1674],{},"drawScore",[1275,1676,1677],{"align":1609},"1",[1275,1679,1680],{},"Puntos por empate",[1260,1682,1683,1688,1691],{},[1275,1684,1685],{},[1208,1686,1687],{},"lossScore",[1275,1689,1690],{"align":1609},"0",[1275,1692,1693],{},"Puntos por derrota",[1166,1695,1696],{},"Puede crear una partida rápida en un tablero más pequeño, adaptar la puntuación a un evento de su organización o añadir espectadores, clasificaciones por temporada y partidas por equipos sobre la misma base en tiempo real.",[1166,1698,1699],{},"Gomoku es tanto un ejemplo completo como el punto de partida de un juego nuevo. Sustituya las fichas por monstruos y objetos para crear un combate por turnos, o las casillas por preguntas y opciones para crear un concurso en tiempo real. Mantenga los datos y las reglas en el esquema y añada a la interfaz la experiencia que quiera ofrecer.",[1183,1701,1151],{"id":1702},"solución-de-problemas",[1254,1704,1705,1715],{},[1257,1706,1707],{},[1260,1708,1709,1712],{},[1263,1710,1711],{},"Síntoma",[1263,1713,1714],{},"Qué debe comprobar",[1270,1716,1717,1728,1736,1746,1760],{},[1260,1718,1719,1722],{},[1275,1720,1721],{},"El controlador de eventos en tiempo real no está disponible",[1275,1723,1724,1725,1727],{},"Compruebe que la versión del servidor admite el controlador ",[1208,1726,1434],{}," del esquema actual",[1260,1729,1730,1733],{},[1275,1731,1732],{},"Los botones para crear una partida o entrar en ella no funcionan",[1275,1734,1735],{},"Compruebe el despliegue de la base de datos, las funciones en tiempo real, el inicio de sesión y los permisos de envío y recepción",[1260,1737,1738,1743],{},[1275,1739,1740],{},[1208,1741,1742],{},"401 Unauthorized",[1275,1744,1745],{},"Compruebe que la sesión sea válida y que el token no se haya incluido directamente en la consulta de la URL",[1260,1747,1748,1751],{},[1275,1749,1750],{},"WebSocket está bloqueado en producción",[1275,1752,1753,1754,1756,1757],{},"Compruebe que la página HTTPS use ",[1208,1755,1488],{}," y que la CSP permita ",[1208,1758,1759],{},"connect-src",[1260,1761,1762,1765],{},[1275,1763,1764],{},"La página modificada muestra una versión anterior",[1275,1766,1767,1768,1770],{},"Vuelva a abrir ",[1208,1769,1512],{}," y confirme que se entrega la versión más reciente de los archivos estáticos",[1183,1772,1774],{"id":1773},"para-terminar","Para terminar",[1166,1776,1777],{},"El ejemplo de Gomoku reúne en un único servicio una base de datos y una API REST creadas a partir de un archivo de esquema, permisos que limitan la participación a los miembros que hayan iniciado sesión y un estado de juego en tiempo real que el servidor valida directamente. Los demás ejemplos de esta sección muestran un sistema de trabajo creado con AI, un tablón de archivos de carpeta, una incursión cooperativa contra monstruos y un chat de asistencia con AI. Combine las funciones que necesite para crear con Webspace la mayoría de las herramientas internas y para clientes.",[1183,1779,1781],{"id":1780},"próximos-pasos","Próximos pasos",[1196,1783,1784,1790,1796],{},[1199,1785,1786],{},[1202,1787,1789],{"href":1788},"../api-overview","Crear una API y desplegar una base de datos",[1199,1791,1792],{},[1202,1793,1795],{"href":1794},"../performance","Rendimiento y escalabilidad",[1199,1797,1798],{},[1202,1799,857],{"href":1800},"../admin/service-capacity",{"title":1337,"searchDepth":1802,"depth":1803,"links":1804},2,3,[1805,1806,1807,1808,1809,1810,1811,1812,1813,1814,1815,1816],{"id":1185,"depth":1802,"text":1186},{"id":1251,"depth":1802,"text":1252},{"id":1325,"depth":1802,"text":1326},{"id":1396,"depth":1802,"text":1397},{"id":1458,"depth":1802,"text":1459},{"id":1492,"depth":1802,"text":1493},{"id":1529,"depth":1802,"text":1530},{"id":1571,"depth":1802,"text":1572},{"id":1591,"depth":1802,"text":1592},{"id":1702,"depth":1802,"text":1151},{"id":1773,"depth":1802,"text":1774},{"id":1780,"depth":1802,"text":1781},"Descargue el archivo de esquema de Gomoku (.sfn) y despliéguelo como una base de datos SQLite3, una API REST y un backend de juego con WebSocket.","md",{},true,{"title":1822,"description":1823,"ogType":1824,"twitterCard":1825,"keywords":1826},"Crear un juego de Gomoku en tiempo real | Ejemplo de servidor de juego con WebSocket","Despliegue un esquema de Gomoku en SetFN Webspace y pruebe la entrada a salas, los movimientos en tiempo real, la detección de victorias y el almacenamiento de clasificaciones.","article","summary_large_image",[1827,1828,1829,1830,1831,1832,1833],"crear un juego de Gomoku en tiempo real","servidor de juego WebSocket","ejemplo de WebSocket","juego con SQLite","backend sin código","descarga de archivo de esquema","SetFN Webspace",[469],"8% 28%",2.1,"jL4C09ZyzW9H0vq7Bb4lBKSN3IT1aYZ0W-SQfsMhVOk",[1839,1840],{"title":877,"path":878,"stem":879,"slug":880,"children":-1},{"title":888,"path":889,"stem":890,"slug":891,"children":-1},{"title":882,"filename":1842,"content":1843},"realtime-gomoku","# Crear un juego de Gomoku en tiempo real\n\nSuba los archivos, despliegue el esquema y abra dos navegadores. Un amigo podrá entrar en la sala creada desde uno de ellos y cada movimiento aparecerá de inmediato en la otra pantalla. El servidor registrará los resultados y las clasificaciones.\n\nNo necesita ninguna herramienta adicional para compilar el frontend. Juegue primero una partida con el ejemplo completo y después modifique la estructura de datos, el comportamiento en tiempo real y las reglas del juego.\n\n![Tablero de 19×19, retransmisión en directo y clasificación de jugadores](/img/docs/webspace/gomoku/realtime-gomoku-board.png)\n\n---\n\n## 1. Jugar primero una partida\n\nLa forma más rápida de empezar es usar el **ZIP con el ejemplo completo**. Suba el esquema y los archivos de la interfaz a la misma carpeta y despliegue el esquema para abrir una partida de inmediato.\n\n- [Descargar el ZIP completo del ejemplo de Gomoku en tiempo real](/examples/webspace/gomoku/setfn-realtime-gomoku-sample.zip): incluye el esquema, `index.html`, `style.css`, `app.js` y el archivo README\n- [Descargar el archivo de esquema de Gomoku (.sfn)](/examples/webspace/gomoku/gomoku-realtime.sfn): úselo para examinar solo el backend o conectarlo a su propia interfaz\n\nEl ejemplo permite comprobar lo siguiente:\n\n- Una partida entre dos usuarios mediante un código de sala\n- El último movimiento, sus fichas y el turno actual\n- Un límite de tres minutos que se reinicia tras cada movimiento\n- Una retransmisión de la partida en tiempo real\n- La actualización automática del resultado, las partidas recientes y la clasificación\n\nEl esquema ya incluye un tablero de 19×19, la victoria con cinco fichas seguidas y una puntuación de 3 por victoria, 1 por empate y 0 por derrota. Cada usuario puede crear hasta tres salas en espera. Las salas sin participantes durante 30 minutos quedan disponibles para su eliminación.\n\n## Funciones que intervienen en el juego\n\n| Función | Papel en Gomoku |\n| --- | --- |\n| Archivo de esquema | Define las partidas, los movimientos y los historiales de los usuarios |\n| API REST | Consulta las partidas recientes y la clasificación de jugadores |\n| WebSocket | Transmite en tiempo real la creación de salas, la entrada y los resultados de cada movimiento |\n| Controlador de eventos | Valida en el servidor los turnos, las coordenadas, las condiciones de victoria y el límite de tiempo |\n| Permisos de miembros | Permite participar solo a usuarios que hayan iniciado sesión |\n| Colaboración | Permite que los participantes conversen en la misma pantalla |\n\nEl navegador no declara la victoria ni escribe directamente la puntuación. El servidor comprueba el tablero y el turno, guarda solo los movimientos válidos y envía el mismo resultado a ambos usuarios.\n\n## 2. Subir los archivos a un espacio de trabajo\n\nSi descargó solo el archivo de esquema, súbalo a una carpeta de proyecto de un espacio de trabajo personal o de equipo. Si descargó el ZIP completo, coloque los cinco archivos en la misma carpeta mediante la carga de carpetas o de archivos comprimidos.\n\n```text\n오목대국장/\n├── gomoku-realtime.sfn\n├── index.html\n├── style.css\n├── app.js\n└── README.md\n```\n\nAbra el archivo de esquema y compruebe las tres tablas en `DB Structure`.\n\n| Tabla | Datos almacenados |\n| --- | --- |\n| `gomoku_games` | Código de sala, participantes, turno actual, límite de tiempo y resultado final |\n| `gomoku_moves` | Número de movimiento, color de la ficha, coordenadas y usuario |\n| `gomoku_players` | Victorias, derrotas, empates, puntuación acumulada y partidas recientes de cada usuario |\n\nLas partidas y los historiales se guardan por separado, por lo que puede volver a cargar los registros recientes y la clasificación incluso después de abrir de nuevo la página.\n\n## 3. Comprobar la API y las funciones en tiempo real\n\nAbra `API Build` en la parte superior y compruebe lo siguiente:\n\n1. El nombre de la base de datos es `gomoku`.\n2. `Realtime socket` está configurado como `Enabled`.\n3. `Server feature` está configurado como `Turn-based board game` (`turn-based-board`).\n4. Los permisos `Send` y `Receive` están configurados como `Members only`.\n5. Las API de creación y actualización están desactivadas en las tres tablas.\n\nLas API de creación y actualización se desactivan para impedir que los participantes cambien directamente las victorias o los movimientos mediante REST. Todos los cambios del estado del juego deben pasar por el controlador de eventos del servidor.\n\n## 4. Desplegar con SQLite3\n\nPara la primera ejecución, seleccione SQLite3 en `Storage`. No necesitará preparar una dirección ni una cuenta de base de datos aparte, por lo que es la opción más sencilla para probar el ejemplo.\n\nAntes de seleccionar `Deploy`, revise los cambios y el resumen de permisos que aparecen en pantalla. Si ya hay registros en una base de datos con el mismo nombre, puede que un administrador o responsable del despliegue deba aprobar la operación según la política de sobrescritura del servidor.\n\nUna vez finalizado el despliegue, estarán disponibles una API REST y un WebSocket con estas rutas:\n\n```text\nGET /api/web/gomoku/gomoku_games/list\nGET /api/web/gomoku/gomoku_players/list\nWS  /api/web/gomoku/realtime-ws\n```\n\nSi el servidor de producción usa HTTPS, el navegador debe utilizar una conexión segura `wss://` en el mismo dominio. Conviene construir la dirección a partir del host de la página actual en lugar de fijar un dominio de desarrollo en el código.\n\n## 5. Abrir la interfaz de Gomoku\n\nEl archivo de esquema crea la base de datos y el backend del juego, mientras que `index.html`, `style.css` y `app.js` se encargan del tablero y la experiencia de usuario. Al mantener ambas partes separadas, puede rediseñar la interfaz sin perder el historial de partidas.\n\nSi subió el ejemplo completo, seleccione `index.html` y abra `Preview`. Si usa solo el esquema, conecte desde su propio HTML la API REST y el WebSocket anteriores.\n\nEl cliente envía por WebSocket acciones como `board-game.create`, `board-game.join` y `board-game.move`. Las fichas y la puntuación se muestran únicamente a partir de los eventos confirmados que devuelve el servidor.\n\n## 6. Jugar con dos usuarios\n\n1. Abra el mismo `index.html` con dos cuentas de miembro distintas.\n2. En la primera cuenta, seleccione `Create new match`.\n3. Envíe a la segunda cuenta el código de sala generado.\n4. Introduzca el código en la segunda cuenta y seleccione `Join`.\n5. Jueguen por turnos y compruebe que el mismo movimiento aparece en ambas pantallas.\n6. Cuando se alineen cinco fichas, compruebe que se actualizan la indicación de victoria, las partidas recientes y la clasificación.\n\nPara hacer la prueba en un solo equipo, resulta práctico usar navegadores con sesiones separadas, por ejemplo una ventana normal y otra de incógnito.\n\n![Pantalla de Gomoku en tiempo real con el chat de colaboración abierto](/img/docs/webspace/gomoku/realtime-gomoku-collaboration.png)\n\n## El servidor registra el resultado\n\nCuando cinco fichas se alinean en horizontal, vertical o diagonal, el servidor finaliza la partida y guarda el ganador y la puntuación. Si se supera el tiempo de un turno, el servidor determina la derrota por tiempo según su propio reloj.\n\n![Victoria en Gomoku y clasificación de jugadores calculada automáticamente](/img/docs/webspace/gomoku/realtime-gomoku-result.png)\n\nSi las partidas recientes y la clasificación no cambian de inmediato, compruebe que el cliente vuelve a consultar las listas después de recibir el evento de finalización por WebSocket, en vez de seleccionar repetidamente el botón. Despliegue `Developer information` para consultar el JSON enviado y recibido y el tiempo de procesamiento del servidor.\n\n## Convertirlo en su propio juego\n\n`turn-based-board` no es un controlador exclusivo de Gomoku. Cambie los siguientes valores en la configuración del controlador del archivo de esquema para usarlo como punto de partida de otro juego por turnos.\n\n| Configuración | Valor actual | Significado |\n| --- | ---: | --- |\n| `boardSize` | 19 | Número de casillas en cada lado del tablero |\n| `winLength` | 5 | Número de fichas consecutivas necesarias para ganar |\n| `turnTimeSeconds` | 180 | Límite de tiempo de cada movimiento |\n| `winScore` | 3 | Puntos por victoria |\n| `drawScore` | 1 | Puntos por empate |\n| `lossScore` | 0 | Puntos por derrota |\n\nPuede crear una partida rápida en un tablero más pequeño, adaptar la puntuación a un evento de su organización o añadir espectadores, clasificaciones por temporada y partidas por equipos sobre la misma base en tiempo real.\n\nGomoku es tanto un ejemplo completo como el punto de partida de un juego nuevo. Sustituya las fichas por monstruos y objetos para crear un combate por turnos, o las casillas por preguntas y opciones para crear un concurso en tiempo real. Mantenga los datos y las reglas en el esquema y añada a la interfaz la experiencia que quiera ofrecer.\n\n## Solución de problemas\n\n| Síntoma | Qué debe comprobar |\n| --- | --- |\n| El controlador de eventos en tiempo real no está disponible | Compruebe que la versión del servidor admite el controlador `turn-based-board` del esquema actual |\n| Los botones para crear una partida o entrar en ella no funcionan | Compruebe el despliegue de la base de datos, las funciones en tiempo real, el inicio de sesión y los permisos de envío y recepción |\n| `401 Unauthorized` | Compruebe que la sesión sea válida y que el token no se haya incluido directamente en la consulta de la URL |\n| WebSocket está bloqueado en producción | Compruebe que la página HTTPS use `wss://` y que la CSP permita `connect-src` |\n| La página modificada muestra una versión anterior | Vuelva a abrir `Preview` y confirme que se entrega la versión más reciente de los archivos estáticos |\n\n## Para terminar\n\nEl ejemplo de Gomoku reúne en un único servicio una base de datos y una API REST creadas a partir de un archivo de esquema, permisos que limitan la participación a los miembros que hayan iniciado sesión y un estado de juego en tiempo real que el servidor valida directamente. Los demás ejemplos de esta sección muestran un sistema de trabajo creado con AI, un tablón de archivos de carpeta, una incursión cooperativa contra monstruos y un chat de asistencia con AI. Combine las funciones que necesite para crear con Webspace la mayoría de las herramientas internas y para clientes.\n\n## Próximos pasos\n\n- [Crear una API y desplegar una base de datos](../24.api-overview.md)\n- [Rendimiento y escalabilidad](../48.performance.md)\n- [Servicios y capacidad](../50.admin/40.service-capacity.md)\n",1793056600702]