ваше сообщение коммита

This commit is contained in:
2025-07-10 13:20:55 +03:00
parent 18a259a5d2
commit e0ec889863
11 changed files with 114 additions and 21 deletions

View File

@@ -147,10 +147,9 @@ services:
volumes: volumes:
- ./id_rsa:/key:ro - ./id_rsa:/key:ro
command: > command: >
sh -c "apk add --no-cache openssh && ssh -i /key -o StrictHostKeyChecking=no -N -R 0.0.0.0:9000:host.docker.internal:5173 root@185.221.214.140" sh -c "apk add --no-cache openssh && ssh -i /key -o StrictHostKeyChecking=no -N -R 0.0.0.0:9000:host.docker.internal:9000 root@185.221.214.140"
restart: unless-stopped restart: unless-stopped
# network_mode: host <-- Эту строку удаляем extra_hosts:
extra_hosts: # <-- Эту секцию добавляем
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
ssh-tunnel-backend: ssh-tunnel-backend:
@@ -161,10 +160,20 @@ services:
command: > command: >
sh -c "apk add --no-cache openssh && ssh -i /key -o StrictHostKeyChecking=no -N -R 0.0.0.0:8000:host.docker.internal:8000 root@185.221.214.140" sh -c "apk add --no-cache openssh && ssh -i /key -o StrictHostKeyChecking=no -N -R 0.0.0.0:8000:host.docker.internal:8000 root@185.221.214.140"
restart: unless-stopped restart: unless-stopped
# network_mode: host <-- Эту строку удаляем extra_hosts:
extra_hosts: # <-- Эту секцию добавляем
- "host.docker.internal:host-gateway" - "host.docker.internal:host-gateway"
frontend-nginx:
build:
context: ./frontend
dockerfile: nginx.Dockerfile
container_name: dapp-frontend-nginx
restart: unless-stopped
ports:
- "9000:80" # 9000 — порт, который пробрасывается наружу/через туннель
depends_on:
- backend
volumes: volumes:
postgres_data: null postgres_data: null
ollama_data: null ollama_data: null

View File

@@ -0,0 +1,32 @@
server {
listen 80;
server_name _;
root /usr/share/nginx/html;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
# Прокси для API (если нужно)
location /api/ {
proxy_pass http://backend:8000/api/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
# Прокси для WebSocket (если нужно)
location /ws {
proxy_pass http://backend:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}

View File

@@ -0,0 +1,3 @@
FROM nginx:alpine
COPY dist/ /usr/share/nginx/html/
COPY nginx-tunnel.conf /etc/nginx/conf.d/default.conf

View File

@@ -1,13 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<link rel="icon" href="/favicon.ico">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>DApp for Business</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.js"></script>
</body>
</html>

View File

@@ -169,6 +169,11 @@ const routes = [
name: 'email-settings', name: 'email-settings',
component: () => import('@/views/settings/AI/EmailSettingsView.vue'), component: () => import('@/views/settings/AI/EmailSettingsView.vue'),
}, },
{
path: '/content',
name: 'content-page',
component: () => import('../views/ContentPageView.vue'),
},
]; ];
const router = createRouter({ const router = createRouter({

View File

@@ -0,0 +1,25 @@
<template>
<BaseLayout>
<div class="content-page-block">
<h2>Контент</h2>
<p>Здесь будет размещён контент.</p>
</div>
</BaseLayout>
</template>
<script setup>
import BaseLayout from '../components/BaseLayout.vue';
</script>
<style scoped>
.content-page-block {
background: #fff;
border-radius: 16px;
box-shadow: 0 4px 32px rgba(0,0,0,0.12);
padding: 32px 24px 24px 24px;
width: 100%;
margin-top: 40px;
position: relative;
overflow-x: auto;
}
</style>

View File

@@ -25,6 +25,13 @@
<i class="fas fa-table"></i> Подробнее <i class="fas fa-table"></i> Подробнее
</button> </button>
</div> </div>
<!-- Новый блок Контент -->
<div class="crm-content-block">
<h2>Контент</h2>
<button class="btn btn-info" @click="goToContent">
<i class="fas fa-file-alt"></i> Подробнее
</button>
</div>
</div> </div>
</BaseLayout> </BaseLayout>
</template> </template>
@@ -195,6 +202,10 @@ function goToDleManagement() {
function goToContactsList() { function goToContactsList() {
router.push({ name: 'contacts-list' }); router.push({ name: 'contacts-list' });
} }
function goToContent() {
router.push({ name: 'content-page' });
}
</script> </script>
<style scoped> <style scoped>
@@ -347,4 +358,24 @@ strong {
font-size: 1rem; font-size: 1rem;
padding: 8px 18px; padding: 8px 18px;
} }
.crm-content-block {
margin: 32px 0 24px 0;
padding: 24px;
background: #f8fafc;
border-radius: 10px;
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
display: flex;
align-items: center;
justify-content: space-between;
}
.crm-content-block h2 {
margin: 0;
font-size: 1.4rem;
font-weight: 600;
}
.crm-content-block .btn {
font-size: 1rem;
padding: 8px 18px;
}
</style> </style>

View File

@@ -16,8 +16,8 @@
<button class="details-btn" @click="$router.push('/settings/security')">Подробнее</button> <button class="details-btn" @click="$router.push('/settings/security')">Подробнее</button>
</div> </div>
<div class="main-block"> <div class="main-block">
<h3>Интерфейс</h3> <h3>Сервер</h3>
<p>Настройки внешнего вида, локализации и пользовательского опыта.</p> <p>Настройки серверов, хостинга и публикации приложения.</p>
<button class="details-btn" @click="$router.push('/settings/interface')">Подробнее</button> <button class="details-btn" @click="$router.push('/settings/interface')">Подробнее</button>
</div> </div>
</div> </div>

View File

@@ -53,6 +53,7 @@ export default defineConfig({
usePolling: true, usePolling: true,
interval: 1000, interval: 1000,
ignored: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/.idea/**', '**/.vscode/**'] ignored: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/.idea/**', '**/.vscode/**']
} },
hmr: false
}, },
}); });