Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
21ea06f
Добавлен отчет об интеграции Templater в DIS
Boxdan Feb 19, 2025
d760ba1
Update reports.md
Boxdan Feb 19, 2025
9c1a610
Merge pull request #610 from moevm/reports
Boxdan Feb 20, 2025
2f903d3
Screencast of a deployed system reports.md
hopi44 Feb 26, 2025
bfcb968
feat: добавление ссылки на презентацию проекта
ttokyose Feb 26, 2025
592254e
feat: добавление ссылки на скринкаст (Гребенников Дмитрий)
ttokyose Feb 26, 2025
887b9a1
feat: добавление ссылки на скринкаст - Гребенников Дмитрий, добавлени…
ttokyose Feb 26, 2025
87209aa
Добавление ссылки на скринкаст Березин Дмитрий
Lucr3tia Feb 26, 2025
b840b09
Добавление текстового файла со всеми ссылками
ca11ba Feb 26, 2025
b59c6ea
Добавление ссылки на скринкаст (Гизатуллин Амир) reports.md
ca11ba Feb 26, 2025
7c32734
UI design + use cases reports.md
hopi44 Feb 26, 2025
99d7d94
Add files via upload
Boxdan Mar 26, 2025
2ea8dcf
Add files via upload
Boxdan Mar 26, 2025
35c1c34
Add files via upload
Boxdan Mar 26, 2025
e06f37f
Update reports.md
Boxdan Mar 26, 2025
eef703b
Update reports.md
Boxdan Mar 26, 2025
49b36a9
docs: adding presentation
hopi44 Mar 26, 2025
78257b6
use_case_iter_2
Boxdan Mar 26, 2025
5ebdff8
Update iteration2 reports.md
Boxdan Mar 26, 2025
8273090
Update iteration 2 reports.md
Boxdan Mar 26, 2025
4188267
docs: add system screencast
ttokyose Mar 26, 2025
5ebc059
Merge branch 'reports-dis' of https://github.com/moevm/document_insig…
ttokyose Mar 26, 2025
6ed258f
Create documentation.md
Lucr3tia May 26, 2025
47f43f5
Merge pull request #741 from moevm/670
Boxdan May 26, 2025
09b89f1
doc: adding screencast
Lucr3tia May 27, 2025
d15e2fd
Update README.md
Lucr3tia May 27, 2025
ede8c9c
Add files via upload
Boxdan May 27, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added DIS_final.pptx
Binary file not shown.
41 changes: 28 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,38 @@
## Environment
- To `.env` in root:
```
RECAPTCHA_SITE_KEY=...
RECAPTCHA_SECRET_KEY=...
SECRET_KEY=...
ADMIN_PASSWORD=...
SIGNUP_PAGE_ENABLED=...

CONSUMER_KEY=...
CONSUMER_SECRET=...
ACCESS_TOKEN=...
RECAPTCHA_SITE_KEY=
RECAPTCHA_SECRET_KEY=
SECRET_KEY=
ADMIN_PASSWORD=
SIGNUP_PAGE_ENABLED=False

CONSUMER_KEY=
CONSUMER_SECRET=

WEB_PORT=8080

REDIS_URL=redis://redis:6379/0
CELERY_QUERIES=check-solution,passback-grade

FLOWER_SECRET_KEY=SECRET_KEY
FLOWER_PORT=5555
FLOWER_AUTH=admin:password
FLOWER_PREFIX=/monitoring

MONGODB_CACHE_SIZE=1
CONTAINER_CPU=0


ACCESS_TOKEN=1234567890

DB_PORT_27017_TCP_ADDR=db

```

## Run
```
docker-compose build
docker-compose up
```

## Deploy
```
./scripts/restart.sh <apache_conf>
```
322 changes: 322 additions & 0 deletions documentation.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,322 @@
# 📘 Templater API Documentation

---

## 🔐 Аутентификация и авторизация

### `GET /start_auth`
Запускает процесс OAuth-авторизации с Google.

**Ответ:**
```json
{ "auth_url": "https://..." }
```

---

### `GET /oauth_callback?state=...&code=...`
Завершает авторизацию Google и сохраняет токен.

- Успех: редирект на `/templates`
- Ошибка: `400`, если `state` некорректен

---

## 📂 Управление шаблонами

### `GET /templates`
Возвращает HTML-страницу со списком шаблонов.

Шаблон: `templates.jinja2`

---

### `GET /add_template`
Форма добавления шаблона.

Шаблон: `add_template.jinja2`

---

### `POST /api/add_template`
Добавляет новый шаблон.

**Тело запроса (JSON):**
```json
{
"name": "Название",
"description": "Описание"
}
```

**Ответ:**
```json
{
"message": "Шаблон успешно добавлен",
"template": { ... }
}
```

---

### `GET /edit_template/{template_id}`
HTML-форма редактирования шаблона.

Шаблон: `edit_template.jinja2`

---

### `POST /edit_template/{template_id}`
Обновляет имя и описание шаблона через форму.

Редирект на `/templates`

---

### `POST /api/update_template/{template_id}`
Обновление шаблона по API.

**Тело запроса:**
```json
{
"name": "Новое имя",
"description": "Новое описание"
}
```

**Ответ:**
```json
{ "message": "Шаблон успешно обновлен" }
```

---

### `POST /delete_template/{template_id}`
Удаляет один шаблон.

**Ответ:**
```json
{ "message": "Шаблон успешно удален" }
```

---

### `GET /delete_templates`
Форма массового удаления шаблонов.

Шаблон: `delete_templates.jinja2`

---

### `POST /delete_templates`
Удаляет несколько шаблонов.

**Тело запроса:**
```json
{
"selected_templates": ["1", "2", "3"]
}
```

**Ответ:**
```json
{ "message": "Шаблоны успешно удалены" }
```

---

## 🧾 Ввод и сохранение данных шаблона

### `GET /input_template_data/{template_id}`
Форма ввода пользовательских данных.

Шаблон: `input_data_template.jinja2`

---

### `POST /api/save_template_data/{template_id}`
Сохраняет данные в шаблон.

**Тело запроса:**
```json
{
"data": {
"field_1": { "label": "Имя", "value": "Иван" },
"field_2": { "label": "Фамилия", "value": "Петров" }
}
}
```

**Ответ:**
```json
{ "message": "Данные успешно сохранены" }
```

---

### `GET /api/get_template_data_status/{template_id}`
Проверяет, есть ли сохранённые данные.

**Ответ:**
```json
{ "has_data": true }
```

---

## 📤 Экспорт шаблонов

### `POST /export_template/{template_id}`
Экспортирует шаблон как `.txt` в Google Drive.

**Тело запроса:**
```json
{ "folder_id": "GoogleDriveFolderID" }
```

**Ответ:**
```json
{
"message": "Файл успешно экспортирован в Google Drive",
"file_id": "..."
}
```

---

### `POST /export_archive_to_drive`
Загружает архив в Google Drive из GridFS.

**Тело запроса:**
```json
{ "file_id": "<id файла в GridFS>" }
```

**Ответ:**
```json
{
"message": "Файл успешно загружен в Google Drive",
"file_id": "..."
}
```

---

## 🧪 Проверка и генерация документов

### `POST /verify`
Проверяет соответствие шаблона и данных.

**Форма POST (multipart):**
- `template-id`: ID шаблона
- `data-table-id`: ID файла с данными

**Ответ:**
```json
{
"status": "OK",
"messages": ["Field X not defined in CSV"],
"fields": ["имя", "фамилия", ...]
}
```

---

### `POST /render`
Генерирует документ(ы) по шаблону и данным.

**Форма POST (multipart):**
- `template-id`
- `data-table-id`
- `name-pattern` (необязательный шаблон имени)

**Ответ:**
```json
{
"status": "OK",
"files": {
"имя1.docx": "<id>",
"имя2.docx": "<id>"
},
"archive": "<id архива>",
"archive_name": "шаблон.zip"
}
```

---

## 📁 Работа с файлами

### `POST /upload`
Загружает файл в GridFS.

**Форма:**
- `file`: файл
- `table-preview`: (опционально)

**Ответ:**
```json
{
"status": "OK",
"file_name": "filename.docx",
"file_id": "ObjectId",
"expire_at": "2024-10-01T12:00:00"
}
```

---

### `GET /files?file_id=<id>`
Скачивает файл из GridFS.

- Контент: `application/vnd.oasis.opendocument.text`
- Содержит заголовок `Content-Disposition: attachment`

---

## 🌍 Интерфейс и настройки

### `GET /`
Выводит CAPTCHA-проверку с выбором роли (`admin` или `user`).

Шаблон: `verify_captcha.jinja2`

---

### `GET /locale?language=ru`
Устанавливает языковую куку `_LOCALE_`.

Редирект на реферер.

---

### `GET /user_home`
Домашняя страница пользователя.

Шаблон: `user_home.jinja2`

---

### `GET /home`
Домашняя страница администратора.

Шаблон: `homepage.jinja2`

---

### `GET /dis`
Редирект на внешнюю систему DIS по переменной окружения `DIS_URL`.

---

## 🧱 Статика

Следующие пути отдают статические ресурсы:

```
/static/css
/static/js
/static/img
/ViewerJS
```

5 changes: 5 additions & 0 deletions meetings/2025-03-03.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Цель встречи:
- Обсуждение текущего прогресса по проекту.
- Уточнение задач и распределенных ролей для следующей итерации.
- Разрешение возникших проблем.
- Согласование сроков выполнения задач.
4 changes: 4 additions & 0 deletions meetings/2025-03-25.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Цель встречи с заказчиком:
- Обсуждение прогресса по проекту
- Уточняющие вопросы по функционалу
- Разрешение возникших проблем в проекте
4 changes: 4 additions & 0 deletions meetings/2025-03-26.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
Цель встречи:
- Обсуждение мелких доработок по итерации
- Планирование задач на итерацию 3
- Подведение и обсуждение итогов работы за месяц (итерацию)
Loading
Loading