Skip to content

Kotolow/CRMPlan

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

4 Commits
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ

ОписаниС

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ прСдставляСт собой Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ ΠΈ интСграциями с внСшними систСмами. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ.
  • Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Google Calendar для планирования созвонов.
  • БистСма достиТСний с изобраТСниями.
  • ИИ-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Π·Π°Π΄Π°Ρ‡ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².
  • Π’Ρ€Π΅ΠΊΠΊΠΈΠ½Π³ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° ΠΏΠ°ΡƒΠ·Ρƒ.

1. АрхитСктура

БэкСнд:

  • ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° (Go ΠΈ C#).
  • Redis β€” Π±Ρ€ΠΎΠΊΠ΅Ρ€ сообщСний для ΠΎΠ±ΠΌΠ΅Π½Π° событиями.
  • RESTful API для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΎΠΌ ΠΈ бэкСндом.

Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄:

  • SPA (React/Vue/Angular).
  • ВзаимодСйствиС с API для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠ΅ΠΉ с Google Calendar.

2. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ прилоТСния

  1. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ" (C#):

    • РСгистрация ΠΈ авторизация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ (Π°Π²Π°Ρ‚Π°Ρ€, информация).
    • Бвязь с Google Calendar.
  2. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ "ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ" (Go):

    • CRUD ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π·Π°Π΄Π°Ρ‡.
    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° статусов Π·Π°Π΄Π°Ρ‡, Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ.
    • ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° статуса "Π½Π° ΠΏΠ°ΡƒΠ·Π΅" (on hold).
  3. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ "Π˜Π½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡ с Google Calendar" (C#):

    • Бинхронизация с ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π΅ΠΌ.
    • ΠŸΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ созвонов Π½Π° основС доступности ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.
  4. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ "УвСдомлСния ΠΈ ИИ-ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊ" (Go):

    • ΠžΡ‚ΠΏΡ€Π°Π²ΠΊΠ° ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ Π²Π°ΠΆΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡Π°Ρ….
    • Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°ΠΌ Π½Π° основС Π°Π½Π°Π»ΠΈΠ·Π° Π΄Π°Π½Π½Ρ‹Ρ….
  5. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ "ДостиТСния" (C#):

    • БистСма достиТСний с изобраТСниями.
    • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΌΠΈ Π°Ρ‡ΠΈΠ²ΠΊΠ°ΠΌΠΈ.

3. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π’Π°Π±Π»ΠΈΡ†Π° users

  • id (UUID) β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€.
  • name (string) β€” имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • email (string) β€” элСктронная ΠΏΠΎΡ‡Ρ‚Π°.
  • password_hash (string) β€” Ρ…ΡΡˆ пароля.
  • avatar_url (string) β€” URL Π°Π²Π°Ρ‚Π°Ρ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.
  • google_calendar_token (string) β€” Ρ‚ΠΎΠΊΠ΅Π½ для ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ с Google Calendar.
  • created_at (timestamp).
  • updated_at (timestamp).

Π’Π°Π±Π»ΠΈΡ†Π° projects

  • id (UUID) β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • name (string) β€” Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • description (text) β€” описаниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • created_by (UUID, references users) β€” Π°Π²Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°.
  • created_at (timestamp).
  • updated_at (timestamp).

Π’Π°Π±Π»ΠΈΡ†Π° tasks

  • id (UUID) β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • project_id (UUID, references projects) β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ относится Π·Π°Π΄Π°Ρ‡Π°.
  • title (string) β€” Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • description (text) β€” описаниС Π·Π°Π΄Π°Ρ‡ΠΈ.
  • assigned_to (UUID, references users) β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ.
  • status (string: "open", "in progress", "completed", "on hold") β€” статус Π·Π°Π΄Π°Ρ‡ΠΈ.
  • priority (string: "minor", "major", "critical", "blocker") β€” ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • due_date (timestamp) β€” срок выполнСния Π·Π°Π΄Π°Ρ‡ΠΈ.
  • time_spent (integer) β€” Π·Π°Ρ‚Ρ€Π°Ρ‡Π΅Π½Π½ΠΎΠ΅ врСмя Π² ΠΌΠΈΠ½ΡƒΡ‚Π°Ρ….
  • comments (JSONB) β€” ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ (Π°Π²Ρ‚ΠΎΡ€, тСкст, timestamp).
  • created_at (timestamp).
  • updated_at (timestamp).

Π’Π°Π±Π»ΠΈΡ†Π° achievements

  • id (UUID) β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ достиТСния.
  • user_id (UUID, references users) β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ²ΡˆΠΈΠΉ достиТСниС.
  • achievement_type (string) β€” Ρ‚ΠΈΠΏ достиТСния.
  • image_url (string) β€” URL изобраТСния достиТСния.
  • created_at (timestamp).

Π’Π°Π±Π»ΠΈΡ†Π° calendar_events

  • id (UUID) β€” ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ события.
  • task_id (UUID, references tasks) β€” Π·Π°Π΄Π°Ρ‡Π°, связанная с событиСм.
  • event_start (timestamp) β€” врСмя Π½Π°Ρ‡Π°Π»Π° события.
  • event_end (timestamp) β€” врСмя окончания события.
  • event_url (string) - ссылка Π½Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΠΎΠ΅ событиС
  • google_event_id (string) β€” ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ события Π² Google Calendar.

Π’Π°Π±Π»ΠΈΡ†Π° project_users (ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌ)

  • project_id (UUID, references projects) β€” ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.
  • user_id (UUID, references users) β€” ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ.

4. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов

1. РСгистрация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

POST /users/register

{
  "name": "John Doe",
  "email": "[email protected]",
  "password": "password123"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "id": "a1b2c3d4",
  "name": "John Doe",
  "email": "[email protected]",
  "avatar_url": null,
  "created_at": "2024-09-17T10:00:00Z"
}

2. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π°Π²Π°Ρ‚Π°Ρ€Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

POST /users/upload-avatar

{
  "user_id": "a1b2c3d4",
  "avatar_url": "https://example.com/avatars/user123.png"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "message": "Avatar updated successfully"
}

3. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

POST /projects

{
  "name": "New Project",
  "description": "This is a new project",
  "created_by": "a1b2c3d4"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "id": "p1q2w3e4",
  "name": "New Project",
  "description": "This is a new project",
  "created_by": "a1b2c3d4",
  "created_at": "2024-09-17T10:00:00Z"
}

4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ с Ρ‚Ρ€Π΅ΠΊΠΈΠ½Π³ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ коммСнтариями

POST /tasks

{
  "project_id": "p1q2w3e4",
  "title": "Task 1",
  "description": "Description of the task",
  "assigned_to": "b2c3d4e5",
  "status": "in progress",
  "due_date": "2024-09-20T15:00:00Z",
  "time_spent": 120,
  "comments": [
    {
      "author": "a1b2c3d4",
      "text": "Initial comment",
      "timestamp": "2024-09-17T10:05:00Z"
    }
  ]
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "id": "t1y2u3i4",
  "project_id": "p1q2w3e4",
  "title": "Task 1",
  "description": "Description of the task",
  "assigned_to": "b2c3d4e5",
  "status": "in progress",
  "time_spent": 120,
  "comments": [
    {
      "author": "a1b2c3d4",
      "text": "Initial comment",
      "timestamp": "2024-09-17T10:05:00Z"
    }
  ],
  "created_at": "2024-09-17T10:00:00Z"
}

5. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ коммСнтария ΠΊ Π·Π°Π΄Π°Ρ‡Π΅

POST /tasks/:id/comments

{
  "author": "b2c3d4e5",
  "text": "Additional comment",
  "timestamp": "2024-09-17T11:00:00Z"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "message": "Comment added successfully"
}

6. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ достиТСния с ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠΎΠΉ

POST /achievements

{
  "user_id": "a1b2c3d4",
  "achievement_type": "Completed 10 tasks",
  "image_url": "https://example.com/images/achievement1.png"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "id": "ach1",
  "user_id": "a1b2c3d4",
  "achievement_type": "Completed 10 tasks",
  "image_url": "https://example.com/images/achievement1.png",
  "created_at": "2024-09-17T10:00:00Z"
}

7. Π’Ρ‹Ρ…ΠΎΠ΄ ΠΈΠ· ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи

POST /users/logout

{
  "user_id": "a1b2c3d4"
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "message": "User logged out successfully"
}

8. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ списка ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

GET /users/:id/projects

{
  "user_id": "a1b2c3d4"
}

ΠžΡ‚Π²Π΅Ρ‚:

[
  {
    "id": "p1q2w3e4",
    "name": "New Project",
    "description": "This is a new project",
    "created_at": "2024-09-17T10:00:00Z"
  },
  {
    "id": "r5t6y7u8",
    "name": "Second Project",
    "description": "This is another project",
    "created_at": "2024-09-16T09:00:00Z"
  }
]

9. Бинхронизация событий с Google Calendar

POST /calendar/sync

{
  "user_id": "a1b2c3d4",
  "google_calendar_token": "ya29.A0ARrdaM..."
}

ΠžΡ‚Π²Π΅Ρ‚:

{
  "message": "Calendar synchronized successfully",
  "synced_events": [
    {
      "id": "event1",
      "task_id": "t1y2u3i4",
      "event_start": "2024-09-18T09:00:00Z",
      "event_end": "2024-09-18T10:00:00Z",
      "google_event_id": "abc123"
    },
    {
      "id": "event2",
      "task_id": "t5r6u7v8",
      "event_start": "2024-09-19T14:00:00Z",
      "event_end": "2024-09-19T15:00:00Z",
      "google_event_id": "def456"
    }
  ]
}

5. Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

На страницС профиля ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ смоТСт:

  • Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π°Π²Π°Ρ‚Π°Ρ€ (см. запрос 2).
  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ список ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² (см. запрос 8).
  • Π‘ΠΈΠ½Ρ…Ρ€ΠΎΠ½ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ события с Google Calendar (см. запрос 9).
  • ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ свои достиТСния с изобраТСниями.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ достиТСния

{
  "id": "ach1",
  "achievement_type": "Completed 10 tasks",
  "image_url": "https://example.com/images/achievement1.png",
  "created_at": "2024-09-17T10:00:00Z"
}

ДостиТСния Π½Π° страницС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ

[
  {
    "id": "ach1",
    "achievement_type": "Completed 10 tasks",
    "image_url": "https://example.com/images/achievement1.png",
    "created_at": "2024-09-17T10:00:00Z"
  },
  {
    "id": "ach2",
    "achievement_type": "Completed 5 projects",
    "image_url": "https://example.com/images/achievement2.png",
    "created_at": "2024-09-16T12:00:00Z"
  }
]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published