1
0
Fork
You've already forked asterisk-ui
0
No description
  • Go 63.3%
  • HTML 36.3%
  • Makefile 0.4%
2026年07月08日 19:36:20 +03:00
modules Детальная страница 2025年08月07日 16:52:13 +03:00
templates Детальная страница 2025年08月07日 16:52:13 +03:00
.gitignore Структура 2025年08月07日 13:25:36 +03:00
config.yaml.example База данных 2025年08月07日 13:55:11 +03:00
go.mod Интерфейс со списком 2025年08月07日 16:18:18 +03:00
go.sum Интерфейс со списком 2025年08月07日 16:18:18 +03:00
main.go Интерфейс со списком 2025年08月07日 16:18:18 +03:00
Makefile Структура 2025年08月07日 13:25:36 +03:00
README.md Readme 2026年07月08日 19:36:20 +03:00

Asterisk UI

Веб-интерфейс для просмотра истории SMS/чат-сообщений Asterisk

Простое read-only веб-приложение на Go, которое подключается к базе данных PostgreSQL Asterisk и отображает историю сообщений из таблицы chat_history. Позволяет просматривать список номеров с последними сообщениями и детальную переписку по каждому номеру.


Возможности

  • Список номеров — постраничный просмотр всех телефонных номеров, имеющих историю сообщений. Для каждого номера отображается последнее сообщение, его автор и дата.
  • Детальный просмотр — полная хронология сообщений по выбранному номеру телефона с постраничной навигацией.
  • Flash-сообщения — уведомления об ошибках и успешных операциях через cookie.
  • Русскоязычный интерфейс — все надписи на русском языке.
  • Пагинация — 100 записей на страницу.

Технологический стек

Компонент Технология
Язык Go 1.24.5
Веб-фреймворк Echo v4
ORM GORM v1.30.1 + PostgreSQL driver
Конфигурация cleanenv (YAML)
Шаблонизатор Go html/template
Стилизация Bootstrap 5.3.7 (CDN)
Логирование log/slog с кастомным handler
Сборка Go toolchain + Makefile

Структура проекта

asterisk-ui/
├── main.go # Точка входа
├── go.mod / go.sum # Модуль и зависимости
├── Makefile # Команды сборки и запуска
├── config.yaml.example # Пример конфигурации
├── modules/
│ ├── config/
│ │ └── config.go # Структура конфига и загрузка из YAML
│ ├── database/
│ │ ├── models/
│ │ │ └── chat_history.go # GORM-модель таблицы chat_history
│ │ └── repository.go # Репозиторий (SQL-запросы)
│ ├── dto/
│ │ └── phone_list.go # DTO для списка номеров
│ ├── logger/
│ │ ├── handler.go # Кастомный обработчик slog
│ │ └── logger.go # Обёртка логгера
│ └── web/
│ ├── controller.go # HTTP-обработчики
│ ├── template.go # Рендерер шаблонов для Echo
│ └── web.go # Настройка сервера и маршруты
└── templates/
 ├── index.html # Страница списка номеров
 └── phone.html # Страница детального просмотра

Архитектура

 ┌─────────────┐
 │ Браузер │
 └──────┬──────┘
 │ HTTP
 ┌──────▼──────┐
 │ Echo v4 │
 │ :3000 │
 └──────┬──────┘
 │
 ┌──────────────┼──────────────┐
 │ │ │
 GET / GET /detail/:phone
 │ │
 ┌─────▼─────┐ ┌────▼────────┐
 │ index() │ │ phone() │
 └─────┬─────┘ └──────┬──────┘
 │ │
 ┌─────▼───────────────▼─────┐
 │ Repository (GORM) │
 │ PostgreSQL │
 └─────┬─────────────────────┘
 │
 ┌─────▼─────┐
 │ PostgreSQL │
 │ (Asterisk) │
 └───────────┘

Приложение работает по классической серверной схеме (SSR):

  1. Браузер отправляет HTTP-запрос
  2. Echo-маршрутизатор направляет его в соответствующий контроллер
  3. Контроллер вызывает методы репозитория, которые выполняют SQL-запросы через GORM
  4. Результаты передаются в HTML-шаблоны, рендерятся на сервере и возвращаются браузеру

Ключевые особенности:

  • Нет JavaScript-фреймворков, SPA или клиентского роутинга
  • Нет REST API — данные рендерятся сразу в HTML
  • Нет Docker, nginx или контейнеризации — запускается как standalone-бинарник
  • Состояние хранится на сервере; flash-сообщения передаются через cookie
  • Пагинация управляется через query-параметр ?page=

Маршруты

Метод Путь Описание
GET / Список номеров с последним сообщением
GET /detail/:phone История сообщений для номера

Модель данных

Приложение работает с таблицей chat_history:

Поле Тип Описание
id uint (PK, auto increment) Идентификатор записи
session_id varchar(100) ID сессии
role varchar(10) Роль (отправитель) — например, user или bot
message text Текст сообщения
timestamp timestamp Дата и время сообщения
phone bigint Номер телефона

Требования

  • Go 1.24.5 или новее
  • PostgreSQL с таблицей chat_history (база данных Asterisk)

Установка и запуск

1. Клонирование

git clone https://codeberg.org/adikalon-work/asterisk-ui
cd asterisk-ui

2. Настройка конфигурации

Скопируйте пример конфига и отредактируйте под своё окружение:

cp config.yaml.example config.yaml

Пример содержимого config.yaml:

port:3000db_host:localhostdb_port:5432db_user:userdb_password:passworddb_database:asterisk

3. Сборка

make build
# или: go build

Будет создан бинарный файл asterisk-ui.

4. Запуск

make run
# или: go build && ./asterisk-ui

Сервер запустится на порту, указанном в конфигурации (по умолчанию 3000).

Откройте в браузере: http://localhost:3000


Развёртывание

  1. Скопируйте скомпилированный бинарник asterisk-ui на целевой сервер
  2. Поместите config.yaml рядом с бинарником
  3. Поместите папку templates/ рядом с бинарником (путь до шаблонов вычисляется относительно расположения исполняемого файла)
  4. Запустите: ./asterisk-ui

Команды Makefile

Команда Описание
make build Сборка проекта (go build)
make run Сборка и запуск (go build && ./asterisk-ui)