- CRM: configurable pipeline (default: New → Contact → Meeting → Negotiation → Connected / Lost), drag-and-drop board, lead card with call/meeting/note history, photos and files, tasks with Telegram reminders at the due time, map of venues (OpenStreetMap via Leaflet), lost reason. Sales reps see only their own leads. - "Connected" in one click: a venue becomes a club card partner with a one-time owner link to the work bot; an agency gets a code and a client link. The sales rep is recorded on the partner for the bonus. - Sales bonus formula in settings (per venue, per agency, % of revenue from the rep's agency clients for N months); defaults are 0 until the owner sets them. - Agencies (superadmin): clients, gift subscriptions, reward by month, payouts, client link, edit. Venues: offers by membership level (5 languages), staff, card checks, 8-week activity, owner link, map point. - Schema: SalesStage/SalesLead/SalesActivity/SalesTask; salesId on Agency and Partner; lat/lng/phone/note on Partner; agencyId on Payout. - Tests for stage rules, conversion, task reminders and bonus; dev:crm-demo. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
23 lines
593 B
TypeScript
23 lines
593 B
TypeScript
import '@barev/ui/styles.css';
|
|
import './styles.css';
|
|
import './chats.css';
|
|
import './orders.css';
|
|
import './crm.css';
|
|
import { ApiProvider, ToastProvider } from '@barev/web';
|
|
import { StrictMode } from 'react';
|
|
import { createRoot } from 'react-dom/client';
|
|
import { App } from './App.tsx';
|
|
import { BoI18nProvider } from './i18n.tsx';
|
|
|
|
createRoot(document.getElementById('root')!).render(
|
|
<StrictMode>
|
|
<ApiProvider withCredentials>
|
|
<BoI18nProvider>
|
|
<ToastProvider>
|
|
<App />
|
|
</ToastProvider>
|
|
</BoI18nProvider>
|
|
</ApiProvider>
|
|
</StrictMode>,
|
|
);
|