forked from hasslesstech/edu-dis-labs
		
	Compare commits
	
		
			28 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| ba81f91189 | |||
| bf9e6364b9 | |||
| c941ac2022 | |||
| 2229e75644 | |||
| f71e97b6ff | |||
| 3679f641e5 | |||
| 5702bdce4d | |||
| c8787ad1f7 | |||
| 302fd36c34 | |||
| 9feddb6bac | |||
| 941c5be8f3 | |||
| 577e565552 | |||
| c70ddad444 | |||
| 3dc979873b | |||
| 6fdb3b9072 | |||
| 2c392feee6 | |||
| 9b538c7d8e | |||
| 28fd966167 | |||
| 47a3e33c03 | |||
| 61f9f6e5e0 | |||
| a5cef512ce | |||
| 6de002b175 | |||
| 1da2840938 | |||
| 688e2a7984 | |||
| 02e4da8050 | |||
| 0ae26a6d0a | |||
| e1499383d1 | |||
| 53734e9998 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -106,3 +106,5 @@ dist
 | 
			
		||||
# utils/table-generator generated files
 | 
			
		||||
utils/table-generator/tables/
 | 
			
		||||
utils/table-generator/tables.md
 | 
			
		||||
utils/table-generator/activities/
 | 
			
		||||
utils/table-generator/activities.md
 | 
			
		||||
 | 
			
		||||
@ -36,6 +36,15 @@ module.exports = {
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Розроблення вимог до системи',
 | 
			
		||||
        path:"/requirements/",
 | 
			
		||||
        children: [
 | 
			
		||||
            "/requirements/state-of-the-art",
 | 
			
		||||
            "/requirements/stakeholders-needs"
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
      title: 'Розроблення вимог до функціональности системи',
 | 
			
		||||
      path:"/use-cases/"
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    {
 | 
			
		||||
@ -93,8 +102,8 @@ module.exports = {
 | 
			
		||||
    // editLinkText: 'Ви можете покращити цю сторінку'
 | 
			
		||||
 | 
			
		||||
  },
 | 
			
		||||
  title: 'Назва проєкту',
 | 
			
		||||
  description: 'Лабораторні роботи з дисципліни "Розподілені інформаційні системи"',
 | 
			
		||||
  title: 'Xpertise',
 | 
			
		||||
  description: 'Лабораторні роботи з дисципліни "Організація баз даних"',
 | 
			
		||||
  configureWebpack: {
 | 
			
		||||
    resolve: {
 | 
			
		||||
      alias: {
 | 
			
		||||
 | 
			
		||||
@ -1,11 +1,6 @@
 | 
			
		||||
# Проєктування системи
 | 
			
		||||
# Проєктування бази даних
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Вбудовування зображень діаграм здійснюється з використанням сервісу [plantuml.com](https://plantuml.com/). 
 | 
			
		||||
 | 
			
		||||
В markdown-файлі використовується опис діаграми
 | 
			
		||||
 | 
			
		||||
```md
 | 
			
		||||
## BE модель
 | 
			
		||||
 | 
			
		||||
<center style="
 | 
			
		||||
    border-radius:4px;
 | 
			
		||||
@ -16,34 +11,58 @@
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
participant Client
 | 
			
		||||
entity Account <<ENTITY>>
 | 
			
		||||
entity Account.username <<TEXT>>
 | 
			
		||||
entity Account.password <<TEXT>>
 | 
			
		||||
 | 
			
		||||
participant SR as "Service Registry"
 | 
			
		||||
entity Survey <<ENTITY>>
 | 
			
		||||
entity Survey.name <<TEXT>>
 | 
			
		||||
entity Survey.duration <<TEXT>>
 | 
			
		||||
entity Survey.isPaused <<BOOLEAN>>
 | 
			
		||||
entity Survey.isNamed <<BOOLEAN>>
 | 
			
		||||
 | 
			
		||||
participant Service
 | 
			
		||||
entity Question <<ENTITY>>
 | 
			
		||||
entity Question.text <<TEXT>>
 | 
			
		||||
 | 
			
		||||
Service -> SR : register
 | 
			
		||||
SR -> SR
 | 
			
		||||
SR --> Service
 | 
			
		||||
...
 | 
			
		||||
entity Responce <<ENTITY>>
 | 
			
		||||
entity Responce.value <<TEXT>>
 | 
			
		||||
 | 
			
		||||
SR -> Service: heartbeat
 | 
			
		||||
SR <-- Service: health
 | 
			
		||||
...
 | 
			
		||||
entity Link <<ENTITY>>
 | 
			
		||||
entity Link.usageLimit <<INT>>
 | 
			
		||||
entity Link.responceLimit <<INT>>
 | 
			
		||||
entity Link.uses <<INT>>
 | 
			
		||||
entity Link.responces <<INT>>
 | 
			
		||||
entity Link.path <<TEXT>>
 | 
			
		||||
 | 
			
		||||
Client -> SR: find
 | 
			
		||||
Client <-- SR: service endpoint
 | 
			
		||||
Client -> Service: request
 | 
			
		||||
Client <-- Service: response
 | 
			
		||||
Account.username --* Account
 | 
			
		||||
Account.password --* Account
 | 
			
		||||
 | 
			
		||||
Survey.name --* Survey
 | 
			
		||||
Survey.duration --* Survey
 | 
			
		||||
Survey.isPaused --* Survey
 | 
			
		||||
Survey.isNamed --* Survey
 | 
			
		||||
 | 
			
		||||
Link.usageLimit -u-* Link
 | 
			
		||||
Link.responceLimit -u-* Link
 | 
			
		||||
Link.uses --* Link
 | 
			
		||||
Link.responces --* Link
 | 
			
		||||
Link.path -u-* Link
 | 
			
		||||
 | 
			
		||||
Responce.value -u-* Responce
 | 
			
		||||
 | 
			
		||||
Question.text -u-* Question
 | 
			
		||||
 | 
			
		||||
Account "1,1" -- "0,*" Survey
 | 
			
		||||
Survey "1,1" -- "0,*" Question
 | 
			
		||||
Question "1,1" -r- "0,*" Responce
 | 
			
		||||
Account "0,1" -r- "0,*" Responce
 | 
			
		||||
Link "0,*" -- "1,1" Survey
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
яка буде відображена наступним чином
 | 
			
		||||
## ER-модель
 | 
			
		||||
 | 
			
		||||
<center style="
 | 
			
		||||
    border-radius:4px;
 | 
			
		||||
@ -54,33 +73,58 @@ Client <-- Service: response
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
    @startuml
 | 
			
		||||
entity Account <<ENTITY>> {
 | 
			
		||||
    id:INT
 | 
			
		||||
    username:CHAR(64)
 | 
			
		||||
    password:CHAR(256)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
participant Client
 | 
			
		||||
entity Responce <<ENTITY>> {
 | 
			
		||||
    id:INT
 | 
			
		||||
    value:CHAR(16384)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
participant SR as "Service Registry"
 | 
			
		||||
entity Question <<ENTITY>> {
 | 
			
		||||
    id:INT
 | 
			
		||||
    text:CHAR(256)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
participant Service
 | 
			
		||||
 | 
			
		||||
Service -> SR : register
 | 
			
		||||
SR -> SR
 | 
			
		||||
SR --> Service
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
SR -> Service: heartbeat
 | 
			
		||||
SR <-- Service: health
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
Client -> SR: find
 | 
			
		||||
Client <-- SR: service endpoint
 | 
			
		||||
Client -> Service: request
 | 
			
		||||
Client <-- Service: response
 | 
			
		||||
entity Survey <<ENTITY>> {
 | 
			
		||||
    id:INT
 | 
			
		||||
    name:CHAR(256)
 | 
			
		||||
    duration:CHAR(256)
 | 
			
		||||
    isPaused:BOOLEAN
 | 
			
		||||
    isNamed:BOOLEAN
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
entity Link <<ENTITY>> {
 | 
			
		||||
    id:INT
 | 
			
		||||
    uses:INT
 | 
			
		||||
    responces:INT
 | 
			
		||||
    usageLimit:INT
 | 
			
		||||
    responceLimit:INT
 | 
			
		||||
    path:CHAR(32)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Responce "0,*" --> "1,1" Question
 | 
			
		||||
Question "0,*" --> "1,1" Survey
 | 
			
		||||
Survey "0,*" --> "1,1" Account
 | 
			
		||||
Link "0,*" --> "1,1" Survey
 | 
			
		||||
Responce "0,*" --> "0,1" Account
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
## Реляційна схема
 | 
			
		||||
 | 
			
		||||
<center style="
 | 
			
		||||
    border-radius:4px;
 | 
			
		||||
    border: 1px solid #cfd7e6;
 | 
			
		||||
    box-shadow: 0 1px 3px 0 rgba(89,105,129,.05), 0 1px 1px 0 rgba(0,0,0,.025);
 | 
			
		||||
    padding: 1em;"
 | 
			
		||||
>
 | 
			
		||||
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								docs/design/relational_scheme.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								docs/design/relational_scheme.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 49 KiB  | 
@ -93,6 +93,33 @@
 | 
			
		||||
| Виключні ситуації |                                                                                                                                                             001.005 Користувач не ідентифікований                                                                                                                                                              |
 | 
			
		||||
| Основний сценарій | 1. Користувач натискає на кнопку редагування облікового запису<br>2. Система виводить інтерфейс для редагування облікового запису (можлива 001.005)<br>3. Користувач вказує бажані зміни властивостей облікового запису<br>4. Користувач натискає на кнопку внесення змін до властивостей облікового запису<br>5. Система змінює властивості облікового запису |
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                                                                                                  SURVEY.LINK.CREATE                                                                                                                                                  |
 | 
			
		||||
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                                                                                            Додати посилання на опитування                                                                                                                                            |
 | 
			
		||||
|      Учасники     |                                                                                                                                                 Користувач, система                                                                                                                                                  |
 | 
			
		||||
|     Передумови    |                                                                                                                                          Користувач авторизований у системі                                                                                                                                          |
 | 
			
		||||
|     Результат     |                                                                                                                                             Нове посилання на опитування                                                                                                                                             |
 | 
			
		||||
| Виключні ситуації |                                                                                            001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування                                                                                             |
 | 
			
		||||
| Основний сценарій | 1. Користувач натискає кнопку створення посилання на опитування<br>2. Система виводить налаштування для нового посилання (можливі 001.005, 001.006, 001.008)<br>3. Користувач вводить налаштування для нового посилання<br>4. Користувач натискає на кнопку створення посилання<br>5. Система створює нове посилання |
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                                                                          SURVEY.LINK.DELETE                                                                                                                          |
 | 
			
		||||
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                                                                   Видалити посилання на опитування                                                                                                                   |
 | 
			
		||||
|      Учасники     |                                                                                                                         Користувач, система                                                                                                                          |
 | 
			
		||||
|     Передумови    |                                                                                                                  Користувач авторизований у системі                                                                                                                  |
 | 
			
		||||
|     Результат     |                                                                                                                  Видалення посилання на опитування                                                                                                                   |
 | 
			
		||||
| Виключні ситуації |                                                 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує                                                 |
 | 
			
		||||
| Основний сценарій | 1. Користувач натискає кнопку видалення посилання<br>2. Система виводить кнопку підтвердження видалення посилання<br>3. Користувач натискає на кнопку підтвердження видалення посилання<br>4. Система видаляє посилання (можливі 001.005, 001.006, 001.008, 001.009) |
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                                                                                                                   SURVEY.LINK.MODIFY                                                                                                                                                                   |
 | 
			
		||||
|:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                                                                                                      Змінити властивості посилання на опитування                                                                                                                                                       |
 | 
			
		||||
|      Учасники     |                                                                                                                                                                  Користувач, система                                                                                                                                                                   |
 | 
			
		||||
|     Передумови    |                                                                                                                                                           Користувач авторизований у системі                                                                                                                                                           |
 | 
			
		||||
|     Результат     |                                                                                                                                                       Зміна властивостей посилання на опитування                                                                                                                                                       |
 | 
			
		||||
| Виключні ситуації |                                                                                          001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує                                                                                          |
 | 
			
		||||
| Основний сценарій | 1. Користувач натискає кнопку редагування властивостей посилання<br>2. Система виводить налаштування для обраного посилання (можливі 001.005, 001.006, 001.008, 001.009)<br>3. Користувач вводить юажані зміни властивостей посилання<br>4. Користувач натискає на кнопку збереження властиностей посилання<br>5. Система змінює властивості посилання |
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                                                                                                                            USER.CREATE_SURVEY                                                                                                                                                                            |
 | 
			
		||||
|:-----------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                                                                                                                           Створити опитування                                                                                                                                                                            |
 | 
			
		||||
@ -210,6 +237,9 @@ Cистема розділяє користувачів на дві катего
 | 
			
		||||
- створити опитування
 | 
			
		||||
- відредагувати своє опитування
 | 
			
		||||
- видалити своє опитування
 | 
			
		||||
- створити посилання на своє опитування
 | 
			
		||||
- редагувати властивості посилання на своє опитування
 | 
			
		||||
- видалити посилання на своє опитування
 | 
			
		||||
- призупинити своє опитування
 | 
			
		||||
- продовжити своє опитування
 | 
			
		||||
- переглянути властивості свого опитування
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,113 @@
 | 
			
		||||
# Реалізація інформаційного та програмного забезпечення
 | 
			
		||||
 | 
			
		||||
## SQL-скрипт для створення та початкового наповнення бази даних
 | 
			
		||||
 | 
			
		||||
```sql
 | 
			
		||||
-- MySQL Workbench Forward Engineering
 | 
			
		||||
 | 
			
		||||
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
 | 
			
		||||
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
 | 
			
		||||
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Schema mydb
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Schema mydb
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
 | 
			
		||||
USE `mydb` ;
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Account`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Account` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `username` CHAR(255) NOT NULL,
 | 
			
		||||
  `password` CHAR(255) NOT NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Survey`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Survey` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `isPaused` TINYINT UNSIGNED NOT NULL,
 | 
			
		||||
  `isNamed` TINYINT UNSIGNED NOT NULL,
 | 
			
		||||
  `name` CHAR(255) NULL,
 | 
			
		||||
  `duration` CHAR(255) NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  CONSTRAINT `fk_Survey_Account1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Account` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Question`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Question` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `Text` CHAR(255) NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  CONSTRAINT `fk_Question_Survey1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Survey` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Response`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Response` (
 | 
			
		||||
  `id` INT UNSIGNED NULL AUTO_INCREMENT,
 | 
			
		||||
  `Value` VARCHAR(16384) NULL,
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  CONSTRAINT `fk_Response_Question`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Question` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION,
 | 
			
		||||
  CONSTRAINT `fk_Response_Account1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Account` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Link`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Link` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `uses` INT NOT NULL,
 | 
			
		||||
  `responces` INT NOT NULL,
 | 
			
		||||
  `usageLimit` INT NULL,
 | 
			
		||||
  `responceLimit` INT NULL,
 | 
			
		||||
  `path` CHAR(32) NOT NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  CONSTRAINT `fk_Link_Survey1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Survey` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SET SQL_MODE=@OLD_SQL_MODE;
 | 
			
		||||
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
 | 
			
		||||
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
 | 
			
		||||
```
 | 
			
		||||
@ -17,6 +17,9 @@
 | 
			
		||||
    (<b>ACCOUNT.CREATE</b>\nСтворити обліковий запис) as CreateAccount
 | 
			
		||||
    (<b>ACCOUNT.DELETE</b>\nВидалити обліковий запис) as DeleteAccount
 | 
			
		||||
    (<b>ACCOUNT.MODIFY</b>\nЗмінити властивості облікового запису) as ModifyAccount
 | 
			
		||||
    (<b>SURVEY.LINK.CREATE</b>\nСтворити посилання на опитування) as CreateLink
 | 
			
		||||
    (<b>SURVEY.LINK.DELETE</b>\nВидалити посилання на опитування) as DeleteLink
 | 
			
		||||
    (<b>SURVEY.LINK.MODIFY</b>\nЗмінити властивості посилання на опитування) as ModifyLink
 | 
			
		||||
    (<b>USER.CREATE_SURVEY</b>\nСтворити опитування) as CreateSurvey
 | 
			
		||||
    (<b>USER.DELETE_SURVEY</b>\nВидалити опитування) as DeleteSurvey
 | 
			
		||||
    (<b>USER.GET_SURVEY_RESULT</b>\nПереглянути відповіді на опитування) as GetSurveyResult
 | 
			
		||||
@ -33,6 +36,9 @@
 | 
			
		||||
 | 
			
		||||
    AuthorisedUser -r-> ModifyAccount
 | 
			
		||||
    AuthorisedUser -u-> DeleteAccount
 | 
			
		||||
    AuthorisedUser -r-> CreateLink
 | 
			
		||||
    AuthorisedUser -l-> DeleteLink
 | 
			
		||||
    AuthorisedUser -u-> ModifyLink
 | 
			
		||||
    AuthorisedUser -u-> LogOut
 | 
			
		||||
    AuthorisedUser --> CreateSurvey
 | 
			
		||||
    AuthorisedUser -u-> DeleteSurvey
 | 
			
		||||
@ -44,4 +50,455 @@
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
</center>
 | 
			
		||||
</center>
 | 
			
		||||
 | 
			
		||||
## Схеми використання для окремих діячів
 | 
			
		||||
 | 
			
		||||
Схема використання для гостя:
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
    :Гість: as Guest
 | 
			
		||||
 | 
			
		||||
    (<b>ACCOUNT.CREATE</b>\nСтворити обліковий запис) as CreateAccount
 | 
			
		||||
    (<b>USER.LOGIN</b>\nПройти ідентифікацію в системі) as LogIn
 | 
			
		||||
    (<b>USER.TAKE_ANON_SURVEY</b>\nПройти анонімне опитування) as TakeAnonSurvey
 | 
			
		||||
 | 
			
		||||
    Guest -u-> CreateAccount
 | 
			
		||||
    Guest --> LogIn
 | 
			
		||||
    Guest -r-> TakeAnonSurvey
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
Схема використання для зареєстрованого користувача:
 | 
			
		||||
 | 
			
		||||
@startuml
 | 
			
		||||
 | 
			
		||||
    :Зареєстрований користувач: as AuthorisedUser
 | 
			
		||||
 | 
			
		||||
    (<b>ACCOUNT.DELETE</b>\nВидалити обліковий запис) as DeleteAccount
 | 
			
		||||
    (<b>ACCOUNT.MODIFY</b>\nЗмінити властивості облікового запису) as ModifyAccount
 | 
			
		||||
    (<b>USER.CREATE_SURVEY</b>\nСтворити опитування) as CreateSurvey
 | 
			
		||||
    (<b>USER.DELETE_SURVEY</b>\nВидалити опитування) as DeleteSurvey
 | 
			
		||||
    (<b>USER.GET_SURVEY_RESULT</b>\nПереглянути відповіді на опитування) as GetSurveyResult
 | 
			
		||||
    (<b>USER.LOGOUT</b>\nСкинути дані про ідентифікацію в системі) as LogOut
 | 
			
		||||
    (<b>USER.MODIFY_SURVEY</b>\nРедагувати опитування) as ModifySurvey
 | 
			
		||||
    (<b>USER.STAT_SURVEY</b>\nПереглянути властивості опитування) as StatSurvey
 | 
			
		||||
    (<b>USER.TAKE_ANON_SURVEY</b>\nПройти анонімне опитування) as TakeAnonSurvey
 | 
			
		||||
    (<b>USER.TAKE_NAMED_SURVEY</b>\nПройти поіменне опитування) as TakeNamedSurvey
 | 
			
		||||
    (<b>SURVEY.LINK.CREATE</b>\nСтворити посилання на опитування) as CreateLink
 | 
			
		||||
    (<b>SURVEY.LINK.DELETE</b>\nВидалити посилання на опитування) as DeleteLink
 | 
			
		||||
    (<b>SURVEY.LINK.MODIFY</b>\nЗмінити властивості посилання на опитування) as ModifyLink
 | 
			
		||||
 | 
			
		||||
    AuthorisedUser -r-> ModifyAccount
 | 
			
		||||
    AuthorisedUser -u-> DeleteAccount
 | 
			
		||||
    AuthorisedUser -r-> CreateLink
 | 
			
		||||
    AuthorisedUser -l-> DeleteLink
 | 
			
		||||
    AuthorisedUser -u-> ModifyLink
 | 
			
		||||
    AuthorisedUser -u-> LogOut
 | 
			
		||||
    AuthorisedUser -d-> CreateSurvey
 | 
			
		||||
    AuthorisedUser -u-> DeleteSurvey
 | 
			
		||||
    AuthorisedUser --> StatSurvey
 | 
			
		||||
    AuthorisedUser -d-> ModifySurvey
 | 
			
		||||
    AuthorisedUser --> GetSurveyResult
 | 
			
		||||
    AuthorisedUser -l-> TakeAnonSurvey
 | 
			
		||||
    AuthorisedUser -d-> TakeNamedSurvey
 | 
			
		||||
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
## Сценарії використання
 | 
			
		||||
### Для гостя
 | 
			
		||||
 | 
			
		||||
|         ID        |                                             ACCOUNT.CREATE                                             |
 | 
			
		||||
|:-----------------:|:------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                        Створити обліковий запис                                        |
 | 
			
		||||
|      Учасники     |                                          Користувач, система                                           |
 | 
			
		||||
|     Передумови    |                                                Відсутні                                                |
 | 
			
		||||
|     Результат     |                                      Обліковий запис користувача                                       |
 | 
			
		||||
| Виключні ситуації | 001.001 Користувач ввів заборонені символи в поле псевдоніму<br>001.002 Ідентичний псевдонім вже існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Вводить бажаний псевдонім у поле вводу псевдоніму;
 | 
			
		||||
    : Вводить пароль у поле вводу паролю;
 | 
			
		||||
    : Натискає на кнопку створення облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Створює обліковий запис користувача;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.001, 001.002</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                                            USER.LOGIN                                                                                           |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                                  Пройти ідентифікацію в системі                                                                                 |
 | 
			
		||||
|      Учасники     |                                                                                       Користувач, система                                                                                       |
 | 
			
		||||
|     Передумови    |                                                                                  Користувач має обліковий запис                                                                                 |
 | 
			
		||||
|     Результат     |                                                                               Користувач ідентифікований в системі                                                                              |
 | 
			
		||||
| Виключні ситуації | 001.001 Користувач ввів заборонені символи в поле псевдоніму<br>001.003 Користувач ввів псевдонім, якого не існує в системі<br>001.004 Користувач ввів неправильний пароль до облікового запису |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Вводить псевдонім у поле вводу псевдоніму;
 | 
			
		||||
    : Вводить пароль у поле вводу паролю;
 | 
			
		||||
    : Натискає кнопку ідентифікації;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Ідентифікує користувача;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.001, 001.003, 001.004</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |        USER.TAKE_ANON_SURVEY         |
 | 
			
		||||
|:-----------------:|:------------------------------------:|
 | 
			
		||||
|       Назва       |      Пройти анонімне опитування      |
 | 
			
		||||
|      Учасники     |         Користувач, система          |
 | 
			
		||||
|     Передумови    |               Відсутні               |
 | 
			
		||||
|     Результат     |    Запис відповідей на опитування    |
 | 
			
		||||
| Виключні ситуації | 001.006 Запитане опитування не існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Переходить на сторінку проходження опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить перелік запитань опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вводить відповіді на запитання;
 | 
			
		||||
    : Натискає кнопку надсилання відповідей;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Записує відповіді на опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    : Виводить прощальне повідомлення;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
### Для зареєстрованого користувача
 | 
			
		||||
 | 
			
		||||
|         ID        |               ACCOUNT.DELETE              |
 | 
			
		||||
|:-----------------:|:-----------------------------------------:|
 | 
			
		||||
|       Назва       |          Видалити обліковий запис         |
 | 
			
		||||
|      Учасники     |            Користувач, система            |
 | 
			
		||||
|     Передумови    |    Користувач ідентифікований в системі   |
 | 
			
		||||
|     Результат     | Відсутність облікового запису користувача |
 | 
			
		||||
| Виключні ситуації |   001.005 Користувач не ідентифікований   |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку видалення облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить кнопку-запит на підтвердження видалення облікового запису;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Натискає на кнопку підтвердження видалення облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Видаляє обліковий запис;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.005</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |             ACCOUNT.MODIFY            |
 | 
			
		||||
|:-----------------:|:-------------------------------------:|
 | 
			
		||||
|       Назва       | Змінити властивості облікового запису |
 | 
			
		||||
|      Учасники     |          Користувач, система          |
 | 
			
		||||
|     Передумови    |  Користувач ідентифікований в системі |
 | 
			
		||||
|     Результат     |  Зміна властивостей облікового запису |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку редагування облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить інтерфейс для редагування облікового запису;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.005</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вказує бажані зміни властивостей облікового запису;
 | 
			
		||||
    : Натискає на кнопку внесення змін до властивостей облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Змінює властивості облікового запису;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                       SURVEY.LINK.CREATE                                                      |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                 Додати посилання на опитування                                                |
 | 
			
		||||
|      Учасники     |                                                      Користувач, система                                                      |
 | 
			
		||||
|     Передумови    |                                               Користувач авторизований у системі                                              |
 | 
			
		||||
|     Результат     |                                                  Нове посилання на опитування                                                 |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає кнопку створення посилання на опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить налаштування для нового посилання;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вводить налаштування для нового посилання;
 | 
			
		||||
    : Натискає на кнопку створення посилання;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Створює нове посилання;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                          SURVEY.LINK.DELETE                                                                          |
 | 
			
		||||
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                                   Видалити посилання на опитування                                                                   |
 | 
			
		||||
|      Учасники     |                                                                         Користувач, система                                                                          |
 | 
			
		||||
|     Передумови    |                                                                  Користувач авторизований у системі                                                                  |
 | 
			
		||||
|     Результат     |                                                                  Видалення посилання на опитування                                                                   |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає кнопку видалення посилання;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить кнопку підтвердження видалення посилання;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Натискає на кнопку підтвердження видалення посилання;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Видаляє посилання;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008, 001.009</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                                          SURVEY.LINK.MODIFY                                                                          |
 | 
			
		||||
|:-----------------:|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                             Змінити властивості посилання на опитування                                                              |
 | 
			
		||||
|      Учасники     |                                                                         Користувач, система                                                                          |
 | 
			
		||||
|     Передумови    |                                                                  Користувач авторизований у системі                                                                  |
 | 
			
		||||
|     Результат     |                                                              Зміна властивостей посилання на опитування                                                              |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування<br>001.009 Запитане посилання на існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає кнопку редагування властивостей посилання;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить налаштування для обраного посилання;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008, 001.009</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вводить юажані зміни властивостей посилання;
 | 
			
		||||
    : Натискає на кнопку збереження властиностей посилання;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Змінює властивості посилання;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                            USER.CREATE_SURVEY                                            |
 | 
			
		||||
|:-----------------:|:--------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                           Створити опитування                                            |
 | 
			
		||||
|      Учасники     |                                           Користувач, система                                            |
 | 
			
		||||
|     Передумови    |                                   Користувач ідентифікований в системі                                   |
 | 
			
		||||
|     Результат     |                                           Створене опитування                                            |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.007 Користувач ввів неприпустимі символи в назві опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Переходить на сторінку створення опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.005</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить інтерфейс створення опитування;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Задає інформацію про запитання та тип опитування;
 | 
			
		||||
    : Натискає кнопку збереження опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Створює опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.007</b>
 | 
			
		||||
    end note
 | 
			
		||||
    : Виводить посилання на проходження опитування;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                       USER.DELETE_SURVEY                                                      |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                      Видалити опитування                                                      |
 | 
			
		||||
|      Учасники     |                                                      Користувач, система                                                      |
 | 
			
		||||
|     Передумови    |                            Користувач ідентифікований в системі, користувач є власником опитування                            |
 | 
			
		||||
|     Результат     |                                                     Відсутність опитування                                                    |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку видалення опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить запит на підтвердження видалення опитування;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Натискає на кнопку підтвердження видалення опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Видаляє опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                     USER.GET_SURVEY_RESULT                                                    |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                              Переглянути відповіді на опитування                                              |
 | 
			
		||||
|      Учасники     |                                                      Користувач, система                                                      |
 | 
			
		||||
|     Передумови    |                            Користувач ідентифікований в системі, користувач є власником опитування                            |
 | 
			
		||||
|     Результат     |                                             Інформація про відповіді на опитування                                            |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку перегляду відповідей на опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить інформацію про відповіді на опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |               USER.LOGOUT                |
 | 
			
		||||
|:-----------------:|:----------------------------------------:|
 | 
			
		||||
|       Назва       | Скинути дані про ідентифікацію в системі |
 | 
			
		||||
|      Учасники     |           Користувач, система            |
 | 
			
		||||
|     Передумови    |   Користувач ідентифікований в системі   |
 | 
			
		||||
|     Результат     | Користувач не ідентифікований в системі  |
 | 
			
		||||
| Виключні ситуації |  001.005 Користувач не ідентифікований   |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку виходу з облікового запису;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Скидає інформацію про ідентифікацію користувача;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.005</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                       USER.MODIFY_SURVEY                                                      |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                                     Редагувати опитування                                                     |
 | 
			
		||||
|      Учасники     |                                                      Користувач, система                                                      |
 | 
			
		||||
|     Передумови    |                            Користувач ідентифікований в системі, користувач є власником опитування                            |
 | 
			
		||||
|     Результат     |                                                       Змінене опитування                                                      |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Переходить на сторінку редагування опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить інтерфейс редагування опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Задає інформацію про зміни в опитуванні;
 | 
			
		||||
    : Натискає кнопку збереження змін в опитуванні;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Змінює опитування;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                                                        USER.STAT_SURVEY                                                       |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                                               Переглянути властивості опитування                                              |
 | 
			
		||||
|      Учасники     |                                                      Користувач, система                                                      |
 | 
			
		||||
|     Передумови    |                            Користувач ідентифікований в системі, користувач є власником опитування                            |
 | 
			
		||||
|     Результат     |                                             Інформація про властивості опитування                                             |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує<br>001.008 Користувач не є власником опитування |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Натискає на кнопку перегляду інформації про опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить інформацію про опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006, 001.008</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |        USER.TAKE_ANON_SURVEY         |
 | 
			
		||||
|:-----------------:|:------------------------------------:|
 | 
			
		||||
|       Назва       |      Пройти анонімне опитування      |
 | 
			
		||||
|      Учасники     |         Користувач, система          |
 | 
			
		||||
|     Передумови    |               Відсутні               |
 | 
			
		||||
|     Результат     |    Запис відповідей на опитування    |
 | 
			
		||||
| Виключні ситуації | 001.006 Запитане опитування не існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Переходить на сторінку проходження опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить перелік запитань опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вводить відповіді на запитання;
 | 
			
		||||
    : Натискає кнопку надсилання відповідей;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Записує відповіді на опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    : Виводить прощальне повідомлення;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
|         ID        |                             USER.TAKE_NAMED_SURVEY                            |
 | 
			
		||||
|:-----------------:|:-----------------------------------------------------------------------------:|
 | 
			
		||||
|       Назва       |                           Пройти поіменне опитування                          |
 | 
			
		||||
|      Учасники     |                              Користувач, система                              |
 | 
			
		||||
|     Передумови    |                      Користувач ідентифікований в системі                     |
 | 
			
		||||
|     Результат     |          Запис відповідей на опитування та відомості про користувача          |
 | 
			
		||||
| Виключні ситуації | 001.005 Користувач не ідентифікований<br>001.006 Запитане опитування не існує |
 | 
			
		||||
@startuml
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    start
 | 
			
		||||
    : Переходить на сторінку проходження опитування;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Виводить перелік запитань опитування;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можливі 001.005, 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    : Вводить відповіді на запитання;
 | 
			
		||||
    : Натискає кнопку надсилання відповідей;
 | 
			
		||||
    |Система|
 | 
			
		||||
    : Записує відповіді на опитування та відомості про користувача;
 | 
			
		||||
    note right #lightpink
 | 
			
		||||
        <b>Можлива 001.006</b>
 | 
			
		||||
    end note
 | 
			
		||||
    : Виводить прощальне повідомлення;
 | 
			
		||||
    |Користувач|
 | 
			
		||||
    stop
 | 
			
		||||
@enduml
 | 
			
		||||
 | 
			
		||||
@ -1,2 +1,3 @@
 | 
			
		||||
# програмні коди
 | 
			
		||||
В цьому розділі розміщені програмні коди.
 | 
			
		||||
# JS-скрипти
 | 
			
		||||
 | 
			
		||||
В цьому розділі розміщені програмні коди javascript.
 | 
			
		||||
							
								
								
									
										3
									
								
								src/sql/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/sql/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,3 @@
 | 
			
		||||
# SQL-скрипти
 | 
			
		||||
 | 
			
		||||
В цьому розділі розміщені сирцеві коди для створення бази даних.
 | 
			
		||||
							
								
								
									
										107
									
								
								src/sql/script.sql
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										107
									
								
								src/sql/script.sql
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,107 @@
 | 
			
		||||
-- MySQL Workbench Forward Engineering
 | 
			
		||||
 | 
			
		||||
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
 | 
			
		||||
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
 | 
			
		||||
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Schema mydb
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Schema mydb
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 ;
 | 
			
		||||
USE `mydb` ;
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Account`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Account` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `username` CHAR(255) NOT NULL,
 | 
			
		||||
  `password` CHAR(255) NOT NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  UNIQUE INDEX `username_UNIQUE` (`username` ASC) VISIBLE)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Survey`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Survey` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `isPaused` TINYINT UNSIGNED NOT NULL,
 | 
			
		||||
  `isNamed` TINYINT UNSIGNED NOT NULL,
 | 
			
		||||
  `name` CHAR(255) NULL,
 | 
			
		||||
  `duration` CHAR(255) NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  CONSTRAINT `fk_Survey_Account1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Account` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Question`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Question` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `Text` CHAR(255) NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  CONSTRAINT `fk_Question_Survey1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Survey` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Response`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Response` (
 | 
			
		||||
  `id` INT UNSIGNED NULL AUTO_INCREMENT,
 | 
			
		||||
  `Value` VARCHAR(16384) NULL,
 | 
			
		||||
  UNIQUE INDEX `id_UNIQUE` (`id` ASC) VISIBLE,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  CONSTRAINT `fk_Response_Question`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Question` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION,
 | 
			
		||||
  CONSTRAINT `fk_Response_Account1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Account` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
-- Table `mydb`.`Link`
 | 
			
		||||
-- -----------------------------------------------------
 | 
			
		||||
CREATE TABLE IF NOT EXISTS `mydb`.`Link` (
 | 
			
		||||
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
 | 
			
		||||
  `uses` INT NOT NULL,
 | 
			
		||||
  `responces` INT NOT NULL,
 | 
			
		||||
  `usageLimit` INT NULL,
 | 
			
		||||
  `responceLimit` INT NULL,
 | 
			
		||||
  `path` CHAR(32) NOT NULL,
 | 
			
		||||
  PRIMARY KEY (`id`),
 | 
			
		||||
  CONSTRAINT `fk_Link_Survey1`
 | 
			
		||||
    FOREIGN KEY (`id`)
 | 
			
		||||
    REFERENCES `mydb`.`Survey` (`id`)
 | 
			
		||||
    ON DELETE NO ACTION
 | 
			
		||||
    ON UPDATE NO ACTION)
 | 
			
		||||
ENGINE = InnoDB;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SET SQL_MODE=@OLD_SQL_MODE;
 | 
			
		||||
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
 | 
			
		||||
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
 | 
			
		||||
@ -34,6 +34,27 @@ def convert_usecase_v1(filename, data):
 | 
			
		||||
 | 
			
		||||
    return generate_table(merged_lines)
 | 
			
		||||
 | 
			
		||||
def convert_activity_v1(filename, data):
 | 
			
		||||
    split_raw_lines_from_file = [i.split(" | ") for i in data.split("\n") if i]
 | 
			
		||||
 | 
			
		||||
    if '/' in filename:
 | 
			
		||||
        use_case_name = filename.rsplit("/", 1)[1].upper()
 | 
			
		||||
    elif '\\' in filename:
 | 
			
		||||
        use_case_name = filename.rsplit("\\", 1)[1].upper()
 | 
			
		||||
    else:
 | 
			
		||||
        use_case_name = filename.upper()
 | 
			
		||||
 | 
			
		||||
    split_raw_lines = [["ID", use_case_name]] + split_raw_lines_from_file
 | 
			
		||||
 | 
			
		||||
    merged_lines = []
 | 
			
		||||
    for i in split_raw_lines:
 | 
			
		||||
        if i[0].replace(" ", "") == "":
 | 
			
		||||
            merged_lines[-1][1] += "<br>" + i[1]
 | 
			
		||||
        else:
 | 
			
		||||
            merged_lines.append(i)
 | 
			
		||||
 | 
			
		||||
    return generate_table_with_activity_diagram(merged_lines)
 | 
			
		||||
 | 
			
		||||
def generate_table(raw_table_data):
 | 
			
		||||
    table_lines = raw_table_data
 | 
			
		||||
    transposed_table = list(zip(*table_lines))
 | 
			
		||||
@ -60,15 +81,101 @@ def generate_table(raw_table_data):
 | 
			
		||||
 | 
			
		||||
    return "\n".join(formatted_table_lines)
 | 
			
		||||
 | 
			
		||||
def convert_line_to_activity_diagram(line):
 | 
			
		||||
    split_line = line[1].split("<br>")
 | 
			
		||||
 | 
			
		||||
    result = "@startuml\n    %PLACEHOLDER%\nstop\n@enduml"
 | 
			
		||||
 | 
			
		||||
    last_swimline_name = ""
 | 
			
		||||
    initiator_name = ""
 | 
			
		||||
 | 
			
		||||
    for i in split_line:
 | 
			
		||||
        clear_line = i.lstrip("1234567890. ")
 | 
			
		||||
        swimline_label, combined_action = clear_line.split(" ", 1)
 | 
			
		||||
 | 
			
		||||
        action_and_exceptions = combined_action.split(" (")
 | 
			
		||||
 | 
			
		||||
        if len(action_and_exceptions) > 1:
 | 
			
		||||
            action = action_and_exceptions[0].strip().capitalize()
 | 
			
		||||
            exceptions = action_and_exceptions[1].strip(") ").capitalize()
 | 
			
		||||
        else:
 | 
			
		||||
            action = action_and_exceptions[0].strip().capitalize()
 | 
			
		||||
            exceptions = ""
 | 
			
		||||
 | 
			
		||||
        # запам'ятовуємо назву користувача системи
 | 
			
		||||
        # (він завжди починає взаємодію, а, отже,
 | 
			
		||||
        # перша дія завжди належить йому)
 | 
			
		||||
        if not initiator_name:
 | 
			
		||||
            initiator_name = swimline_label
 | 
			
		||||
 | 
			
		||||
        # змінюємо swinline, якщо керування перейшло до іншого актора
 | 
			
		||||
        if last_swimline_name != swimline_label:
 | 
			
		||||
            result = result.replace("%PLACEHOLDER%", f"|{swimline_label}|\n    %PLACEHOLDER%")
 | 
			
		||||
 | 
			
		||||
            # якщо це перша дія, то вказуємо start
 | 
			
		||||
            if not last_swimline_name:
 | 
			
		||||
                result = result.replace("%PLACEHOLDER%", f"start\n    %PLACEHOLDER%")
 | 
			
		||||
 | 
			
		||||
            # зберігаємо нове ім'я актора
 | 
			
		||||
            last_swimline_name = swimline_label
 | 
			
		||||
 | 
			
		||||
        # прописуємо поточну дію актора
 | 
			
		||||
        result = result.replace("%PLACEHOLDER%", f": {action};\n    %PLACEHOLDER%")
 | 
			
		||||
 | 
			
		||||
        # якщо є виключні ситуації, додаємо інформацію про них
 | 
			
		||||
        if exceptions:
 | 
			
		||||
            result = result.replace("%PLACEHOLDER%", f"note right #lightpink\n        <b>{exceptions}</b>\n    end note\n    %PLACEHOLDER%")
 | 
			
		||||
 | 
			
		||||
    # впенюємося, що взаємодія закінчується на swinline користувача
 | 
			
		||||
    if last_swimline_name != initiator_name:
 | 
			
		||||
        result = result.replace("%PLACEHOLDER%", f"|{initiator_name}|\n    %PLACEHOLDER%")
 | 
			
		||||
 | 
			
		||||
    # видаляємо мітку %PLACEHOLDER%
 | 
			
		||||
    result = result.replace("%PLACEHOLDER%\n", "")
 | 
			
		||||
    return result
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def generate_table_with_activity_diagram(raw_table_data):
 | 
			
		||||
    table_lines = raw_table_data[:-1]
 | 
			
		||||
    activity_line = raw_table_data[-1]
 | 
			
		||||
 | 
			
		||||
    transposed_table = list(zip(*table_lines))
 | 
			
		||||
 | 
			
		||||
    field_sizes = [max([max([len(k)+2 for k in j.split("\n")]) for j in i]) for i in transposed_table]
 | 
			
		||||
 | 
			
		||||
    formatted_table_lines = []
 | 
			
		||||
 | 
			
		||||
    l = "|"
 | 
			
		||||
    for i, field in enumerate(table_lines[0]):
 | 
			
		||||
        l += field.center(field_sizes[i])
 | 
			
		||||
        l += "|"
 | 
			
		||||
 | 
			
		||||
    formatted_table_lines.append(l)
 | 
			
		||||
    formatted_table_lines.append(f"|{'|'.join([':'+'-'*(i-2)+':' for i in field_sizes])}|")
 | 
			
		||||
 | 
			
		||||
    for line in table_lines[1:]:
 | 
			
		||||
        l = "|"
 | 
			
		||||
        for i, field in enumerate(line):
 | 
			
		||||
            l += field.center(field_sizes[i])
 | 
			
		||||
            l += "|"
 | 
			
		||||
 | 
			
		||||
        formatted_table_lines.append(l)
 | 
			
		||||
 | 
			
		||||
    activity_diagram = convert_line_to_activity_diagram(activity_line)
 | 
			
		||||
 | 
			
		||||
    return "\n".join(formatted_table_lines) + "\n" + activity_diagram
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__=="__main__":
 | 
			
		||||
    # parse args
 | 
			
		||||
    files = []
 | 
			
		||||
 | 
			
		||||
    write_to_file = AUTO
 | 
			
		||||
    write_to_stdout = AUTO
 | 
			
		||||
    usecase_formatting = AUTO
 | 
			
		||||
    verbose = AUTO
 | 
			
		||||
    process_table_files = AUTO
 | 
			
		||||
    convert_to_activity_diagram = AUTO
 | 
			
		||||
    file_output_path = None
 | 
			
		||||
 | 
			
		||||
    # 1 pass (argument harvest)
 | 
			
		||||
@ -104,6 +211,12 @@ if __name__=="__main__":
 | 
			
		||||
            elif i in ["-nt", "--no-process-table"]:
 | 
			
		||||
                process_table_files = NO
 | 
			
		||||
 | 
			
		||||
            # перетворює останню клітинку таблиці в діаграму активностей
 | 
			
		||||
            if i in ["-a", "--convert-to-activity-diagram"]:
 | 
			
		||||
                convert_to_activity_diagram = YES
 | 
			
		||||
            elif i in ["-na", "--no-convert-to-activity-diagram"]:
 | 
			
		||||
                convert_to_activity_diagram = NO
 | 
			
		||||
 | 
			
		||||
            # задає папку, в яку необхідно зберігати конвертовані таблиці
 | 
			
		||||
            elif i in ["-d", "--destination"]:
 | 
			
		||||
                file_output_path = sys.argv[n+2]
 | 
			
		||||
@ -133,7 +246,14 @@ if __name__=="__main__":
 | 
			
		||||
        elif (name.endswith(".usecase") or name.endswith(".uc")) and usecase_formatting >= AUTO:
 | 
			
		||||
            if verbose == YES:
 | 
			
		||||
                print(f"Auto-detected use-case in file {name}\n")
 | 
			
		||||
            formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
 | 
			
		||||
            if convert_to_activity_diagram == YES:
 | 
			
		||||
                if verbose == YES:
 | 
			
		||||
                    print(f"Converting file {name} to activity diagram\n")
 | 
			
		||||
 | 
			
		||||
                formatted_table_data = convert_activity_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
            else:
 | 
			
		||||
                formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
        else:
 | 
			
		||||
            formatted_table_data = convert_generic_v1(data)
 | 
			
		||||
 | 
			
		||||
@ -162,7 +282,14 @@ if __name__=="__main__":
 | 
			
		||||
        elif (name.endswith(".usecase") or name.endswith(".uc")) and usecase_formatting >= AUTO:
 | 
			
		||||
            if verbose >= AUTO:
 | 
			
		||||
                print(f"Auto-detected use-case in file {name}")
 | 
			
		||||
            formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
 | 
			
		||||
            if convert_to_activity_diagram == YES:
 | 
			
		||||
                if verbose == YES:
 | 
			
		||||
                    print(f"Converting file {name} to activity diagram\n")
 | 
			
		||||
 | 
			
		||||
                formatted_table_data = convert_activity_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
            else:
 | 
			
		||||
                formatted_table_data = convert_usecase_v1(name.rsplit(".", 1)[0], data)
 | 
			
		||||
        else:
 | 
			
		||||
            formatted_table_data = convert_generic_v1(data)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										8
									
								
								utils/table-generator/update-activities.py
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										8
									
								
								utils/table-generator/update-activities.py
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
 | 
			
		||||
import updater
 | 
			
		||||
 | 
			
		||||
target_folder = "activities"
 | 
			
		||||
converter_args = "-a -nv"
 | 
			
		||||
 | 
			
		||||
updater.process(target_folder, converter_args)
 | 
			
		||||
							
								
								
									
										13
									
								
								utils/table-generator/update-activities.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										13
									
								
								utils/table-generator/update-activities.sh
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
#!/bin/sh
 | 
			
		||||
 | 
			
		||||
mkdir -p activities/
 | 
			
		||||
./convert.py use-cases/* -a -nv -d activities/
 | 
			
		||||
 | 
			
		||||
if [ -f activities.md ]; then
 | 
			
		||||
    rm activities.md
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
for i in activities/*; do
 | 
			
		||||
    cat $i >> activities.md
 | 
			
		||||
    echo "" >> activities.md
 | 
			
		||||
done
 | 
			
		||||
							
								
								
									
										8
									
								
								utils/table-generator/update-tables.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								utils/table-generator/update-tables.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,8 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
 | 
			
		||||
import updater
 | 
			
		||||
 | 
			
		||||
target_folder = "tables"
 | 
			
		||||
converter_args = "-nv"
 | 
			
		||||
 | 
			
		||||
updater.process(target_folder, converter_args)
 | 
			
		||||
							
								
								
									
										26
									
								
								utils/table-generator/updater.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								utils/table-generator/updater.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
#!/usr/bin/python3
 | 
			
		||||
 | 
			
		||||
import shutil
 | 
			
		||||
import sys
 | 
			
		||||
import os
 | 
			
		||||
 | 
			
		||||
PYTHON_INTERPRETER = sys.executable
 | 
			
		||||
 | 
			
		||||
def process(target_folder, converter_args):
 | 
			
		||||
    if os.path.exists(target_folder):
 | 
			
		||||
        shutil.rmtree(target_folder)
 | 
			
		||||
 | 
			
		||||
    os.mkdir(target_folder)
 | 
			
		||||
    os.system(f"{PYTHON_INTERPRETER} convert.py use-cases/* {converter_args} -d {target_folder}/")
 | 
			
		||||
 | 
			
		||||
    result_file = open(f"{target_folder}.md", "w")
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        for i in os.listdir(target_folder):
 | 
			
		||||
            with open(os.path.abspath(f"{target_folder}/{i}")) as f:
 | 
			
		||||
                result_file.write(f.read())
 | 
			
		||||
                result_file.write("\n")
 | 
			
		||||
    except Exception as e:
 | 
			
		||||
        print(f"File {target_folder}/{i} has raised exception {e}")
 | 
			
		||||
 | 
			
		||||
    result_file.close()
 | 
			
		||||
							
								
								
									
										12
									
								
								utils/table-generator/use-cases/survey.link.create.uc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								utils/table-generator/use-cases/survey.link.create.uc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
Назва | Додати посилання на опитування
 | 
			
		||||
Учасники | Користувач, система
 | 
			
		||||
Передумови | Користувач авторизований у системі
 | 
			
		||||
Результат | Нове посилання на опитування
 | 
			
		||||
Виключні ситуації | 001.005 Користувач не ідентифікований
 | 
			
		||||
                  | 001.006 Запитане опитування не існує
 | 
			
		||||
                  | 001.008 Користувач не є власником опитування
 | 
			
		||||
Основний сценарій | 1. Користувач натискає кнопку створення посилання на опитування
 | 
			
		||||
                  | 2. Система виводить налаштування для нового посилання (можливі 001.005, 001.006, 001.008)
 | 
			
		||||
                  | 3. Користувач вводить налаштування для нового посилання
 | 
			
		||||
                  | 4. Користувач натискає на кнопку створення посилання
 | 
			
		||||
                  | 5. Система створює нове посилання
 | 
			
		||||
							
								
								
									
										12
									
								
								utils/table-generator/use-cases/survey.link.delete.uc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								utils/table-generator/use-cases/survey.link.delete.uc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
Назва | Видалити посилання на опитування
 | 
			
		||||
Учасники | Користувач, система
 | 
			
		||||
Передумови | Користувач авторизований у системі
 | 
			
		||||
Результат | Видалення посилання на опитування
 | 
			
		||||
Виключні ситуації | 001.005 Користувач не ідентифікований
 | 
			
		||||
                  | 001.006 Запитане опитування не існує
 | 
			
		||||
                  | 001.008 Користувач не є власником опитування
 | 
			
		||||
                  | 001.009 Запитане посилання на існує
 | 
			
		||||
Основний сценарій | 1. Користувач натискає кнопку видалення посилання
 | 
			
		||||
                  | 2. Система виводить кнопку підтвердження видалення посилання
 | 
			
		||||
                  | 3. Користувач натискає на кнопку підтвердження видалення посилання
 | 
			
		||||
                  | 4. Система видаляє посилання (можливі 001.005, 001.006, 001.008, 001.009)
 | 
			
		||||
							
								
								
									
										13
									
								
								utils/table-generator/use-cases/survey.link.modify.uc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								utils/table-generator/use-cases/survey.link.modify.uc
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
Назва | Змінити властивості посилання на опитування
 | 
			
		||||
Учасники | Користувач, система
 | 
			
		||||
Передумови | Користувач авторизований у системі
 | 
			
		||||
Результат | Зміна властивостей посилання на опитування
 | 
			
		||||
Виключні ситуації | 001.005 Користувач не ідентифікований
 | 
			
		||||
                  | 001.006 Запитане опитування не існує
 | 
			
		||||
                  | 001.008 Користувач не є власником опитування
 | 
			
		||||
                  | 001.009 Запитане посилання на існує
 | 
			
		||||
Основний сценарій | 1. Користувач натискає кнопку редагування властивостей посилання
 | 
			
		||||
                  | 2. Система виводить налаштування для обраного посилання (можливі 001.005, 001.006, 001.008, 001.009)
 | 
			
		||||
                  | 3. Користувач вводить юажані зміни властивостей посилання
 | 
			
		||||
                  | 4. Користувач натискає на кнопку збереження властиностей посилання
 | 
			
		||||
                  | 5. Система змінює властивості посилання
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user