Use Video label in PDF links and preserve deployment safeguards
This commit is contained in:
@@ -32,6 +32,10 @@
|
||||
|
||||
## Работа с проектом
|
||||
|
||||
- С 13 октября 2026 года сервер содержит рабочие данные. Не выполнять серверные операции без согласованной задачи; прежнее разрешение на первоначальное развёртывание не разрешает последующие обновления.
|
||||
- Миграции должны сохранять текущие данные. Перед применением на сервере проверить SQL, создать резервную копию и проверить её восстановление и миграцию в отдельной тестовой БД. Не запускать тесты на рабочей базе.
|
||||
- Не пересоздавать рабочую БД, не удалять её тома и не заменять её локальной базой. Потенциально разрушающие изменения требуют отдельного согласования и плана переноса данных.
|
||||
- Учитывать автоматическое применение миграций при запуске приложения: перезапуск новой версии также может изменить БД. При обнаружении проблемы на сервере остановиться и спросить пользователя до исправления.
|
||||
- После изменений выполнять сборку и проверки, соответствующие изменению.
|
||||
- Поддерживать README и `.env.example` в соответствии с реальной конфигурацией.
|
||||
- Не заявлять о проверке Docker, БД, PDF или UI, если соответствующая проверка не выполнена.
|
||||
|
||||
+1
-1
@@ -14,6 +14,6 @@ FROM mcr.microsoft.com/dotnet/aspnet:10.0 AS runtime
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends fonts-dejavu-core libgssapi-krb5-2 && rm -rf /var/lib/apt/lists/*
|
||||
WORKDIR /app
|
||||
RUN mkdir -p /app/keys && chown $APP_UID /app/keys
|
||||
COPY --from=build /app ./
|
||||
COPY --from=build --chown=$APP_UID:$APP_UID /app ./
|
||||
USER $APP_UID
|
||||
ENTRYPOINT ["dotnet", "TrainingPlanner.Web.dll"]
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# Развёртывание на сервере
|
||||
|
||||
## Текущее правило эксплуатации — 13 октября 2026
|
||||
|
||||
Пользователь завершил настройку сервера; база содержит рабочие данные. Описанные ниже параметры первоначального развёртывания — историческая справка, а не подтверждение текущей конфигурации.
|
||||
|
||||
Без согласованной задачи сервер не изменять. Перед миграцией проверить SQL на потерю данных, создать резервную копию, проверить её восстановление и выполнение миграции в отдельной тестовой БД. Сохранность текущих данных обязательна. Не пересоздавать базу, не удалять тома и не подменять рабочие данные локальными. Учитывать миграции, автоматически выполняемые при старте приложения. При обнаружении проблемы остановиться и согласовать дальнейшие действия.
|
||||
|
||||
## Первоначальное развёртывание — 30 сентября 2026
|
||||
|
||||
- Подключение: `ssh trainplan` (алиас из локальной SSH-конфигурации).
|
||||
- Каталог развёртывания: `/home/dimass/training-planner`.
|
||||
- Исходники: подкаталог `repository`, ветка `main`, коммит `ad3cd6f`.
|
||||
- Compose-проект: `trainingplanner`, отдельные сеть и тома.
|
||||
- Приложение: `127.0.0.1:8001`, только через локальный reverse proxy.
|
||||
- PostgreSQL не публикует порт на хосте. При первоначальном развёртывании была создана пустая база; сейчас она содержит рабочие данные.
|
||||
- `compose.yaml`, `.env`, `app.env` и `access.txt` находятся вне Git-репозитория.
|
||||
- Логин тренера: `trainer`; сгенерированный пароль находится в `access.txt`, доступном только владельцу.
|
||||
|
||||
## Управление
|
||||
|
||||
```sh
|
||||
cd /home/dimass/training-planner
|
||||
docker compose ps
|
||||
docker compose logs --tail 100 app
|
||||
```
|
||||
|
||||
Не выполнять `docker system prune`, `docker volume prune` или `docker compose down -v`: на сервере есть другие проекты, а тома этого приложения содержат базу и ключи авторизации.
|
||||
|
||||
## HTTPS — исторические результаты проверки
|
||||
|
||||
При проверке 30 сентября 2026 года Nginx для `trainplan.samsonium.ru` слушает только порт 80 и проксирует на `http://127.0.0.1:8001`. На порту 443 выдаётся сертификат `search.samsonium.ru`, истёкший 19 ноября 2025 года. Конфигурация Nginx и сертификаты при развёртывании приложения не изменяются.
|
||||
|
||||
На момент первоначальной проверки требовалась настройка HTTPS администратором. 13 октября пользователь сообщил, что завершил настройку сервера; повторная проверка не выполнялась. Прежнюю проблему сертификата не считать актуальной без новой проверки в рамках согласованной задачи.
|
||||
@@ -85,8 +85,7 @@ public class PdfWeekTableBuilder(PdfOptions options)
|
||||
if (!string.IsNullOrWhiteSpace(exercise.VideoUrl))
|
||||
{
|
||||
var link = row.Cells[6].AddParagraph().AddHyperlink(exercise.VideoUrl, HyperlinkType.Url);
|
||||
// Invisible break opportunities keep long URLs within the cell; the target stays unchanged.
|
||||
link.AddText(string.Join("\u200B", exercise.VideoUrl.Select(character => character.ToString())));
|
||||
link.AddText("Видео");
|
||||
link.Font.Color = Color.Parse(options.AccentColor);
|
||||
link.Font.Underline = Underline.Single;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user