- Update Wallet Service: balance checks (1 DAARION for create, 0.01 for usage) - Update DAOFactory Service: use new balance checks - Add DB migration: teams type field and city_links table - Add DAARION.city seed data - Create teams API routes with balance validation - Add DAARION.city remote repository - Add sync scripts and documentation
5.4 KiB
5.4 KiB
Підсумок реалізації: Backend для MicroDAO
✅ Що зроблено
1. Wallet Service оновлено
- ✅
hasEnoughForMicroDaoCreate()- перевірка 1 DAARION на балансі (для створення MicroDAO) - ✅
hasEnoughForAdminRole()- перевірка 1 DAARION на балансі (для ролі Admin) - ✅
hasEnoughForMicroDaoUsage()- перевірка 0.01 DAARION на балансі (для використання сервісу) - ✅
getDaarionBalance()- отримання балансу DAARION - ✅ Legacy методи залишено для сумісності
2. DAOFactory Service оновлено
- ✅ Використовує
hasEnoughForMicroDaoCreate()замість старого методу - ✅ Перевірка 1 DAARION на балансі перед створенням MicroDAO
- ✅ Помилка:
INSUFFICIENT_BALANCE: Need 1 DAARION on balance to create MicroDAO
3. Міграція БД створена
- ✅
000010_teams_type_and_city_links.sql - ✅ Додано поле
typeв таблицюteams(city, platform, community, guild, lab, personal) - ✅ Додано поле
parent_team_idдля ієрархічної структури - ✅ Створено таблицю
city_linksдля зв'язків між DAARION.city та платформами - ✅ Seed дані для DAARION.city (id='daarion-city', type='city', slug='daarion')
4. API Endpoints створено
- ✅
POST /api/v1/teams- створення MicroDAO (з перевіркою 1 DAARION) - ✅
GET /api/v1/teams- список teams/MicroDAO - ✅
GET /api/v1/teams/:teamId- отримання team/MicroDAO - ✅
POST /api/v1/teams/:teamId/members- запрошення користувача (з перевірками балансу)
5. Типи оновлено
- ✅
Teaminterface - додано поляtype,parent_team_id,slug - ✅
CreateTeamRequestinterface - додано поляtype,slug,mode
6. Логіка запрошення
- ✅ Admin може запросити користувача тільки якщо має 1 DAARION на балансі
- ✅ Для ролі Admin: запрошений користувач має мати 1 DAARION на балансі
- ✅ Для ролі Member: запрошений користувач має мати 0.01 DAARION на балансі
📋 Правила доступу (підсумок)
Створення MicroDAO
- Потрібно: 1 DAARION на балансі (не стейкінг)
- Результат: Роль Admin у створеному MicroDAO
Додавання Admin
- Потрібно:
- Поточний користувач: 1 DAARION на балансі
- Запрошений користувач: 1 DAARION на балансі
- Результат: Роль Admin у MicroDAO
Запрошення Member
- Потрібно:
- Поточний користувач: 1 DAARION на балансі (Admin)
- Запрошений користувач: 0.01 DAARION на балансі
- Результат: Роль Member у MicroDAO
Використання сервісу MicroDAO
- Потрібно: 0.01 DAARION на балансі
- Результат: Доступ до функцій MicroDAO
🔄 Наступні кроки
Frontend (Console UI)
- Створити сторінку
/console - Компонент "Створити MicroDAO" (з перевіркою балансу)
- Компонент "Список MicroDAO" (включаючи DAARION.city)
- Компонент "Wallet" (баланси, перевірка доступу)
- Компонент "Запросити користувача" (з перевірками балансу)
Backend (доповнення)
- Інтеграція з реальною БД (замість заглушок)
- Створення team record при створенні MicroDAO
- Створення team_member record при запрошенні
- Отримання user_id з email при запрошенні
📝 Файли, які були змінені/створені
Створені:
supabase/migrations/000010_teams_type_and_city_links.sqlsrc/api/http/teams.routes.tsIMPLEMENTATION_SUMMARY.md
Оновлені:
src/services/wallet/wallet.service.tssrc/services/wallet/wallet.interface.tssrc/services/dao-factory/dao-factory.service.tssrc/types/api.tssrc/app.tssupabase/migrations/README.md
🧪 Тестування
Для тестування потрібно:
-
Застосувати міграцію:
psql -d microdao -f supabase/migrations/000010_teams_type_and_city_links.sql -
Перевірити API endpoints:
POST /api/v1/teams- створення MicroDAOPOST /api/v1/teams/:teamId/members- запрошення користувача
-
Перевірити перевірки балансу:
- Створення без достатнього балансу → помилка 403
- Запрошення Admin без достатнього балансу → помилка 403
- Запрошення Member без достатнього балансу → помилка 403
Останнє оновлення: 2024-11-14