# Project Management System
## Software Requirements Specification — Business & Domain Specification

### 1. Document Overview

**Project Name:** Project Management System  
**Business Type:** Outsourcing / Software & Digital Service Company  
**Primary Objective:** কোম্পানির বিভিন্ন client project, service, contract, service-based team, team member assignment এবং contract-based commission distribution একটি centralized system-এর মাধ্যমে পরিচালনা করা।

এই system-এর মূল লক্ষ্য শুধু project tracking নয়; বরং একটি project-এর **commercial structure → service → contract → team → team role → commission share → commission** পুরো business lifecycle manage করা।

---

# 2. Business Context

কোম্পানিতে বিভিন্ন ধরনের client আসে এবং তারা বিভিন্ন ধরনের service গ্রহণ করে।

উদাহরণ:

- SEO
- Digital Marketing
- Content Writing
- Web Development
- Software Development
- অন্যান্য service

একজন client একটি project-এর অধীনে এক বা একাধিক service নিতে পারে।

প্রতিটি service-এর জন্য আলাদা contract থাকতে পারে এবং সেই contract অনুযায়ী নির্দিষ্ট service-based team কাজ করবে।

একই employee তার permanent/general team-এর বাইরে কোনো নির্দিষ্ট contract-এর জন্য অন্য service-এর role-এ **"Act As"** করতে পারে।

অতএব system-এ employee-এর permanent team membership এবং contract-specific responsibility আলাদা concept হিসেবে বিবেচনা করতে হবে।

---

# 3. High-Level Business Hierarchy

প্রস্তাবিত business hierarchy:

```text
Client
   │
   ▼
Project
   │
   ├── Project Type
   ├── Project Category
   │
   └── Services
          │
          ▼
       Contract
          │
          ▼
    Contract Team Assignment
          │
          ├── Business Development Team
          │       ├── Sales Person
          │       ├── Act As Member
          │       ├── Closer
          │       └── Manager
          │
          └── Product Development Team
                  ├── Regional Manager
                  ├── PM (Member of Project)
                  └── Other Members
          
          │
          ▼
      Commission / Team Share
          │
          ├── BD Share
          └── PD Share
                  │
                  ▼
             Commission
```

---

# 4. Core Business Entities

System-এর মূল business entities:

1. Client
2. Project
3. Project Type
4. Project Category
5. Service
6. Contract
7. Team
8. Team Type / Team Division
9. Team Member
10. Contract Team Assignment
11. Contract Role Assignment
12. Commission Share
13. Commission Rule
14. Commission/Earning Record

পরবর্তী phase-এ payment, invoice, expense, profitability ইত্যাদি যোগ করা যেতে পারে।

---

# 5. Client

Client হচ্ছে যার জন্য company project/service deliver করবে।

একজন client-এর:

- একাধিক Project থাকতে পারে
- একটি Project-এর মধ্যে একাধিক Service থাকতে পারে
- একই বা ভিন্ন সময়ে একাধিক Contract থাকতে পারে

### Example

```text
Client: ABC Company

Project:
    ABC Digital Growth

Services:
    SEO
    Digital Marketing
    Content Writing
```

---

# 6. Project

Project হচ্ছে client-এর জন্য একটি overall business engagement।

একটি Project-এর অধীনে এক বা একাধিক service থাকতে পারে।

### Project Attributes

কমপক্ষে:

- Project ID
- Project Name
- Client
- Project Type
- Project Category
- Description
- Start Date
- Expected End Date
- Status
- Project Owner / Responsible Person
- Created By
- Created At
- Updated At

### Project Status

প্রাথমিকভাবে:

```text
Draft
Active
On Hold
Completed
Cancelled
```

পরবর্তীতে business অনুযায়ী status বাড়ানো যাবে।

---

# 7. Project Type

Project Type দিয়ে project-এর nature বোঝানো হবে।

উদাহরণ:

- Retainer Project
- Fixed Project
- Dedicated Team
- One-Time Project
- Long-Term Engagement

এটি configurable master data হওয়া উচিত।

---

# 8. Project Category

Project Category project-এর business classification নির্দেশ করবে।

উদাহরণ:

- Software Development
- Digital Marketing
- IT Service
- Consulting
- Maintenance
- Outsourcing

Project Type এবং Project Category একই জিনিস নয়।

**Type** → engagement/business model  
**Category** → project/service domain

---

# 9. Service

একটি Project-এর অধীনে এক বা একাধিক Service থাকতে পারে।

উদাহরণ:

```text
Project: ABC Digital Growth

Services:
    SEO
    Digital Marketing
    Content Writing
```

প্রতিটি Service company-এর একটি predefined service master-এর reference হবে।

### Service Master

উদাহরণ:

```text
SEO
Digital Marketing
Content Writing
Web Development
Mobile App Development
```

প্রতিটি service-এর নিজস্ব service-based team থাকতে পারে।

---

# 10. Service Contract

Project-এর অধীনে কোনো নির্দিষ্ট Service client গ্রহণ করলে সেই service-এর জন্য Contract তৈরি হবে।

### Example

```text
Client:
ABC Company

Project:
ABC Digital Growth

Service:
Digital Marketing

Contract:
DM-2026-001

Contract Value:
$100

Allocated Hours:
40 Hours

Duration:
3 Months
```

Contract হচ্ছে service delivery এবং commercial agreement-এর মূল operational entity।

---

# 11. Contract Attributes

Contract-এ business অনুযায়ী নিম্নোক্ত information থাকতে পারে:

- Contract ID
- Contract Number
- Project
- Service
- Client
- Contract Start Date
- Contract End Date
- Contract Value
- Currency
- Allocated Hours
- Billing Type
- Payment Terms
- Renewal Type
- Status
- Commission Eligibility
- Notes
- Attachment / Agreement Document

### Contract Status

```text
Draft
Pending Approval
Active
Expired
Completed
Cancelled
Terminated
Renewed
```

---

# 12. Service-Based Team

Company-তে team সাধারণত service-oriented হবে।

উদাহরণ:

```text
SEO Team
Digital Marketing Team
Content Writing Team
Web Development Team
```

একটি Team একটি নির্দিষ্ট Service-এর সাথে associated থাকবে।

### Important Principle

**Team ≠ Contract Team**

একটি service-এর জন্য একটি permanent/general team থাকতে পারে।

কিন্তু কোনো নির্দিষ্ট contract-এ সেই team-এর:

- একজন member
- কয়েকজন member
- অথবা পুরো team

assigned হতে পারে।

---

# 13. Team Structure

প্রতিটি Service Team-এর দুটি primary division থাকবে:

```text
Team
 │
 ├── Business Development (BD)
 │
 └── Product Development (PD)
```

---

# 14. Business Development Team

BD team-এর primary responsibility হলো:

- Business acquisition
- Client communication
- Sales
- Existing client থেকে নতুন service generate করা
- Contract closing
- Business relationship management

BD team-এর সম্ভাব্য roles:

### Sales Person

Client-এর সাথে communication এবং service selling-এর জন্য responsible।

### Act As

একজন employee তার permanent/general team-এর member হলেও কোনো নির্দিষ্ট contract-এর ক্ষেত্রে অন্য service-এর BD role-এ act করতে পারে।

### Closer

Contract/business opportunity close করার জন্য responsible ব্যক্তি।

### Manager

BD activity/team-এর overall management করতে পারে।

---

# 15. Act As — Critical Business Concept

**Act As** system-এর একটি গুরুত্বপূর্ণ concept।

একজন employee-এর:

### Permanent Membership

Employee সাধারণভাবে যে team-এর member।

এবং

### Contract Role

কোনো নির্দিষ্ট contract-এর জন্য employee যে role-এ কাজ করছে।

দুটিকে আলাদা রাখতে হবে।

### Example

```text
Employee:
Rahim

General Team:
SEO Team

Existing Responsibility:
SEO Product Development Member
```

Rahim তার SEO client-কে Digital Marketing service নিতে convince করলো।

Contract তৈরি হলো:

```text
Service:
Digital Marketing

Contract:
DM-001
```

এই contract-এর জন্য:

```text
Rahim
Act As:
Digital Marketing Sales Person
```

অর্থাৎ Rahim-এর permanent team membership পরিবর্তন হবে না।

শুধু ওই contract-এর context-এ তার role হবে:

**Digital Marketing Sales Person**

---

# 16. Product Development Team

Product Development team-এর মূল কাজ হলো contracted service deliver করা।

PD team-এর মধ্যে সম্ভাব্য roles:

### Regional Manager

Service/product delivery-এর regional/team-level supervision।

### PM — Member of Project

এখানে PM-এর অর্থ **Project Manager নয়**।

PM = **Member of Project**

অর্থাৎ যারা actual service/product delivery-এর কাজ করে তারা PM হিসেবে assigned হতে পারে।

এটি system-এর terminology হিসেবে পরিষ্কারভাবে document করতে হবে যাতে ভবিষ্যতে "Project Manager" হিসেবে ভুল interpretation না হয়।

### Other Product Members

Service delivery-এর প্রয়োজন অনুযায়ী অন্যান্য member থাকতে পারে।

---

# 17. Contract Team Assignment

একটি Contract active হওয়ার পর সেই Contract-এর জন্য team assignment করা হবে।

একটি Contract-এর ক্ষেত্রে:

```text
BD Team Assignment
+
PD Team Assignment
```

থাকতে পারে।

### Example

```text
Contract Value = $100

Assigned Team Share = $30
```

এই $30 পুরো assigned team-এর জন্য নির্ধারিত pool।

---

# 18. Team Commission Share

Contract-এর মোট commercial value-এর একটি নির্দিষ্ট percentage/team amount team-এর জন্য নির্ধারিত হতে পারে।

উদাহরণ:

```text
Contract Value = $100

Team Share = 30%

Team Pool = $30
```

এই $30 আবার দুইটি major division-এর মধ্যে ভাগ হবে:

```text
BD Share
PD Share
```

উদাহরণ:

```text
Total Contract = $100

Team Pool = $30

BD = 40% of Team Pool
PD = 60% of Team Pool
```

তাহলে:

```text
BD Pool = $12
PD Pool = $18
```

---

# 19. Important Percentage Principle

Percentage-এর calculation base system-এ explicitly define করতে হবে।

কারণ:

```text
30%
```

কোন amount-এর উপর apply হচ্ছে সেটি গুরুত্বপূর্ণ।

প্রস্তাবিত structure:

```text
Contract Value
      ↓
Team Share %
      ↓
Team Pool
      ↓
BD Share % + PD Share %
      ↓
BD Pool + PD Pool
      ↓
Individual Commission / Distribution
```

এভাবে calculation করলে future ambiguity কমবে।

---

# 20. Business Development Commission

BD commission-এর ক্ষেত্রে বিভিন্ন ধরনের rule থাকতে পারে।

একটি BD member:

- One-time commission পেতে পারে
- প্রতিটি contract-এর জন্য commission পেতে পারে
- নির্দিষ্ট কয়েক মাস commission পেতে পারে
- Contract duration অনুযায়ী commission পেতে পারে

### Example

```text
Contract Value = $100

BD Pool = $12

Sales Person Commission:
10% of BD Pool

Duration:
One Time
```

অথবা:

```text
Commission:
5%

Frequency:
Monthly

Duration:
6 Months
```

System-এ commission rule configurable হওয়া উচিত।

---

# 21. Product Development Commission

PD team-এর ক্ষেত্রে commission distribution-এর nature ভিন্ন হতে পারে।

Possible rules:

### Lifetime

Contract/service থেকে নির্দিষ্ট member/team যতদিন eligible থাকবে, distribution চলবে।

### Monthly

Contract active থাকা পর্যন্ত প্রতি মাসে distribution হবে।

### Contract Duration

Contract-এর start/end date অনুযায়ী earning generate হবে।

### One-Time

বিশেষ কোনো delivery বা milestone-এর জন্য one-time earning হতে পারে।

---

# 22. Commission Rule

Commission rule-কে সরাসরি employee-এর মধ্যে hardcode না করে configurable business rule হিসেবে রাখা উচিত।

একটি Commission Rule-এর মধ্যে থাকতে পারে:

- Commission Type
- Calculation Base
- Percentage / Fixed Amount
- Frequency
- Duration
- Start Date
- End Date
- Eligibility Condition
- Role
- Team Division
- Contract
- Employee
- Status

---

# 23. Commission Types

প্রাথমিকভাবে:

```text
One Time
Recurring
Monthly
Contract Based
Milestone Based
```

পরবর্তীতে প্রয়োজন অনুযায়ী:

```text
Quarterly
Annual
Renewal
Upsell
Cross-sell
```

যোগ করা যেতে পারে।

---

# 24. Contract-Level Team Assignment

Contract-এর team assignment-এ শুধু Team select করলেই যথেষ্ট নয়।

কারণ একই team-এর সবাই সব contract-এ কাজ নাও করতে পারে।

তাই:

```text
Contract
   ↓
Team Assignment
   ↓
Selected Members
   ↓
Role
   ↓
Share / Commission Rule
```

রাখা উচিত।

### Example

```text
Digital Marketing Team

Available Members:
    A
    B
    C
    D
    E
```

Contract DM-001-এর জন্য:

```text
A → Sales Person
B → Closer
C → PM
D → PM
```

E এই contract-এ assigned নয়।

---

# 25. Team Member vs Contract Member

System-এ দুটি আলাদা concept থাকতে হবে।

### Team Member

Employee সাধারণভাবে কোনো service team-এর member।

### Contract Member

Employee নির্দিষ্ট contract-এর জন্য assigned।

এটি অত্যন্ত গুরুত্বপূর্ণ।

একজন employee:

```text
SEO Team Member
```

হতে পারে এবং একই সঙ্গে:

```text
Digital Marketing Contract
→ Sales Person
```

হিসেবে কাজ করতে পারে।

---

# 26. Recommended Relationship Model

High-level relationship:

```text
Client
  │
  └── Project
        │
        ├── Type
        ├── Category
        │
        └── Project Services
              │
              └── Contract
                    │
                    ├── BD Team Assignment
                    │      └── BD Members
                    │
                    ├── PD Team Assignment
                    │      └── PD Members
                    │
                    ├── Commission Share
                    │
                    └── Commission Rules
```

---

# 27. Example — Complete Business Scenario

ধরা যাক:

### Client

ABC Corporation

### Project

ABC Digital Growth Project

### Services

- SEO
- Digital Marketing

---

### SEO Contract

```text
Contract Value: $200
Duration: 6 Months
```

SEO Team assigned:

```text
BD:
    Rahim — Sales Person
    Karim — Closer

PD:
    Hasan — PM
    Sakib — PM
```

---

### Digital Marketing Contract

```text
Contract Value: $100
Duration: 3 Months
```

Digital Marketing Team:

```text
BD:
    Rahim — Act As Sales Person
    Karim — Closer

PD:
    Nabil — PM
    Fahim — PM
```

এখানে Rahim:

```text
Permanent Team:
SEO Team

Contract Role:
Digital Marketing → Sales Person
```

অর্থাৎ employee-এর identity বা permanent team পরিবর্তন হয়নি।

শুধু contract-level role পরিবর্তিত হয়েছে।

---

# 28. Example — Commission Distribution

ধরা যাক:

```text
Digital Marketing Contract = $100

Team Share = 30%
```

তাহলে:

```text
Team Pool = $30
```

ধরা হলো:

```text
BD = 40%
PD = 60%
```

তাহলে:

```text
BD Pool = $12
PD Pool = $18
```

এরপর individual commission/distribution rule অনুযায়ী:

```text
BD Pool
    ↓
Sales Person
Closer
Other BD Members

PD Pool
    ↓
Regional Manager
PM
Other PD Members
```

প্রতিটি individual-এর exact share পরবর্তী Commission Rules দ্বারা নির্ধারিত হবে।

---

# 29. Business Rules

### BR-01
একজন Client-এর একাধিক Project থাকতে পারবে।

### BR-02
একটি Project-এর একাধিক Service থাকতে পারবে।

### BR-03
একটি Service-এর জন্য এক বা একাধিক Contract থাকতে পারবে, যদি business rule তা allow করে।

### BR-04
একটি Service-এর একটি predefined service-based Team থাকতে পারে।

### BR-05
Team-এর দুইটি primary division থাকবে:
- Business Development
- Product Development

### BR-06
একজন employee-এর permanent team membership এবং contract-specific role আলাদা হবে।

### BR-07
একজন employee অন্য service-এর contract-এ **Act As** role নিতে পারবে।

### BR-08
একটি Contract-এর জন্য পুরো team বা team-এর selected members assign করা যাবে।

### BR-09
Contract-এর Team Pool নির্দিষ্ট percentage/amount দ্বারা নির্ধারিত হতে পারে।

### BR-10
Team Pool BD এবং PD-এর মধ্যে নির্দিষ্ট percentage অনুযায়ী ভাগ হবে।

### BR-11
BD এবং PD-এর individual earning/commission আলাদা rule দ্বারা নির্ধারিত হবে।

### BR-12
BD commission one-time বা recurring হতে পারে।

### BR-13
PD earning lifetime, monthly, contract-duration-based অথবা অন্য business rule অনুযায়ী হতে পারে।

### BR-14
Commission calculation-এর base amount system-এ explicit হতে হবে।

### BR-15
Contract পরিবর্তন হলে historical commission record automatically overwrite করা যাবে না।

---

# 30. Historical Data & Audit Requirement

Commission এবং team assignment-এর ক্ষেত্রে historical data অত্যন্ত গুরুত্বপূর্ণ।

ধরা যাক:

```text
January:
PD Share = 60%

March:
PD Share = 50%
```

March-এর rule পরিবর্তনের কারণে January-এর earning পরিবর্তন হওয়া উচিত নয়।

তাই system-এ:

**Commission Rule** এবং **Generated Commission/Earning Record**

দুটিকে আলাদা রাখতে হবে।

অর্থাৎ:

```text
Rule
  ↓
Calculation
  ↓
Generated Earning
```

একবার earning finalized হলে পরবর্তীতে rule পরিবর্তন হলেও historical earning পরিবর্তিত হবে না।

---

# 31. Project Management Module — Initial Scope

### Master Management

- Project Types
- Project Categories
- Services
- Teams
- Team Divisions
- Roles
- Commission Types
- Commission Rules

### Project Management

- Client
- Project
- Project Service
- Contract

### Team Management

- Service Team
- BD Members
- PD Members
- Team Membership
- Contract Team Assignment
- Contract Member Assignment
- Contract-specific Roles
- Act As assignment

### Commercial Management

- Contract Value
- Team Share
- BD Pool
- PD Pool
- Commission Rules
- Commission Calculation
- Earning Records

### Reporting

প্রাথমিকভাবে:

- Project-wise Team
- Contract-wise Team
- Service-wise Team
- Employee-wise Assignment
- BD Commission
- PD Commission
- Contract Commission
- Team Commission Share
- Active Contracts
- Expired Contracts

---

# 32. Recommended System Architecture

Business logic-এর দিক থেকে system-টিকে তিনটি major layer-এ চিন্তা করা ভালো:

```text
PROJECT / COMMERCIAL
        │
        ▼
SERVICE / CONTRACT
        │
        ▼
TEAM / ROLE ASSIGNMENT
        │
        ▼
REVENUE / COMMISSION
```

অর্থাৎ Commission-কে Project-এর সরাসরি property হিসেবে না দেখে Contract এবং Contract Team Assignment-এর downstream business process হিসেবে বিবেচনা করা উচিত।

---

# 33. Most Important Domain Distinctions

এই system develop করার সময় নিচের distinction-গুলো preserve করা খুব গুরুত্বপূর্ণ:

| Concept | Meaning |
|---|---|
| Project | Client-এর overall engagement |
| Service | Project-এর মধ্যে specific service |
| Contract | নির্দিষ্ট service-এর commercial agreement |
| Team | Service-based permanent/general team |
| Team Member | Team-এর সাধারণ member |
| Contract Member | নির্দিষ্ট contract-এ assigned member |
| Role | Contract-এ member-এর দায়িত্ব |
| Act As | Permanent team-এর বাইরে contract-specific role |
| Team Pool | Contract থেকে team-এর জন্য allocated amount |
| BD Pool | Team Pool-এর BD অংশ |
| PD Pool | Team Pool-এর PD অংশ |
| Commission Rule | কীভাবে earning calculate হবে |
| Earning Record | বাস্তবে generated/finalized earning |

---

# 34. Important Design Recommendation

আমি strongly recommend করব **Employee-এর role-কে সরাসরি Team-এর সাথে permanently bind না করার জন্য**।

বরং:

```text
Employee
   │
   └── Team Membership
          │
          └── Service Team

Employee
   │
   └── Contract Assignment
          │
          └── Contract Role
                 │
                 └── Act As / Sales / Closer / PM
```

কারণ তোমাদের business-এর সবচেয়ে গুরুত্বপূর্ণ flexibility এখানেই:

> **একজন মানুষ এক team-এর member হয়েও অন্য service-এর contract-এ অন্য role-এ কাজ করতে পারে।**

এই requirement মাথায় রেখে database/model করলে ভবিষ্যতে নতুন service, নতুন team, cross-selling, commission এবং employee allocation অনেক সহজে handle করা যাবে।

---

# 35. Current SRS Boundary

এই document-এ এখন পর্যন্ত defined হয়েছে:

**Project → Service → Contract → Team → BD/PD → Member → Contract Role → Team Pool → BD/PD Share → Commission-এর high-level business model।**

এখনো intentionally বিস্তারিত করা হয়নি:

- Exact commission calculation formula
- BD commission eligibility
- Closer commission
- Sales person commission
- Act As commission
- PM/PD member distribution
- Regional Manager share
- Monthly vs lifetime calculation-এর exact rules
- Contract renewal-এর commission behavior
- Contract cancellation-এর earning behavior
- Partial payment হলে commission কীভাবে calculate হবে
- Employee একাধিক contract-এ থাকলে calculation
- Commission approval/payment workflow

এগুলোকে **Commissioning Business Rules** হিসেবে আলাদা specification করা উচিত।

পরবর্তী ধাপে তোমার কাছ থেকে exact commission rules পাওয়ার পর এই SRS-এর ওপর বসিয়ে আমরা **complete Commission Engine-এর business logic** তৈরি করতে পারব।