Files
Avtex/QUICKSTART.md
T
2026-04-21 02:01:41 +05:00

341 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 Быстрый старт - NANAXE CRM
## ✅ Что уже создано
### Структура проекта
```
lib/
├── core/ # Ядро приложения
│ ├── ai_service.dart # AI сервис (OpenAI, Anthropic)
│ ├── firebase_config.dart # Firebase конфигурация
│ ├── firestore_service.dart # Firestore сервис (CRUD операции)
│ ├── local_storage_service.dart # Локальное хранилище (Hive)
│ ├── router.dart # Маршрутизация (GoRouter)
│ └── theme.dart # Темы оформления
├── features/ # Функциональные модули (будущие)
├── models/ # Модели данных
│ ├── user_model.dart # Пользователь
│ ├── task_model.dart # Задача
│ ├── project_model.dart # Проект
│ ├── mind_map_model.dart # Mind-карта
│ ├── calendar_event_model.dart # Событие календаря
│ └── alarm_model.dart # Будильник
├── providers/ # State management (Riverpod)
│ └── auth_provider.dart # Аутентификация
├── screens/ # Экраны
│ ├── auth_screen.dart # Вход
│ ├── home_screen.dart # Главная навигация
│ ├── dashboard_screen.dart # Дашборд
│ ├── tasks_screen.dart # Задачи
│ ├── mind_map_screen.dart # Mind-карта
│ ├── calendar_screen.dart # Календарь
│ └── alarms_screen.dart # Будильники
└── widgets/ # Виджеты (будущие)
```
## 🔧 Настройка Firebase
### 1. Создайте проект в Firebase Console
1. Перейдите на https://console.firebase.google.com
2. Нажмите "Add project"
3. Введите имя: "NANAXE CRM"
4. Отключите Google Analytics (не нужно для начала)
5. Создайте проект
### 2. Включите Authentication
1. В меню слева: **Build** → **Authentication**
2. Нажмите **Get started**
3. Включите **Google** провайдер:
- Click **Google** → **Enable**
- Enter support email: ваш email
- **Save**
### 3. Создайте Firestore базу
1. В меню: **Build** → **Firestore Database**
2. Нажмите **Create database**
3. Выберите **Start in test mode** (потом настроим правила)
4. Выберите локацию (например, us-central)
5. **Enable**
### 4. Добавьте Android приложение
1. В Firebase Console: **Project Settings** (шестерёнка)
2. **Your apps** → **Add app** → **Android**
3. Введите package name: `com.nanahui.nanahui_crm`
4. Скачайте `google-services.json`
5. Положите файл в: `android/app/google-services.json`
### 5. Добавьте iOS приложение (если нужно)
1. **Add app** → **iOS**
2. Bundle ID: `com.nanahui.nanahuiCrm`
3. Скачайте `GoogleService-Info.plist`
4. Положите в: `ios/Runner/GoogleService-Info.plist`
### 6. Настройте android/app/build.gradle
В файле `android/app/build.gradle` добавьте:
```gradle
dependencies {
// ... другие зависимости
// Firebase
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-analytics'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-firestore'
implementation 'com.google.firebase:firebase-messaging'
}
// В конце файла:
apply plugin: 'com.google.gms.google-services'
```
## 🔑 Настройка API ключей
### OpenAI API (для AI функций)
1. Перейдите на https://platform.openai.com/api-keys
2. Создайте новый API ключ
3. Скопируйте ключ
### Google Calendar API
1. Перейдите на https://console.cloud.google.com
2. Создайте новый проект или выберите существующий
3. Включите **Google Calendar API**
4. Создайте OAuth 2.0 credentials
5. Получите Client ID и Client Secret
## 📝 Настройка окружения
1. Скопируйте `.env.example` в `.env`:
```bash
cp .env.example .env
```
2. Заполните `.env` своими ключами:
```
OPENAI_API_KEY=sk-your-actual-openai-key
FIREBASE_API_KEY=your-firebase-key
# и т.д.
```
## 🏃 Запуск приложения
### 1. Установите зависимости
```bash
flutter pub get
```
### 2. Запуск на эмуляторе/устройстве
```bash
flutter run
```
### 3. Сборка APK (Android)
```bash
flutter build apk --release
```
### 4. Сборка для iOS
```bash
flutter build ios --release
```
## 📱 Тестирование
### Проверка аутентификации
1. Запустите приложение
2. Нажмите "Войти через Google"
3. Выберите аккаунт
4. Должна произойти авторизация и переход на главный экран
### Проверка навигации
1. После входа используйте нижнюю навигационную панель
2. Переключайтесь между: Главная, Задачи, Mind-карта, Календарь, Будильники
## 🔥 Firestore правила безопасности
Создайте в Firebase Console → Firestore Database → Rules:
```javascript
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
// Helper function
function isAuthenticated() {
return request.auth != null;
}
function isOwner(userId) {
return request.auth.uid == userId;
}
// Users
match /users/{userId} {
allow read: if isAuthenticated();
allow write: if isOwner(userId);
}
// Projects
match /projects/{projectId} {
allow read: if isAuthenticated();
allow create: if isAuthenticated();
allow update, delete: if isAuthenticated();
}
// Tasks
match /tasks/{taskId} {
allow read: if isAuthenticated();
allow create, update, delete: if isAuthenticated();
}
// Events
match /events/{eventId} {
allow read: if isAuthenticated();
allow create, update, delete: if isAuthenticated();
}
// Alarms
match /alarms/{alarmId} {
allow read: if isAuthenticated();
allow create, update, delete: if isAuthenticated();
}
// Mind maps
match /mindmaps/{projectId}/nodes/{nodeId} {
allow read: if isAuthenticated();
allow write: if isAuthenticated();
}
}
}
```
## 📊 Структура Firestore
```
users/
└─ {userId}/
├─ email: string
├─ displayName: string
├─ photoUrl: string
├─ role: "admin" | "member" | "viewer"
├─ teamIds: string[]
└─ settings: map
projects/
└─ {projectId}/
├─ name: string
├─ description: string
├─ teamId: string
├─ ownerId: string
├─ memberIds: string[]
├─ status: string
├─ startDate: timestamp
├─ endDate: timestamp
└─ color: string
tasks/
└─ {taskId}/
├─ title: string
├─ description: string
├─ projectId: string
├─ parentTaskId: string?
├─ status: "todo" | "inProgress" | "review" | "done"
├─ priority: "low" | "medium" | "high" | "urgent"
├─ assigneeId: string?
├─ creatorId: string
├─ dueDate: timestamp?
└─ aiMetadata: map
mindmaps/
└─ {projectId}/
└─ nodes/
└─ {nodeId}/
├─ parentId: string?
├─ level: number
├─ title: string
├─ taskId: string?
├─ x: number
├─ y: number
└─ color: string
events/
└─ {eventId}/
├─ title: string
├─ startTime: timestamp
├─ endTime: timestamp
├─ googleEventId: string?
└─ attendeeIds: string[]
alarms/
└─ {alarmId}/
├─ title: string
├─ dateTime: timestamp
├─ isRepeating: boolean
└─ taskId: string?
```
## 🛠 Следующие шаги
### Первоочередные задачи:
1. ✅ ~~Создать базовую структуру~~
2. ✅ ~~Настроить модели данных~~
3. ✅ ~~Создать экраны навигации~~
4. 🔲 Настроить Firebase проект
5. 🔲 Реализовать реальную аутентификацию
6. 🔲 Добавить CRUD операции с Firestore
7. 🔲 Реализовать синхронизацию офлайн-данных
8. 🔲 Добавить AI функции (OpenAI API)
9. 🔲 Интеграция с Google Calendar
10. 🔲 Создать mind-map виджет с drag-drop
### Для тестирования AI:
1. Добавьте OpenAI API ключ в `lib/core/ai_service.dart`:
```dart
final aiService = AIService(
openaiApiKey: 'sk-your-api-key-here',
);
```
2. Протестируйте генерацию подзадач:
```dart
final subtasks = await aiService.generateSubtasks(
title: 'Создать CRM систему',
description: 'Разработка CRM для управления задачами команды',
);
print(subtasks);
```
## 🆘 Troubleshooting
### Ошибка: "No Firebase App"
- Убедитесь, что `google-services.json` лежит в `android/app/`
- Проверьте, что добавлен `apply plugin: 'com.google.gms.google-services'`
### Ошибка: "Sign-in failed"
- Проверьте SHA-1 fingerprint для Android
- Убедитесь, что Google Sign-In включён в Firebase Console
### Ошибка: "Permission denied"
- Проверьте правила безопасности Firestore
- Убедитесь, что пользователь аутентифицирован
## 📚 Ресурсы
- [Flutter документация](https://docs.flutter.dev)
- [Riverpod документация](https://riverpod.dev)
- [Firebase Flutter](https://firebase.flutter.dev)
- [OpenAI API](https://platform.openai.com/docs)
---
**Создано для команды NANAXE** 🚀