210 lines
9.1 KiB
Markdown
210 lines
9.1 KiB
Markdown
# Завершённая работа
|
||
|
||
## Конституция проекта
|
||
- Язык: Go 1.25.6
|
||
- Рамка: нет определённой рамки (голый Go)
|
||
- База данных: Нет базы данных
|
||
- Инфраструктура: Web сервер на Go
|
||
|
||
## Кодинг Стандарты
|
||
- Линтер: gofmt
|
||
- Форматтер: gofmt
|
||
- Название: ниже указанные конвенции
|
||
- Максимальная длина функции: нет определённой максимальной длины
|
||
- Максимальная вложенность: нет определённой максимальной вложенности
|
||
|
||
## Тестирование
|
||
- Минимальный порог покрытия: нет определённого минимума покрытия
|
||
- Фреймворк: тесты написаны в Go, используется стандартная библиотека
|
||
- Требования: тесты должны быть написаны для каждого функционала и проверить все важные сценарии
|
||
|
||
## Ограничения
|
||
- Не использовать секреты в коде (хранить их в .skaro/secrets.yaml)
|
||
- Не использовать неинициализированные переменные
|
||
- Не использовать глобальные переменные, если это возможно
|
||
- Не использовать устаревшие функции и пакеты
|
||
|
||
## Безопасность
|
||
- Авторизация: нет авторизации в коде (доступ к API ограничен по IP)
|
||
- Валидация ввода: проверяется валидность данных перед обработкой
|
||
- Секреты: хранятся в .skaro/secrets.yaml
|
||
|
||
## Правила для работы с LLM
|
||
- Не оставлять пустые stubs без явного TODO с обоснованием
|
||
- Не копировать код: предпочитать реюза и чистую абстракцию
|
||
- Не делать неявные допущения — если не уверен, спрашивать
|
||
- Всегда генерировать AI_NOTES.md по шаблону
|
||
- Следовать кодинг стилю описанному выше
|
||
|
||
## Архитектура проекта
|
||
### Обзор
|
||
Монолитная архитектура.
|
||
|
||
### Компоненты
|
||
- `cmd/gskaro` — основной модуль, содержит главный файл `main.go`, отвечающий за запуск сервера.
|
||
- `internal/llm` — пакет, содержащий модели, состояния и потоков для работы с LLM (Language Learning Machine).
|
||
- `internal/server` — пакет, содержащий серверный код, включая обработчики и сервер.
|
||
- `internal/server/web` — подпакет, содержащий HTML файлы и Go-код для работы с веб-интерфейсом.
|
||
|
||
### Данные хранения
|
||
Не используется база данных.
|
||
|
||
### Связь
|
||
Используется REST (Web сервер на Go).
|
||
|
||
### Инфраструктура
|
||
Не обнаружено конкретной инфраструктуры, но присутствуют скрипты `build.bat`, `init-gskaro.bat` и `start-gskaro.bat`.
|
||
|
||
### Внешние интеграции
|
||
Нет обнаруженных внешних интеграций третьих услуг или API.
|
||
|
||
## Безопасность
|
||
- Авторизация отсутствует, доступ к API ограничен по IP.
|
||
- Валидация ввода происходит перед обработкой.
|
||
- Секреты хранятся в `.skaro/secrets.yaml`.
|
||
|
||
## Известные торговые компромиссы
|
||
Не обнаружено явных торговых компромиссов, но присутствует отсутствие авторизации и использование монолитной архитектуры.
|
||
|
||
## Структура репозитория
|
||
```
|
||
.git/
|
||
.gitignore
|
||
.skaro/
|
||
.skaroignore
|
||
build.bat
|
||
cmd/
|
||
cmd/gskaro/
|
||
cmd/gskaro/main.go
|
||
go.mod
|
||
init-gskaro.bat
|
||
internal/
|
||
internal/llm/
|
||
internal/llm/models.go
|
||
internal/llm/state.go
|
||
internal/llm/stream.go
|
||
internal/server/
|
||
internal/server/handlers_llm.go
|
||
internal/server/server.go
|
||
internal/server/web/
|
||
internal/server/web/index.html
|
||
internal/server/web_static.go
|
||
README.md
|
||
start-gskaro.bat
|
||
```
|
||
|
||
## Источники файлов
|
||
```.gitignore
|
||
# ── Skaro (auto-generated, do not remove this marker) ──
|
||
# This section is managed by `skaro init`. Do NOT delete it.
|
||
# You may add your own rules below the closing marker.
|
||
#
|
||
# Secrets — API keys, never commit!
|
||
.skaro/secrets.yaml
|
||
|
||
# Usage tracking — local stats, not project artifacts
|
||
.skaro/token_usage.yaml
|
||
.skaro/usage_log.jsonl
|
||
# ── /Skaro ─────────────────────────────────────────────
|
||
```
|
||
|
||
```.skaroignore
|
||
# .skaroignore — файлы исключенные от LLM анализа во время `skaro init`
|
||
# Синтаксис идентичен .gitignore.
|
||
# Добавьте пути, содержащие чувствительную, приватную или неактуальную информацию.
|
||
#
|
||
# ── Секреты & кредиентали ──────────────────────────────
|
||
.env
|
||
.env.*
|
||
!.env.example
|
||
*.pem
|
||
*.key
|
||
*.p12
|
||
*.pfx
|
||
secrets.*
|
||
credentials.*
|
||
*_secret*
|
||
*_credentials*
|
||
# ── Частные данные & дампы ───────────────────────────────
|
||
*.sql
|
||
*.dump
|
||
*.db
|
||
*.sqlite
|
||
*.sqlite3
|
||
data/
|
||
datasets/
|
||
fixtures/private/
|
||
# ── Генерированные & вендированные ──────────────────────
|
||
vendor/
|
||
third_party/
|
||
generated/
|
||
auto_generated/
|
||
# ── Крупные ассеты ───────────────────────────────────────
|
||
assets/
|
||
media/
|
||
uploads/
|
||
storage/
|
||
```
|
||
|
||
```build.bat
|
||
go build -o gskaro-v1.exe ./cmd/gskaro
|
||
|
||
pause
|
||
```
|
||
|
||
```cmd/gskaro/main.go
|
||
package main
|
||
|
||
import "gskaro-v1/internal/server"
|
||
|
||
func main() {
|
||
server.Start()
|
||
}
|
||
|
||
```
|
||
|
||
```go.mod
|
||
module gskaro-v1
|
||
|
||
go 1.25.6
|
||
|
||
```
|
||
|
||
```init-gskaro.bat
|
||
gskaro-v1.exe init
|
||
|
||
pause
|
||
|
||
|
||
init
|
||
```
|
||
|
||
### Функциональная область LLM Console
|
||
- **LLM консоль**: веб-интерфейс для работы с моделями языкового обучения машин (LLM) (`internal/server/web/index.html`, `internal/server/handlers_llm.go`)
|
||
- Статус: complete
|
||
- Детали: позволяет выбирать модель, вводить запросы и просматривать результаты работы модели
|
||
|
||
### Функциональная область LLM Models
|
||
- **LLM Модели**: список доступных моделей языкового обучения машин (`internal/llm/models.go`, `internal/server/handlers_llm.go`)
|
||
- Статус: complete
|
||
- Детали: позволяет выбирать модель для работы с LLM Console
|
||
|
||
### Функциональная область LLM History
|
||
- **История LLM**: просмотр истории запросов и ответов модели (`internal/llm/state.go`, `internal/server/handlers_llm.go`)
|
||
- Статус: complete
|
||
- Детали: позволяет просматривать историю работы модели с LLM Console
|
||
|
||
### Функциональная область LLM Streaming
|
||
- **Стриминг ответов**: получение результатов работы модели по частям (`internal/llm/stream.go`, `internal/server/handlers_llm.go`)
|
||
- Статус: complete
|
||
- Детали: используется для обработки длинных ответов модели
|
||
|
||
### Функциональная область Web Server
|
||
- **Web сервер**: веб-сервер на Go, обеспечивающий доступ к LLM Console и другим функционалам (`internal/server/server.go`, `internal/server/web_static.go`)
|
||
- Статус: complete
|
||
- Детали: позволяет запустить веб-сервер с различными ресурсами, включая HTML и Go код для LLM Console
|
||
|
||
### Функциональная область Build Scripts
|
||
- **Скрипты сборки**: скрипты для сборки и запуска проекта (`build.bat`, `init-gskaro.bat`, `start-gskaro.bat`)
|
||
- Статус: complete
|
||
- Детали: позволяют собрать и запустить веб-сервер на Windows |