409 lines
11 KiB
Plaintext
409 lines
11 KiB
Plaintext
#### Application Draft ####
|
||
|
||
Token (Save AS) => User => Employee => Menu
|
||
+ User ID
|
||
+ People ID
|
||
+ User Info
|
||
+ Employee ID
|
||
+ Request [IP + header]
|
||
+ List of reachable Endpoint Codes [Array]
|
||
+ CompanyId + CompanyUUID
|
||
+ DutyId + DutyUUID [duty_id]
|
||
+ Priority ID, Priority Code [priority_id ,priority_code]
|
||
|
||
Company & Customer [Common Attributes]
|
||
o User
|
||
o People
|
||
|
||
--- Customer [Structure]
|
||
|
||
Build +
|
||
BuildPart +
|
||
is_rentable = True (Life Space)
|
||
is_rentable = False (Non-life Space)
|
||
LivingSpace [Property] + // a human living in BuildPart in a given timeline
|
||
|
||
LivingSpace Branches
|
||
Property[Owner] +
|
||
Property[Tenant] +
|
||
|
||
Financial Assets +
|
||
|
||
--- Company [Gives Service]
|
||
|
||
Company +
|
||
Employee +
|
||
|
||
Company Responsiablity = Company[Employee] => Group[Customer]
|
||
|
||
--- Services [Receives Services]
|
||
|
||
+ Property Renovation Dues [Customer Financial Assets ]
|
||
+ Property Goverment Tax Dues [Customer Financial Assets ]
|
||
+ Property Building Dues [Customer Financial Assets ]
|
||
+ Heating Systems [HAG]
|
||
|
||
Optional Extra tutu
|
||
+ Cooling Systems [HAG]
|
||
+ Landscape Systems [HAG]
|
||
|
||
|
||
User Logins:
|
||
|
||
1. Company[Employee]
|
||
2. Property[Tenant]
|
||
3. Property[Owner]
|
||
|
||
|
||
- Primary Company Schema -
|
||
# Primary Company Roles #
|
||
|
||
SystemAdmin [Static] [Root Manager] [Application's Primary Management Office Employee]
|
||
+ Accesses all role and priviliges maintains management
|
||
Example: Groot => User can manage all access and permissions, access rules can not be manupilated or deleted
|
||
|
||
SystemUser [Static] < SystemAdmin
|
||
+ System storage and services are maintained by this role
|
||
- Can not reach any personel data in any case
|
||
|
||
I. Database [Database Manager]
|
||
II. Network [Network Manager]
|
||
III. Application Services [Application Manager]
|
||
Example: => IT Department of manager [Primary Company]
|
||
|
||
[System Admin] => SystemAdmin99 [People]
|
||
[Database Manager] => SystemUser96 [People]
|
||
[Network Manager] => SystemUser97 [People]
|
||
|
||
[Application Manager] => SystemUser98 [People]
|
||
for each company:
|
||
* Creates Company: [Company] = ABC Company
|
||
* Creates Employee: [Owner] & [SuperUser] = Owner & SuperUser
|
||
* Assigns Employee to Company: ABC Company Owner & ABC Company SuperUser
|
||
* Creates People: [People] = Jonathan
|
||
* Assigns People to Employee: [People] Jonathan -> [Employee] Owner = ABC Company Owner Jonathan
|
||
// if Owner==None: ilk atanan superuser=Owner
|
||
[Application Manager] => Company => Employee => People
|
||
|
||
|
||
- API -
|
||
// APi has primary company in its default settings
|
||
# Company Employee #
|
||
|
||
[Application Manager] Actions
|
||
|
||
Employee > Owner > People 1
|
||
Employee > SuperUser > People 1
|
||
|
||
Owner [Static] < [Application Manager] Johantan
|
||
* Can receive Access Token[Login]
|
||
* [Application Manager] => with SystemAdmin approval
|
||
|
||
- [Data] Can NOT manupilate data 4ex Change company info
|
||
- [Employee] Can create any role or permissions without any approval in its [Company]
|
||
|
||
SuperUser [Static] < [Application Manager] Johantan
|
||
* Can receive Access Token[Login]
|
||
* [Application Manager] => SystemAdmin approval
|
||
|
||
+ [Employee] Can create any role or permissions without any approval in its [Company]
|
||
+ [Data] Can manupilate data 4ex Change company info
|
||
- [Company] Can only receive [Data] to its own company [ReadOnly]
|
||
- SuperUser -> can grant User SuperUser => SystemAdmin approval
|
||
|
||
[SuperUser] => Employee => Rules&Restrictions
|
||
|
||
User:
|
||
[Dynamic] < [Application Manager]
|
||
// Defined Role 4ex [SuperUser] => access right [Login] = Access Token API connect
|
||
|
||
|
||
Annotations:
|
||
- When [SuperUser] creates a [Employee] approval=False until [Owner] approval & [Application Manager] sets approval=True
|
||
- Simult Test Algorith Codelanacak !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
|
||
- Crud Collection'da mutlaka expire ile ilgili bi function olacak
|
||
- filter listlerin active, delete, regular(active==True and delete==False) function ayrı olacak
|
||
- create action lar BaseModellerin içinde olacak ya da (Optional) create, update rule based Inhert kulllan
|
||
- Pydanticler model_dump ve excluded_dump olarak inhr.
|
||
- Responselar herbiri Response status code, message, completed, data şeklinde olacak
|
||
- Create a initilizer with compose yaml.
|
||
- Cache ip address to avoid unnecessary request to Api[IP]
|
||
|
||
Build -> Data
|
||
Financial Assets -> Data
|
||
Personal Info -> People
|
||
|
||
|
||
Company A -> Company B -> Company C
|
||
Company B -> Company D
|
||
Company B -> Company E
|
||
Company B -> Company Z
|
||
|
||
score A > B > C
|
||
evyos A ankara A ayranci C
|
||
|
||
Company
|
||
1.Company A
|
||
2.Company B
|
||
3.Company C
|
||
4.Company D
|
||
5.Company E
|
||
6.Company F
|
||
|
||
|
||
Organization Cluster
|
||
1. Evyos Evyos Organizasyonu 385 0
|
||
2. Ankara Evyos Organizasyonu 385 1
|
||
3. Ayrancı Evyos Organizasyonu 385 2
|
||
4. BEsat Evyos Organizasyonu 385 2
|
||
5. KEsat Evyos Organizasyonu 385 2
|
||
6. Keklik Evyos Organizasyonu 385 3
|
||
7. İlker Evyos Organizasyonu 385 3
|
||
8. İstanbul Evyos Organizasyonu 385 1
|
||
9. Kayseri Evyos Organizasyonu 385 2
|
||
|
||
|
||
READ => company_id IN (2, 3, 4, 5, 6, 7)
|
||
WRITE => company_id IN (2)
|
||
|
||
|
||
READ => build_id IN (22, 333, 4444, 555, 6, 7)
|
||
WRITE => company_id IN (2)
|
||
|
||
Employee
|
||
id company_id employee
|
||
1 1 Genel Mudur Company A
|
||
2 1 Bekçi Company A
|
||
3 2 Genel Mudur Company B
|
||
4 2 Bekçi Company B
|
||
|
||
|
||
##### Access to data #####
|
||
Role based data access->
|
||
# Information Data Block #
|
||
|
||
Building Information Data -> Service Taker
|
||
Company Information Data -> Service Giver
|
||
|
||
# Offical Data Block #
|
||
|
||
Building Financial Data -> Service Taker
|
||
Company Financial Data -> Service Giver
|
||
|
||
#### Summary ####
|
||
Maximum amount of building a employee can be responsiable of? 50
|
||
|
||
Alg: Duty(Person) ->
|
||
Person = User
|
||
Access Token
|
||
|
||
(Service Giver)
|
||
Company R-> Department R-> Duty R-> Employee R-> Person
|
||
|
||
(Service Taker)
|
||
Company R-> Building R-> Person
|
||
|
||
|
||
Service Giver:
|
||
Company (related to) Job (related to) Employee (related to) Person
|
||
This flow indicates a hierarchical relationship where each entity is related to the next.
|
||
Company: The organization providing the service.
|
||
Duty: Specific roles or tasks within the company that are related to providing the service.
|
||
Employee: The individual performing the job-related tasks within the company.
|
||
Person: The individual as a person, highlighting the human element of the employee.
|
||
|
||
Service Taker:
|
||
Company (related to) Job (related to) Employee (related to) Building
|
||
This flow indicates a hierarchical relationship where each entity is related to the next, but with a different end point.
|
||
Company: The organization receiving the service.
|
||
Duty: Specific roles or tasks within the company that are related to managing or utilizing the service.
|
||
Employee: The individual performing the job-related tasks within the company.
|
||
Building: The physical location or facility where the service is utilized or managed.
|
||
|
||
duty_id = mapped_column(ForeignKey("duty.id"), nullable=False)
|
||
owner_id = mapped_column(ForeignKey("company.id"), nullable=False) X
|
||
member_id = mapped_column(ForeignKey("company.id"), nullable=False)
|
||
parent_id = mapped_column(ForeignKey("company.id"), nullable=False)
|
||
relationship_type = mapped_column(String, nullable=False)
|
||
child_count = mapped_column(Integer)
|
||
|
||
X company
|
||
duty_id ? Evyos GM -< Ankara GM Ayrancı GM
|
||
select query=
|
||
|
||
|
||
Company Sub
|
||
#### Filters ####
|
||
Add extra query to Crud:
|
||
{
|
||
"company_id_in": @Redis[Array],
|
||
"build_id_in": @Redis[Array],
|
||
"employee_id": @Redis[Array],
|
||
}
|
||
-------------------------------------------------------------------------------
|
||
# Query Pos.
|
||
|
||
o What are the employee branch? T
|
||
- Company filtereleyerek X
|
||
+ Mongo Db den brach ı cekerek
|
||
o What are sub companies under certain company_id? X
|
||
- CompanyRelationship Table like
|
||
+ Mongo Db den brach ı cekerek
|
||
|
||
o Who are my employess [Personel Info]?
|
||
EmployeeRelationship Table
|
||
Department -> Duty -> Employee
|
||
|
||
o What buildings are in my responsibilty?
|
||
BuildingRelationship Table
|
||
|
||
o What are certain debts of Build Parts?
|
||
CompanyRelationship Table ilke
|
||
|
||
o Iban and financial informations of Buildings?
|
||
AccountingRelationship Table ilke
|
||
|
||
o Salaries of a group of Employees?
|
||
X
|
||
|
||
o Duty information of a group of Employees?
|
||
X
|
||
|
||
o List Decision Book Items of a build part?
|
||
Build R-> Decision Book
|
||
Responsiable of related Building
|
||
Employee Query if Build view yetkisi varsa -> Decision Book
|
||
|
||
o Living Space info of a certian person?
|
||
Responsiable of related Building
|
||
Living Space -> Person Detail Infop
|
||
|
||
o Which build parts I am responsiable of?
|
||
Person -> Build Parts
|
||
Query employee -> Building
|
||
|
||
o Address of a person?
|
||
Query employee -> Building
|
||
|
||
o Email, phone personal info of a employee?
|
||
Brach Company
|
||
|
||
-------------------------------------------------------------------------------
|
||
User[Person] -> Employee Salaries Table data
|
||
User Company[Employee]
|
||
|
||
|
||
[Table]Company2BuildingRelationship
|
||
company_id build_id responsiable
|
||
1 3 True
|
||
2 3 False
|
||
|
||
Company2BuildingRelationship: Are these users of this company are responsiable from this building.
|
||
|
||
|
||
[Table]Company2EmployeeRelationship:
|
||
company_id employee_id
|
||
1 2
|
||
1 3
|
||
|
||
[Table]Company2CompanyRelationship:
|
||
1EVYOS 2Ankara 3Besat 4Ayrancı 5Dikmen 6Çayyolu 7Beysukent 8OsmanMah 9NecatiMah
|
||
2Ankara -> 3Besat 4Ayrancı 5Dikmen 6Çayyolu 7Beysukent -> 8OsmanMah 9NecatiMah
|
||
|
||
|
||
Top Hiercacy:
|
||
|
||
ADD field:
|
||
top_hiercacy_companies: id: 1, uuid: 1a1a51bd-67f5-4f85-bd7c-1edb6afdaa7e Evyos
|
||
|
||
Ask for branch ???
|
||
Update a branch ???
|
||
Delete a branch ???
|
||
Carry branch ???
|
||
Get "18aa001a-6878-4d39-bc21-0e63ba33beff" -> carry to "1a1a51bd-67f5-4f85-bd7c-1edb6afdaa7e"
|
||
DELETE -> INSERT
|
||
Go to mongo collection of top_hiercacy_company
|
||
|
||
|
||
--------------------------------------------------------------------------------
|
||
[Table]Company2CompanyRelationship: ??? Branch
|
||
owner_company_id member_company_id
|
||
1 2
|
||
2 3
|
||
3 4
|
||
1 5
|
||
1 6
|
||
|
||
class CompanyRelationship(CrudCollection):
|
||
"""
|
||
CompanyRelationship class based on declarative_base and CrudCollection via session
|
||
"""
|
||
|
||
__tablename__ = "company_relationship"
|
||
__exclude__fields__ = []
|
||
|
||
duty_id = mapped_column(ForeignKey("duty.id"), nullable=False)
|
||
owner_id = mapped_column(ForeignKey("company.id"), nullable=False)
|
||
member_id = mapped_column(ForeignKey("company.id"), nullable=False)
|
||
parent_id = mapped_column(ForeignKey("company.id"), nullable=False)
|
||
child_count = mapped_column(Integer)
|
||
json_text = mapped_column(String)
|
||
|
||
relationship_type = mapped_column(String, nullable=False)
|
||
|
||
Mehmet Karatay > Javascript
|
||
--------------------------------------------------------------------------------
|
||
EmployeeRelationship Table
|
||
|
||
|
||
X and Y Employee
|
||
Employee ->
|
||
|
||
|
||
|
||
Relationship
|
||
|
||
# Bindings of Queries #
|
||
Buildings [Decision Books, Project Books] 2 Resp.
|
||
Companies [Duty, Departments] 2 Resp.
|
||
Employees [Salaries, People] 2 Resp.
|
||
Accounts [Iban, Debits] 2 Resp.
|
||
People [LivingSpace, Users, Addresses] 2 Resp.
|
||
|
||
Role = Company + Job
|
||
Employee = Role + People
|
||
Employee R-> Employee
|
||
Employee R-> AccessRule ???
|
||
|
||
# Bindings of Actions #
|
||
|
||
INSERT -> Res? X
|
||
UPDATE -> Res? X
|
||
SELECT -> Res? |
|
||
DELETE -> Res?
|
||
ACTIVATE -> Res?
|
||
DESTROY -> Res?
|
||
|
||
|
||
id employee_id restrict_id by_who
|
||
1 2 3 2
|
||
2 2 4 2
|
||
3 2 5 2
|
||
1 -7 Genel Mudur
|
||
|
||
|
||
Permissions
|
||
|
||
A | 1 SuperUser
|
||
B | 2 Sub SuperUser
|
||
C | 3 Sub Sub SuperUser
|
||
|
||
|
||
A1 -> B2 -> C3
|
||
Many to Many
|
||
1 2
|
||
|
||
|
||
|
||
|