Вопросы - это просто замечательно, сама начинаешь лучше понимать
To bas:
1.Задача реальная, досталась в наследство приложение, по которому спецификации не полные. На данный момент самое адекватное от чего решила отталкиваться - это структура базы и соответственно само приложение, т.е. его работа. Благо приложение и база небольшие. Вот для лучшего понимания решила себе смоделировать систему.
2.Типизация пользователя отсутствует так же как и типизация компаний, объяснить это можно тем что в оно и то же время пользователь как и компания может быть разных типов.
3.Исходя из пункта 3 боюсь, что если показывать грузоотправителя и перевозчика разными сущностями можно потерять свойство что одна компания может быть и тем и другим в одно и то же время но по отношению к разным компаниям. А разные свойства определяются по наличию тех или иных функций.
4.Вот для дальнейшей разработки я решила начать с типизирования функций. Приложение построено таким образом что функции достаточно локальные (даже в интерфейсе разделены на отдельные табы). Есть пара стандартных функций, которые обязательны, одна из который определяет админа компании. В дальнейшем каждая компания может добавлять себе функции. И например при добавлении определенной функции она становится Грузоотправителем, который может пригласить другую компанию как перевозчика, для компании перевозчика, которая регистрируется по приглашению помимо стандартных функций добавляется еще функция, которая определяет перевозчика.
To Galogen:
1.У компании может быть несколько администраторов, первый пользователь который регистрируется вместе с компанией обязательно администратор, дальше он может дать права на функцию администрирования другим пользователям
2.Админ имеет доступ ко всем функциям компании в том числе и к функции администрирования - под чем понимается раздача прав пользователям на функции компании. Обозреватель - это отдельный "загадочный зверек" его особо не администрируют (только приглашают, блокируют, удаляют) -> по приглашению регистрируется пользователь со своей компанией и в отличии от обычно зарегистрированного пользователя обозреватель в своем эккаунте может просматривать некоторые данные пригласившей его компании, но ни прав ни функций к эккаунту пригласившей компании он не имеет
3.Скажем так у каждой функции(для лучшего понимания функцию можно определить как модуль) есть набор прав на некие подфункции. На данный момент Пользователь- администратор компании может определять для других пользователей доступ к целым функциям (модулям), при чем автоматически пользователю присваиваются все права на данную функцию. Это некая закладка на будущее чтобы в дальнейшем можно было администрировать и давать помимо доступа к функции (модулю) еще и набор тех или иных прав, предусмотренных данной функцией.
4.К сожалению ни отчетов ни документов нет.