Функции¶
Проекты, документы, команда, настройки¶
-
Проект: все документы хранятся в проектах. Первое, что видит пользователь - страница проектов. Пользователь выбирает проект, чтобы создавать в нем документы.
-
форма списка проектов, где два типа проектов: собственные и доступные (чужие).
- создать (проект, подпроект):
- имя проекта (текст 50 знаков)
- Владелец (пользователь)
- Дата/время создания
- Описание (текст 255 знаков)
- Родительский проект: может быть любой проект пользователя - можно создать подпроект сразу к проекту, в строке кнопка "создать подпроект"
- Открыть: открывает список документов проекта
- Переименовать
- Удалить
- Предоставить доступ
@startsalt
{
==Проекты | [owner<&person>]
..
{
**Проект:** | [Создать] | [Открыть]| [Удалить] | [Доступ]
}
..
{T!
+**Проект** | **Владелец**| Дата/время | **Действие**
+----|----|----|----
+Мои проекты | ---- | ---- | ----
++Проект 1 | owner | | [x]
++Проект 2 | owner | | []
++Проект 3 | owner | | []
+Доступные проекты | ---- | | ----
++Проект А | user 2 | | []
++Проект Б | user 3 | | []
++Проект В | user 4 | | []
}
}
@endsalt
-
Документы: форма списка документов проекта. Должно быть в хлебных крошках имя проекта. Представления: простой табличный список (название, тип, дата создания, владелец, доступ, последние изменения), канбан (по типам документов колонки, в колонках - ноды с названием документа, и датой создания/изменения), плюс панель свойств документа, где можно менять свойства (имя, тип...?) и доступ (или просматривать, если не владелец)
-
создать
- Переименовать
- Открыть:
- Переместить в проект
- Удалить
- Предоставить доступ (проект так же):
- Команде
- Пользователю
- Управлять доступом
@startsalt
{
==Проекты > Документы | [owner<&person>]
..
**Проект 1**
..
{
Документ: | [Создать] | [Открыть] | [Удалить] | [Доступ]
}
..
{T!
+**Проект** | Проект | **Владелец** | **Действие**
+----| ---- | ---- | ----
+Мои документы | ---- | ---- | ----
++Документ 1 | Проект 1 | owner | [x]
++Документ 2 | Проект 1 | owner | []
++Документ 3 | Проект 1 | owner | []
+Доступные документы | ---- | ---- | ----
++Документ А | Проект 1 | user 2 | []
++Документ Б | Проект 1 | user 3 | []
++Документ В | Проект 1 | user 4 | []
}
}
@endsalt
-
Команда
-
Создать
- Переименовать
- Пригласить пользователей
- Удалить
@startsalt
{
==Команды | [owner<&person>]
..
{
Команда: | [Создать] | [Открыть] | [Удалить] | [Доступ]
}
..
{T!
+**Команда / Пользователи** | **Права** | **Действие**
+----| ---- | ---- | ----
+Команда 1 | ---- | ----
++owner | Владелец | []
++user 2 | чтение / запись | [x]
++user 3 | чтение | []
+Команада 2 | ---- | ----
++owner | Владелец | []
++user Б | чтение | []
++user В | комментирование | []
}
}
@endsalt
Редактор документа¶
В редакторе 3 вертикальных панели:
- Редактор
- Граф - можно прятать.
-
Свойства - для выбранного объекта отображаются свойства во вкладках:
-
Классификатор объекта
-
Связи: текущий объект и связи с группами других объектов, сгруппированных:
-
по типам (сначала связь к ноде типа классификатора, и из нее раскрываются ноды объекта каждого типа)
- По документам И панель инструментов, на которой кнопки переключения режимов.
Импорт документов¶
Текстовый документ преобразуется в документ системы с объектами.
1) импорт маркдауна: в нем при импорте устанавливается иерарзия и последовательность. 2) импорт кода: получить список сущностей кода (классы, свойства, методы, переменные) 3) импорт диаграмм - преобразование диаграммы в документ системы
Отчеты¶
- Трассировка требований
- (См. Idea)
Управление пользователями¶
Это админка
- Добавить пользователя
- Удалить пользователя
- Изменить права доступа (?)
Регистрация¶
Уже есть.
Редактор классификатора¶
Редактор классификатора хранит все классы объектов в виде дерева.
Классы объектов используются для создания объектов с некоторым набором свойств, которые используются в бизнес-логике системы.
Классификатор древовидный. Каждый нижестоящий класс должен наследовать свойства предыдущего.
Классификатор - это граф. Классы - узлы графа. Связи между классами в классификаторе - это ребра графа.
Вопрос наследования свойств: нужно ли хранить все свойства родителя в наследнике, или в наследнике хранить только уникальные свойства? (перенести из телеграма)
Класс описывается в виде json, где каждое свойство класса описывается несколькими параметрами:
- имя параметра для использования в коде (только латиница)
- наименование параметра в интерфейсе (локализованное на язык пользователя)
- тип параметра:
- одиночный параметр
- массив
- объект
- тип данных - нужен справочник доступных типов данных.
- длина поля - по умолчанию без ограничений
- выводить интерфейсе редактора (bool) - это свойство будет выводиться в интерфейсе редактора в виде текста
- выводить в отдельном контроле (bool)
- тип контрола (или массив типов, в которых может быть выведен параметр?) - нужен справочник доступных типов контролов в зависимости от типа данных.
- ограничение на вывод по ролям (массив ролей, для которых доступен параметр)
Редактор класса¶
Функции:
- Создать класс
- Читать класс
- Редактировать класс
- Удалить класс
- Дублировать класс - чтобы создать похожий, но в другой ветке классификатора
- Создать наследника на основе текущего класса
- Создать наследника и получить дополнительные свойства из другого класса.
Форма редактора¶
Наименование класса - текстовое поле ввода. Локализованное имя класса (для вывода в интерфейсе) - текстовое поле ввода Свойства класса - грид с перечнем свойств. В грид добавляются свойства класса, поля формы для добавления свойства в таблице ниже:
| № | Параметр | Контрол | Обязательно |
|---|---|---|---|
| 1 | имя параметра для использования в коде (только латиница) | Текстовое поле | да |
| 2 | наименование параметра в интерфейсе (локализованное на язык пользователя) | Текстовое поле | да |
| 3 | тип параметра | Мультиселект | да |
| 4 | тип данных -нужен справочник доступных типов данных. | Селект | да |
| 5 | длина поля - по умолчанию без ограничений | Текстовое поле (число) | нет |
| 6 | выводить интерфейсе редактора (bool) - это свойство будет выводиться в интерфейсе редактора в виде текста | чекбокс | да |
| 7 | выводить в отдельном контроле (bool) | чекбокс | нет |
| 8 | тип контрола | Мультиселект | да, если выбрано "выводить в отдельном контроле" |
| 9 | ограничение на вывод по ролям | Мультиселект | нет (по умолчанию доступно всем) |