# ali-talebi/four_p architecture

> Architecture diagram of the GitHub repository ali-talebi/four_p, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/ali-talebi/four_p
- Repository: https://github.com/ali-talebi/four_p

## Overview

This Django application supports a Persian-language job-grading domain centered on P1 grading methods, their evaluation factors, and factor scores. Users can retrieve the method list, select a method to see its factors, and retrieve scores for a selected factor; administrators maintain the same records and their complexity, frequency, and priority levels. The API’s URL configuration dispatches to views, which query models and serialize responses. SQLite is configured as the database. Source excerpts establish the API and model relationships; broader product capabilities are not documented in a README.

Main entry points: [`core/p_one/models.py`](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py) (Factor scores), [`core/p_one/admin.py`](https://github.com/ali-talebi/four_p/blob/main/core/p_one/admin.py) (Grading admin), [`core/p_one/views.py`](https://github.com/ali-talebi/four_p/blob/main/core/p_one/views.py) (Grading API views), [`core/p_one/serializers.py`](https://github.com/ali-talebi/four_p/blob/main/core/p_one/serializers.py) (Response serializers)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API"]
  node_project_routes["Project routes<br/>[urls.py]"]
  node_app_routes["P1 API routes<br/>[urls.py]"]
  node_api_views["Grading API views<br/>[views.py]"]
  node_serializers["Response serializers<br/>[serializers.py]"]
end

subgraph group_domain["Grading domain"]
  node_methods[("P1 methods<br/>[models.py]")]
  node_factors[("Evaluation factors<br/>[models.py]")]
  node_factor_scores[("Factor scores<br/>[models.py]")]
  node_complexity[("Complexity levels<br/>[models.py]")]
  node_frequency[("Frequency levels<br/>[models.py]")]
  node_priority[("Priority levels<br/>[models.py]")]
end

subgraph group_admin["Administration"]
  node_admin_config["Grading admin<br/>[admin.py]"]
end

subgraph group_platform["Platform"]
  node_settings["Django settings<br/>[settings.py]"]
  node_sqlite[("SQLite database<br/>[db.sqlite3]")]
  node_smart_selects["Chained selects"]
end

node_user(("API user"))
node_admin_user(("Administrator"))

node_user -->|"requests"| node_project_routes
node_project_routes -->|"includes"| node_app_routes
node_app_routes -->|"dispatches"| node_api_views
node_api_views -->|"queries"| node_methods
node_api_views -->|"queries"| node_factors
node_api_views -->|"queries"| node_factor_scores
node_api_views -->|"serializes"| node_serializers
node_serializers -->|"serializes"| node_methods
node_serializers -->|"serializes"| node_factors
node_serializers -->|"serializes"| node_factor_scores
node_admin_user -->|"opens admin"| node_project_routes
node_admin_config -->|"registers"| node_methods
node_admin_config -->|"registers"| node_factors
node_admin_config -->|"registers"| node_factor_scores
node_admin_config -->|"registers"| node_complexity
node_admin_config -->|"registers"| node_frequency
node_admin_config -->|"registers"| node_priority
node_settings -->|"configures"| node_sqlite
node_factor_scores -->|"references"| node_complexity
node_factor_scores -->|"references"| node_frequency
node_factor_scores -->|"references"| node_priority
node_factor_scores -->|"uses chained fields"| node_smart_selects
node_project_routes -->|"includes routes"| node_smart_selects

click node_project_routes "https://github.com/ali-talebi/four_p/blob/main/core/core/urls.py"
click node_app_routes "https://github.com/ali-talebi/four_p/blob/main/core/p_one/urls.py"
click node_api_views "https://github.com/ali-talebi/four_p/blob/main/core/p_one/views.py"
click node_serializers "https://github.com/ali-talebi/four_p/blob/main/core/p_one/serializers.py"
click node_admin_config "https://github.com/ali-talebi/four_p/blob/main/core/p_one/admin.py"
click node_methods "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_factors "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_factor_scores "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_complexity "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_frequency "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_priority "https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py"
click node_settings "https://github.com/ali-talebi/four_p/blob/main/core/core/settings.py"
click node_sqlite "https://github.com/ali-talebi/four_p/blob/main/core/db.sqlite3"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_project_routes,node_app_routes,node_api_views,node_serializers,node_user toneBlue
class node_methods,node_factors,node_factor_scores,node_complexity,node_frequency,node_priority toneAmber
class node_admin_config toneMint
class node_settings,node_sqlite,node_smart_selects toneRose
class node_admin_user toneIndigo
```

## Components

### API

- [Project routes](https://github.com/ali-talebi/four_p/blob/main/core/core/urls.py): `core/core/urls.py`
- [P1 API routes](https://github.com/ali-talebi/four_p/blob/main/core/p_one/urls.py): `core/p_one/urls.py`
- [Grading API views](https://github.com/ali-talebi/four_p/blob/main/core/p_one/views.py): `core/p_one/views.py`
- [Response serializers](https://github.com/ali-talebi/four_p/blob/main/core/p_one/serializers.py): `core/p_one/serializers.py`

### Grading domain

- [P1 methods](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`
- [Evaluation factors](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`
- [Factor scores](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`
- [Complexity levels](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`
- [Frequency levels](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`
- [Priority levels](https://github.com/ali-talebi/four_p/blob/main/core/p_one/models.py): `core/p_one/models.py`

### Administration

- [Grading admin](https://github.com/ali-talebi/four_p/blob/main/core/p_one/admin.py): `core/p_one/admin.py`

### Platform

- [Django settings](https://github.com/ali-talebi/four_p/blob/main/core/core/settings.py): `core/core/settings.py`
- [SQLite database](https://github.com/ali-talebi/four_p/blob/main/core/db.sqlite3): `core/db.sqlite3`
- **Chained selects**

### Other components

- **API user**
- **Administrator**

## Connections

- API user → Project routes: requests (evidence: `core/core/urls.py`)
- Project routes → P1 API routes: includes (evidence: `core/core/urls.py`)
- P1 API routes → Grading API views: dispatches (evidence: `core/p_one/urls.py`)
- Grading API views → P1 methods: queries (evidence: `core/p_one/views.py`)
- Grading API views → Evaluation factors: queries (evidence: `core/p_one/views.py`)
- Grading API views → Factor scores: queries (evidence: `core/p_one/views.py`)
- Grading API views → Response serializers: serializes (evidence: `core/p_one/views.py`)
- Response serializers → P1 methods: serializes (evidence: `core/p_one/serializers.py`)
- Response serializers → Evaluation factors: serializes (evidence: `core/p_one/serializers.py`)
- Response serializers → Factor scores: serializes (evidence: `core/p_one/serializers.py`)
- Administrator → Project routes: opens admin (evidence: `core/core/urls.py`)
- Grading admin → P1 methods: registers (evidence: `core/p_one/admin.py`)
- Grading admin → Evaluation factors: registers (evidence: `core/p_one/admin.py`)
- Grading admin → Factor scores: registers (evidence: `core/p_one/admin.py`)
- Grading admin → Complexity levels: registers (evidence: `core/p_one/admin.py`)
- Grading admin → Frequency levels: registers (evidence: `core/p_one/admin.py`)
- Grading admin → Priority levels: registers (evidence: `core/p_one/admin.py`)
- Django settings → SQLite database: configures (evidence: `core/core/settings.py`)
- Factor scores → Complexity levels: references (evidence: `core/p_one/models.py`)
- Factor scores → Frequency levels: references (evidence: `core/p_one/models.py`)
- Factor scores → Priority levels: references (evidence: `core/p_one/models.py`)
- Factor scores → Chained selects: uses chained fields (evidence: `core/p_one/models.py`)
- Project routes → Chained selects: includes routes (evidence: `core/core/urls.py`)
