Skip to content

Commit c4770db

Browse files
committed
Перепроверка и переделака
Проверены синхронизации и ошибки несостыковки не мешающие компилированию оставлены у себя
1 parent 3a1d81d commit c4770db

10 files changed

Lines changed: 210 additions & 47 deletions

File tree

REPOSITORY_CHECK_REPORT.md

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
# Отчёт проверки репозитория TeleGhost
2+
3+
## Выполненные проверки
4+
5+
### 1. Go (бэкенд)
6+
- **`go build ./...`** — успешно (после сборки frontend)
7+
- **`go build ./internal/...`** — успешно
8+
- **`go vet ./...`** — успешно
9+
- **`go test ./internal/...`** — частично:
10+
- **OK:** `internal/core/identity`, `internal/network/media`, `internal/network/profiles`
11+
- **FAIL:** `internal/repository/sqlite` — тесты требуют CGO (go-sqlite3). Ошибка: `Binary was compiled with 'CGO_ENABLED=0'`. Для прохождения тестов нужна сборка с `CGO_ENABLED=1` и установленный C-компилятор.
12+
13+
### 2. Frontend (Svelte + Vite)
14+
- **`npx svelte-check`** — успешно (после исправлений)
15+
- **`npm run build`** — успешно
16+
17+
### 3. Полная сборка приложения
18+
- **`go build -o TeleGhost.exe .`** — успешно (собран исполняемый файл с встроенным frontend)
19+
20+
---
21+
22+
## Исправленные ошибки
23+
24+
### CSS (Svelte)
25+
1. **`frontend/src/components/DarkVeil.svelte`**
26+
- Убрана лишняя закрывающая скобка `}` в `<style>`, из-за которой PostCSS выдавал "Unexpected }".
27+
- Исправлена вложенность: `@media (max-width: 768px)` вынесен на верхний уровень, для селектора внутри медиа-запроса добавлен `:global`.
28+
29+
2. **`frontend/src/components/DarkVeilWrapper.svelte`**
30+
- Добавлена закрывающая скобка `}` для блока `:global { ... }` (исправлено "Unclosed block").
31+
32+
3. **`frontend/src/components/DarkVeilMobile.svelte`**
33+
- Добавлена закрывающая скобка `}` для селектора `.darkveil-mobile.ios`.
34+
- Удалена лишняя `}` в конце `<style>`.
35+
36+
### API / Wails-биндинги
37+
4. **`RequestProfileUpdate` не экспортировался из `wailsjs/go/main/App.js`**
38+
- В десктопе метод в Go называется **`RequestProfile`**.
39+
- В **`frontend/src/App.svelte`**: убран fallback на несуществующий `RequestProfileUpdate`, оставлен вызов `AppActions.RequestProfile(addr)`.
40+
- В **`frontend/src/lib/api_bridge.js`**: в списке методов заменено `'RequestProfileUpdate'` на `'RequestProfile'` для соответствия биндингу.
41+
42+
---
43+
44+
## Карта связей между пакетами и файлами
45+
46+
### Точка входа
47+
- **`main.go`** — создаёт `App` (app.go), встраивает `frontend/dist`, запускает Wails.
48+
49+
### Слой приложения (desktop)
50+
- **`app.go`** — структура `App`, все методы, вызываемые с фронта (Wails Bind).
51+
- Использует: `teleghost/internal/appcore`, `teleghost/internal/network/media`.
52+
- Создаёт `AppCore` через `appcore.NewAppCore(...)`.
53+
- Отдаёт медиа через `GetMediaHandler()` (media.Handler).
54+
55+
### Ядро (общее для desktop и mobile)
56+
- **`internal/appcore/appcore.go`**`AppCore`, общая бизнес-логика.
57+
- Зависимости: `internal/core`, `internal/core/identity`, `internal/network/messenger`, `internal/network/profiles`, `internal/network/router`, `internal/repository/sqlite`.
58+
- **`internal/appcore/auth.go`** — профили, вход, ПИН → core, identity.
59+
- **`internal/appcore/contacts.go`** — контакты → core.
60+
- **`internal/appcore/folders.go`** — папки чатов → core.
61+
- **`internal/appcore/messages.go`** — сообщения, вложения → core, identity, proto, utils.
62+
- **`internal/appcore/settings.go`** — настройки (файлы).
63+
- **`internal/appcore/reseed.go`** — reseed I2P (архивы).
64+
65+
### Сеть и мессенджер
66+
- **`internal/network/router/router.go`** — реализация I2P через go-i2p/sam3 (SAM).
67+
- **`internal/network/i2pd/router.go`** — реализация через встроенный i2pd (CGO).
68+
- **`embedded_router.go`** — использует `internal/network/i2pd` (встроенный роутер).
69+
- **`internal/network/messenger/messenger.go`** — протокол обмена сообщениями → core, identity, router, proto.
70+
- **`internal/network/profiles/profiles.go`** — профили (nickname, avatar) → crypto.
71+
- **`internal/network/media/media_crypt.go`** — шифрование медиа (Chacha20).
72+
73+
### Хранение и модели
74+
- **`internal/repository/repository.go`** — интерфейс репозитория (core-типы).
75+
- **`internal/repository/sqlite/repository.go`** — реализация на SQLite → core, identity.
76+
- **`internal/core/models.go`** — модели (Chat, Message, Contact и т.д.).
77+
- **`internal/core/identity/identity.go`** — ключи, мнемоника, handshake.
78+
- **`internal/core/media_utils.go`** — работа с изображениями.
79+
- **`internal/proto/teleghost.pb.go`** — сгенерированный protobuf (proto/teleghost.proto).
80+
81+
### Утилиты
82+
- **`internal/utils/image.go`** — resize изображений (используется в appcore/messages и др.).
83+
84+
### Frontend → Backend
85+
- **`frontend/wailsjs/go/main/App.js`** — сгенерированный Wails-клиент: все методы `App` из `app.go` экспортируются сюда и вызываются как `window['go']['main']['App']['MethodName'](...)`.
86+
- **`frontend/src/App.svelte`** — импортирует `AppActions` из `wailsjs/go/main/App.js`, подписывается на события через `EventsOn` из `wailsjs/runtime/runtime.js`.
87+
- Компоненты **Auth, Chat, Sidebar, Settings, Modals, QRModal** используют `AppActions` (и частично `api_bridge.js` для унификации с мобильной версией).
88+
89+
### Mobile
90+
- **`mobile/mobile.go`** — HTTP API + SSE, создаёт свой `AppCore` с SSEEmitter и платформенными сервисами для Android; обрабатывает те же действия, что и десктоп (в т.ч. событие `RequestProfileUpdate` для мобильного API).
91+
92+
---
93+
94+
## Связь «от каждого к каждому» (кратко)
95+
96+
| Откуда | Куда | Связь |
97+
|---------------|-------------------|--------|
98+
| main.go | app.go | NewApp, GetMediaHandler |
99+
| app.go | appcore | NewAppCore, все вызовы core.* |
100+
| app.go | network/media | GetMediaHandler |
101+
| appcore | core, identity | модели, ключи, handshake |
102+
| appcore | network/messenger | отправка/приём сообщений |
103+
| appcore | network/profiles | загрузка/сохранение профилей |
104+
| appcore | network/router | интерфейс NetworkRouter (Start, Connect, Accept) |
105+
| appcore | repository/sqlite| сохранение чатов, сообщений, контактов |
106+
| messenger | router | Connect/Accept для I2P |
107+
| messenger | proto | сериализация пакетов |
108+
| repository/sqlite | core, identity | типы Message, Contact, Identity |
109+
| embedded_router.go | network/i2pd | встроенный I2P-роутер |
110+
| Frontend | wailsjs/go/main/App.js | все вызовы методов App |
111+
112+
Репозиторий согласован: все импорты и биндинги соответствуют друг другу.
113+
114+
---
115+
116+
## Оставшиеся предупреждения (не блокируют сборку)
117+
118+
- **A11y (accessibility):** кликабельные `div` без обработки клавиатуры (on:keydown), autofocus, label без связи с контролом. Рекомендуется постепенно добавлять `role`, `tabindex` и обработчики клавиш.
119+
- **Unused CSS:** неиспользуемые селекторы в App.svelte, Sidebar.svelte, Chat.svelte, Auth.svelte, Settings.svelte (например `.btn-danger`, `.unread-badge`, `.mobile-layout .sidebar`). Можно удалить или использовать в разметке.
120+
- **Tailwind:** в конфиге не задан `content` — сгенерированный CSS может не содержать нужные утилиты; стоит указать пути к шаблонам в `tailwind.config.js`.
121+
- **Unused export:** в компонентах (Sidebar, Chat, Auth) есть `export let`, которые не используются внутри компонента — можно заменить на `export const` для только внешнего использования.
122+
123+
---
124+
125+
## Итог
126+
127+
- Критических ошибок после правок нет.
128+
- Go-код собирается, vet проходит; тесты repository/sqlite требуют CGO.
129+
- Frontend собирается, svelte-check проходит.
130+
- Полная сборка приложения (desktop) выполняется успешно.
131+
- Связи между файлами и пакетами проверены, несоответствий не найдено.

frontend/jsconfig.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,4 @@
2222
"wailsjs/**/*",
2323
"node_modules"
2424
]
25-
}
25+
}

frontend/package-lock.json

Lines changed: 60 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)