Restore Persian UTF-8 labels in shared package.
Undo double-encoding mojibake so automation and other UI strings render correctly.
This commit is contained in:
+243
-243
@@ -3,13 +3,13 @@ export type UserRole = "owner" | "admin" | "sales" | "support";
|
|||||||
export const USER_ROLES: UserRole[] = ["owner", "admin", "sales", "support"];
|
export const USER_ROLES: UserRole[] = ["owner", "admin", "sales", "support"];
|
||||||
|
|
||||||
export const USER_ROLE_LABELS: Record<UserRole, string> = {
|
export const USER_ROLE_LABELS: Record<UserRole, string> = {
|
||||||
owner: "ÃÂ
çÃÂé",
|
owner: "مالک",
|
||||||
admin: "ÃÂ
ïÃÂñ",
|
admin: "مدیر",
|
||||||
sales: "ÃÂñÃÂô",
|
sales: "فروش",
|
||||||
support: "þôêÃÂèçÃÂÃÂ",
|
support: "پشتیبانی",
|
||||||
};
|
};
|
||||||
|
|
||||||
/** êÃÂøÃÂÃÂ
çê óçòÃÂ
çÃÂààÃÂ
ïÃÂñÃÂê éçñèñçà*/
|
/** تنظیمات سازمانی و مدیریت کاربران */
|
||||||
export function canManageSettings(role: UserRole | string | null | undefined): boolean {
|
export function canManageSettings(role: UserRole | string | null | undefined): boolean {
|
||||||
return role === "owner" || role === "admin";
|
return role === "owner" || role === "admin";
|
||||||
}
|
}
|
||||||
@@ -18,12 +18,12 @@ export function canManageUsers(role: UserRole | string | null | undefined): bool
|
|||||||
return role === "owner" || role === "admin";
|
return role === "owner" || role === "admin";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂ
ôçÃÂïàÃÂÃÂ
àþñÃÂÃÂïÃÂâÂÂÃÂçàóçòÃÂ
çà(ÃÂàÃÂÃÂ÷ ÃÂ
çÃÂéÃÂê îÃÂï) */
|
/** مشاهده همه پروندههای سازمان (نه فقط مالکیت خود) */
|
||||||
export function canViewAllRecords(role: UserRole | string | null | undefined): boolean {
|
export function canViewAllRecords(role: UserRole | string | null | undefined): boolean {
|
||||||
return role === "owner" || role === "admin";
|
return role === "owner" || role === "admin";
|
||||||
}
|
}
|
||||||
|
|
||||||
/** êúÃÂÃÂñ ÃÂ
çÃÂé þñÃÂÃÂïà*/
|
/** تغییر مالک پرونده */
|
||||||
export function canReassignRecords(role: UserRole | string | null | undefined): boolean {
|
export function canReassignRecords(role: UserRole | string | null | undefined): boolean {
|
||||||
return role === "owner" || role === "admin";
|
return role === "owner" || role === "admin";
|
||||||
}
|
}
|
||||||
@@ -37,10 +37,10 @@ export interface AuthUserDto {
|
|||||||
organizationId: string;
|
organizationId: string;
|
||||||
organizationName?: string;
|
organizationName?: string;
|
||||||
hasAvatar?: boolean;
|
hasAvatar?: boolean;
|
||||||
/** ÃÂ
çÃÂé ÃÂ
ÃÂÃÂ÷ ÃÂùÃÂàâ çôêñçé ÃÂ
êùÃÂàèàÃÂ
çÃÂé çóê ÃÂàùöàòÃÂñÃÂ
ìÃÂ
ÃÂùà*/
|
/** مالک محیط فعلی — اشتراک متعلق به مالک است نه عضو زیرمجموعه */
|
||||||
isOrgOwner?: boolean;
|
isOrgOwner?: boolean;
|
||||||
enabledModules?: OrgModuleKey[];
|
enabledModules?: OrgModuleKey[];
|
||||||
/** îÃÂçõàçôêñçé ÃÂ
çÃÂé ÃÂ
ÃÂÃÂ÷ (èñçàçùöç ÃÂÃÂ÷ ìÃÂê ÃÂÃÂ
çÃÂô/ïÃÂê ÃÂñÃÂï) */
|
/** خلاصه اشتراک مالک محیط (برای اعضا فقط جهت نمایش/گیت ورود) */
|
||||||
subscription?: SubscriptionSummaryDto | null;
|
subscription?: SubscriptionSummaryDto | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,15 +64,15 @@ export const BILLING_PLAN_CODES: BillingPlanCode[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const BILLING_PLAN_LABELS: Record<BillingPlanCode, string> = {
|
export const BILLING_PLAN_LABELS: Record<BillingPlanCode, string> = {
|
||||||
trial: "ïÃÂ
àñõ ñÃÂòÃÂ",
|
trial: "دمو ۱۵ روزه",
|
||||||
monthly: "ÃÂ
çÃÂçÃÂÃÂ",
|
monthly: "ماهانه",
|
||||||
quarterly: "óÃÂâÂÂÃÂ
çÃÂÃÂ",
|
quarterly: "سهماهه",
|
||||||
semiannual: "ôôâÂÂÃÂ
çÃÂÃÂ",
|
semiannual: "ششماهه",
|
||||||
yearly: "ÃÂéóçÃÂÃÂ",
|
yearly: "یکساله",
|
||||||
custom: "óÃÂçñôÃÂ",
|
custom: "سفارشی",
|
||||||
};
|
};
|
||||||
|
|
||||||
/** ÃÂ
ïê þÃÂôâÂÂÃÂñö þÃÂÃÂâÂÂÃÂç (ñÃÂò) â custom ÃÂïçñï */
|
/** مدت پیشفرض پلنها (روز) — custom ندارد */
|
||||||
export const BILLING_PLAN_DAYS: Record<Exclude<BillingPlanCode, "custom">, number> = {
|
export const BILLING_PLAN_DAYS: Record<Exclude<BillingPlanCode, "custom">, number> = {
|
||||||
trial: 15,
|
trial: 15,
|
||||||
monthly: 30,
|
monthly: 30,
|
||||||
@@ -164,49 +164,49 @@ export const ORG_MODULE_KEYS: OrgModuleKey[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const ORG_MODULE_LABELS: Record<OrgModuleKey, string> = {
|
export const ORG_MODULE_LABELS: Record<OrgModuleKey, string> = {
|
||||||
customers: "ÃÂ
ôêñÃÂçÃÂ",
|
customers: "مشتریان",
|
||||||
pipeline: "éçñÃÂò ÃÂñÃÂô",
|
pipeline: "کاریز فروش",
|
||||||
products: "ÃÂ
ÃÂõÃÂÃÂçê",
|
products: "محصولات",
|
||||||
invoices: "ÃÂçéêÃÂñÃÂç",
|
invoices: "فاکتورها",
|
||||||
quotes: "þÃÂôâÂÂÃÂçéêÃÂñÃÂç",
|
quotes: "پیشفاکتورها",
|
||||||
commissions: "þÃÂñóçÃÂê",
|
commissions: "پورسانت",
|
||||||
sales_forecast: "ÃÂïààþÃÂôâÂÂèÃÂÃÂÃÂ",
|
sales_forecast: "هدف و پیشبینی",
|
||||||
activities: "ÃÂùçÃÂÃÂêâÂÂÃÂç",
|
activities: "فعالیتها",
|
||||||
tickets: "êÃÂéêâÂÂÃÂç",
|
tickets: "تیکتها",
|
||||||
workflow_automations: "çêÃÂÃÂ
çóÃÂÃÂàïñïô éçñ",
|
workflow_automations: "اتوماسیون گردش کار",
|
||||||
message_automations: "çêÃÂÃÂ
çóÃÂÃÂàþÃÂçÃÂ
é",
|
message_automations: "اتوماسیون پیامک",
|
||||||
lead_forms: "ÃÂñÃÂ
âÂÂóçò óñÃÂî",
|
lead_forms: "فرمساز سرنخ",
|
||||||
leads: "ÃÂ
ïÃÂñÃÂê ÃÂÃÂïÃÂç",
|
leads: "مدیریت لیدها",
|
||||||
project_boards: "éçñÃÂò þñÃÂÃÂÃÂ",
|
project_boards: "کاریز پروژه",
|
||||||
inventory: "çÃÂèçñ",
|
inventory: "انبار",
|
||||||
cheques: "ÃÂéâÂÂÃÂç",
|
cheques: "چکها",
|
||||||
attachments: "þÃÂÃÂóêâÂÂÃÂç",
|
attachments: "پیوستها",
|
||||||
loyalty: "èçôïçàÃÂ
ôêñÃÂçÃÂ",
|
loyalty: "باشگاه مشتریان",
|
||||||
reports: "ïòçñôâÂÂÃÂç",
|
reports: "گزارشها",
|
||||||
notes: "ÃÂçïïçôêâÂÂÃÂç",
|
notes: "یادداشتها",
|
||||||
tahesab: "êÃÂâÂÂÃÂóçè",
|
tahesab: "تهحساب",
|
||||||
custom_fields: "ÃÂÃÂÃÂïÃÂçàóÃÂçñôÃÂ",
|
custom_fields: "فیلدهای سفارشی",
|
||||||
currencies: "çñòÃÂç",
|
currencies: "ارزها",
|
||||||
team_settings: "êÃÂÃÂ
àêÃÂøÃÂÃÂ
çê óçòÃÂ
çÃÂ",
|
team_settings: "تیم و تنظیمات سازمان",
|
||||||
faq: "FAQ",
|
faq: "FAQ",
|
||||||
audit_logs: "ÃÂçï ÃÂùçÃÂÃÂê éçñèñçÃÂ",
|
audit_logs: "لاگ فعالیت کاربران",
|
||||||
saved_views: "ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïÃÂ",
|
saved_views: "فیلترهای ذخیرهشده",
|
||||||
public_api: "API àÃÂèâÂÂÃÂÃÂé",
|
public_api: "API و وبهوک",
|
||||||
sms_campaigns: "þÃÂçÃÂ
é ïñÃÂÃÂÃÂ",
|
sms_campaigns: "پیامک گروهی",
|
||||||
teams: "êÃÂÃÂ
âÂÂÃÂç àó÷àïóêñóàèàþñÃÂÃÂïÃÂâÂÂÃÂç",
|
teams: "تیمها و سطح دسترسی به پروندهها",
|
||||||
woocommerce: "ÃÂÃÂéçÃÂ
ñó",
|
woocommerce: "ووکامرس",
|
||||||
voip: "êÃÂÃÂàóçòÃÂ
çÃÂÃÂ",
|
voip: "تلفن سازمانی",
|
||||||
reservations: "ñòñààÃÂÃÂèêâÂÂïÃÂÃÂ",
|
reservations: "رزرو و نوبتدهی",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const ORG_MODULE_GROUPS: Array<{
|
export const ORG_MODULE_GROUPS: Array<{
|
||||||
title: string;
|
title: string;
|
||||||
keys: OrgModuleKey[];
|
keys: OrgModuleKey[];
|
||||||
}> = [
|
}> = [
|
||||||
{ title: "ÃÂ
ôêñÃÂçÃÂ", keys: ["customers"] },
|
{ title: "مشتریان", keys: ["customers"] },
|
||||||
{ title: "ÃÂÃÂïÃÂç", keys: ["leads", "lead_forms"] },
|
{ title: "لیدها", keys: ["leads", "lead_forms"] },
|
||||||
{
|
{
|
||||||
title: "ÃÂñÃÂô",
|
title: "فروش",
|
||||||
keys: [
|
keys: [
|
||||||
"pipeline",
|
"pipeline",
|
||||||
"products",
|
"products",
|
||||||
@@ -216,10 +216,10 @@ export const ORG_MODULE_GROUPS: Array<{
|
|||||||
"sales_forecast",
|
"sales_forecast",
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
{ title: "ÃÂùçÃÂÃÂêâÂÂÃÂç", keys: ["activities", "notes"] },
|
{ title: "فعالیتها", keys: ["activities", "notes"] },
|
||||||
{ title: "þôêÃÂèçÃÂÃÂ", keys: ["tickets", "faq"] },
|
{ title: "پشتیبانی", keys: ["tickets", "faq"] },
|
||||||
{
|
{
|
||||||
title: "çêÃÂÃÂ
çóÃÂÃÂÃÂ",
|
title: "اتوماسیون",
|
||||||
keys: [
|
keys: [
|
||||||
"workflow_automations",
|
"workflow_automations",
|
||||||
"message_automations",
|
"message_automations",
|
||||||
@@ -227,7 +227,7 @@ export const ORG_MODULE_GROUPS: Array<{
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "çèòçñÃÂç",
|
title: "ابزارها",
|
||||||
keys: [
|
keys: [
|
||||||
"project_boards",
|
"project_boards",
|
||||||
"inventory",
|
"inventory",
|
||||||
@@ -242,7 +242,7 @@ export const ORG_MODULE_GROUPS: Array<{
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "êÃÂøÃÂÃÂ
çê",
|
title: "تنظیمات",
|
||||||
keys: [
|
keys: [
|
||||||
"team_settings",
|
"team_settings",
|
||||||
"teams",
|
"teams",
|
||||||
@@ -312,7 +312,7 @@ export interface OrgUserDto {
|
|||||||
lastLoginAt?: string | null;
|
lastLoginAt?: string | null;
|
||||||
hasAvatar?: boolean;
|
hasAvatar?: boolean;
|
||||||
commissionPercent?: number;
|
commissionPercent?: number;
|
||||||
/** own = ÃÂÃÂ÷ îÃÂï | team = ÃÂÃÂ
âÂÂêÃÂÃÂ
ÃÂâÂÂÃÂç | org = éàóçòÃÂ
çà*/
|
/** own = فقط خود | team = همتیمیها | org = کل سازمان */
|
||||||
dataVisibility?: DataVisibility;
|
dataVisibility?: DataVisibility;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
}
|
}
|
||||||
@@ -322,9 +322,9 @@ export type DataVisibility = "own" | "team" | "org";
|
|||||||
export const DATA_VISIBILITIES: DataVisibility[] = ["own", "team", "org"];
|
export const DATA_VISIBILITIES: DataVisibility[] = ["own", "team", "org"];
|
||||||
|
|
||||||
export const DATA_VISIBILITY_LABELS: Record<DataVisibility, string> = {
|
export const DATA_VISIBILITY_LABELS: Record<DataVisibility, string> = {
|
||||||
own: "ÃÂÃÂ÷ þñÃÂÃÂïÃÂâÂÂÃÂçàîÃÂï",
|
own: "فقط پروندههای خود",
|
||||||
team: "êÃÂÃÂ
âÂÂÃÂçàùöÃÂ",
|
team: "تیمهای عضو",
|
||||||
org: "éàóçòÃÂ
çÃÂ",
|
org: "کل سازمان",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface UpdateUserVisibilityRequest {
|
export interface UpdateUserVisibilityRequest {
|
||||||
@@ -345,14 +345,14 @@ export const ROLE_PERMISSION_ITEMS: Array<{
|
|||||||
key: RolePermissionKey;
|
key: RolePermissionKey;
|
||||||
label: string;
|
label: string;
|
||||||
}> = [
|
}> = [
|
||||||
{ key: "customers", label: "ÃÂ
ôêñÃÂçÃÂ" },
|
{ key: "customers", label: "مشتریان" },
|
||||||
{ key: "sales", label: "ÃÂñÃÂô àÃÂ
ùçÃÂ
ÃÂçê" },
|
{ key: "sales", label: "فروش و معاملات" },
|
||||||
{ key: "billing", label: "þÃÂôâÂÂÃÂçéêÃÂñÃÂç àÃÂçéêÃÂñÃÂç" },
|
{ key: "billing", label: "پیشفاکتورها و فاکتورها" },
|
||||||
{ key: "products", label: "ÃÂ
ÃÂõÃÂÃÂçê àîïÃÂ
çê" },
|
{ key: "products", label: "محصولات و خدمات" },
|
||||||
{ key: "activities", label: "ÃÂùçÃÂÃÂêâÂÂÃÂç" },
|
{ key: "activities", label: "فعالیتها" },
|
||||||
{ key: "notes", label: "ÃÂçïïçôêâÂÂÃÂç" },
|
{ key: "notes", label: "یادداشتها" },
|
||||||
{ key: "reports", label: "ïòçñôâÂÂÃÂç" },
|
{ key: "reports", label: "گزارشها" },
|
||||||
{ key: "audit", label: "ÃÂçï ÃÂùçÃÂÃÂê éçñèñçÃÂ" },
|
{ key: "audit", label: "لاگ فعالیت کاربران" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export interface OrgRoleMemberDto {
|
export interface OrgRoleMemberDto {
|
||||||
@@ -422,7 +422,7 @@ export interface ApiErrorBody {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface LoginRequest {
|
export interface LoginRequest {
|
||||||
/** çÃÂÃÂ
ÃÂàÃÂç ôÃÂ
çñàÃÂ
ÃÂèçÃÂà*/
|
/** ایمیل یا شماره موبایل */
|
||||||
identifier: string;
|
identifier: string;
|
||||||
password: string;
|
password: string;
|
||||||
}
|
}
|
||||||
@@ -444,7 +444,7 @@ export interface LoginChallengeResponse {
|
|||||||
channel: 'email' | 'mobile';
|
channel: 'email' | 'mobile';
|
||||||
expiresInSeconds: number;
|
expiresInSeconds: number;
|
||||||
maskedDestination?: string;
|
maskedDestination?: string;
|
||||||
/** ÃÂÃÂ÷ ïñ ÃÂ
ÃÂÃÂ÷ êÃÂóùà/ AUTH_RETURN_OTP */
|
/** فقط در محیط توسعه / AUTH_RETURN_OTP */
|
||||||
devCode?: string;
|
devCode?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -453,7 +453,7 @@ export interface RegisterChallengeResponse {
|
|||||||
expiresInSeconds: number;
|
expiresInSeconds: number;
|
||||||
maskedEmail?: string;
|
maskedEmail?: string;
|
||||||
maskedMobile?: string;
|
maskedMobile?: string;
|
||||||
/** ÃÂÃÂêàóñÃÂÃÂó çÃÂÃÂ
ÃÂàîçÃÂ
ÃÂô çóê false â ÃÂÃÂ÷ OTP ÃÂ
ÃÂèçÃÂàÃÂçòÃÂ
çóê */
|
/** وقتی سرویس ایمیل خاموش است false — فقط OTP موبایل لازم است */
|
||||||
emailOtpRequired?: boolean;
|
emailOtpRequired?: boolean;
|
||||||
devEmailCode?: string;
|
devEmailCode?: string;
|
||||||
devMobileCode?: string;
|
devMobileCode?: string;
|
||||||
@@ -531,7 +531,7 @@ export interface UpdateOrganizationRequest {
|
|||||||
businessField?: BusinessField;
|
businessField?: BusinessField;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** òÃÂ
ÃÂÃÂàÃÂùçÃÂÃÂê óçòÃÂ
çàâ ÃÂÃÂ
âÂÂêñçò õÃÂçÃÂù ïÃÂïçñ */
|
/** زمینه فعالیت سازمان — همتراز صنایع دیدار */
|
||||||
export const BUSINESS_FIELDS = [
|
export const BUSINESS_FIELDS = [
|
||||||
"education",
|
"education",
|
||||||
"beauty",
|
"beauty",
|
||||||
@@ -558,26 +558,26 @@ export const BUSINESS_FIELDS = [
|
|||||||
export type BusinessField = (typeof BUSINESS_FIELDS)[number];
|
export type BusinessField = (typeof BUSINESS_FIELDS)[number];
|
||||||
|
|
||||||
export const BUSINESS_FIELD_LABELS: Record<BusinessField, string> = {
|
export const BUSINESS_FIELD_LABELS: Record<BusinessField, string> = {
|
||||||
education: "âÃÂ
ÃÂòôïçààÃÂ
äóóçê âÃÂ
ÃÂòôÃÂ",
|
education: "آموزشگاه و مؤسسات آموزشی",
|
||||||
beauty: "éÃÂÃÂÃÂÃÂé òÃÂèçÃÂààâñçÃÂôïçÃÂ",
|
beauty: "کلینیک زیبایی و آرایشگاه",
|
||||||
real_estate: "çÃÂ
ÃÂçé àÃÂ
ôçÃÂñÃÂàÃÂ
óéÃÂ",
|
real_estate: "املاک و مشاورین مسکن",
|
||||||
construction: "õÃÂùê óçîêÃÂ
çÃÂ",
|
construction: "صنعت ساختمان",
|
||||||
advertising: "êèÃÂÃÂúçê àÃÂ
ôçÃÂñàéóèâÂÂÃÂéçñ",
|
advertising: "تبلیغات و مشاوره کسبوکار",
|
||||||
insurance: "èÃÂÃÂ
ÃÂ",
|
insurance: "بیمه",
|
||||||
consulting: "ôñéêâÂÂÃÂçàÃÂ
ôçÃÂñ",
|
consulting: "شرکتهای مشاور",
|
||||||
startup: "çóêçñêçþ àéóèâÂÂÃÂéçñ âÃÂÃÂçÃÂÃÂ",
|
startup: "استارتاپ و کسبوکار آنلاین",
|
||||||
medical_devices: "êìÃÂÃÂòçê þòôéÃÂ",
|
medical_devices: "تجهیزات پزشکی",
|
||||||
travel: "ïñïôïñààÃÂ
ÃÂçìñê",
|
travel: "گردشگری و مهاجرت",
|
||||||
contractor: "þÃÂÃÂ
çÃÂéçñààþñÃÂÃÂÃÂâÂÂçÃÂ",
|
contractor: "پیمانکاری و پروژهای",
|
||||||
trading: "èçòñïçÃÂÃÂ",
|
trading: "بازرگانی",
|
||||||
manufacturing: "êÃÂÃÂÃÂïààõÃÂùêÃÂ",
|
manufacturing: "تولیدی و صنعتی",
|
||||||
personal: "éóèâÂÂÃÂéçñ ôîõààîçÃÂïÃÂ",
|
personal: "کسبوکار شخصی و خانگی",
|
||||||
tech: "ÃÂñÃÂ
âÂÂçÃÂòçñ àóîêâÂÂçÃÂòçñ",
|
tech: "نرمافزار و سختافزار",
|
||||||
legal: "ÃÂéÃÂç àÃÂ
ôçÃÂñÃÂàÃÂÃÂÃÂÃÂÃÂ",
|
legal: "وکلا و مشاورین حقوقی",
|
||||||
repair: "îïÃÂ
çê àêùÃÂ
ÃÂñçê",
|
repair: "خدمات و تعمیرات",
|
||||||
retail: "îñïÃÂâÂÂÃÂñÃÂôÃÂ",
|
retail: "خردهفروشی",
|
||||||
jewelry: "÷ÃÂç àìÃÂçÃÂñ",
|
jewelry: "طلا و جواهر",
|
||||||
other: "óçÃÂñ",
|
other: "سایر",
|
||||||
};
|
};
|
||||||
|
|
||||||
export function isBusinessField(value: string): value is BusinessField {
|
export function isBusinessField(value: string): value is BusinessField {
|
||||||
@@ -593,7 +593,7 @@ export interface ExchangeRateDto {
|
|||||||
export interface UpdateOrgCurrenciesRequest {
|
export interface UpdateOrgCurrenciesRequest {
|
||||||
baseCurrency?: string;
|
baseCurrency?: string;
|
||||||
enabledCurrencies?: string[];
|
enabledCurrencies?: string[];
|
||||||
/** ÃÂñîâÂÂÃÂç ÃÂóèê èàçñò þçÃÂÃÂàçñò þçÃÂàÃÂÃÂçòàèàÃÂñî ÃÂïçñï */
|
/** نرخها نسبت به ارز پایه؛ ارز پایه نیازی به نرخ ندارد */
|
||||||
rates?: Array<{ currency: string; rateToBase: number }>;
|
rates?: Array<{ currency: string; rateToBase: number }>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -602,12 +602,12 @@ export const CURRENCY_CATALOG: Array<{
|
|||||||
labelFa: string;
|
labelFa: string;
|
||||||
suffix: string;
|
suffix: string;
|
||||||
}> = [
|
}> = [
|
||||||
{ code: "IRR", labelFa: "ñÃÂçàçÃÂñçÃÂ", suffix: "ñÃÂçÃÂ" },
|
{ code: "IRR", labelFa: "ریال ایران", suffix: "ریال" },
|
||||||
{ code: "USD", labelFa: "ïÃÂçñ âÃÂ
ñÃÂéç", suffix: "ïÃÂçñ" },
|
{ code: "USD", labelFa: "دلار آمریکا", suffix: "دلار" },
|
||||||
{ code: "EUR", labelFa: "ÃÂÃÂñÃÂ", suffix: "ÃÂÃÂñÃÂ" },
|
{ code: "EUR", labelFa: "یورو", suffix: "یورو" },
|
||||||
{ code: "AED", labelFa: "ïñÃÂÃÂ
çÃÂ
çñçê", suffix: "ïñÃÂÃÂ
" },
|
{ code: "AED", labelFa: "درهم امارات", suffix: "درهم" },
|
||||||
{ code: "TRY", labelFa: "ÃÂÃÂñ êñéÃÂÃÂ", suffix: "ÃÂÃÂñ" },
|
{ code: "TRY", labelFa: "لیر ترکیه", suffix: "لیر" },
|
||||||
{ code: "GBP", labelFa: "þÃÂÃÂï çÃÂïÃÂÃÂó", suffix: "þÃÂÃÂï" },
|
{ code: "GBP", labelFa: "پوند انگلیس", suffix: "پوند" },
|
||||||
];
|
];
|
||||||
|
|
||||||
export function currencySuffix(code: string): string {
|
export function currencySuffix(code: string): string {
|
||||||
@@ -677,10 +677,10 @@ export const PERSON_MOODS = ["newcomer", "happy", "unhappy", "special"] as const
|
|||||||
export type PersonMood = (typeof PERSON_MOODS)[number];
|
export type PersonMood = (typeof PERSON_MOODS)[number];
|
||||||
|
|
||||||
export const PERSON_MOOD_LABELS: Record<PersonMood, string> = {
|
export const PERSON_MOOD_LABELS: Record<PersonMood, string> = {
|
||||||
newcomer: "ÃÂ
ôêñàêçòàÃÂçñï",
|
newcomer: "مشتری تازه وارد",
|
||||||
happy: "ÃÂ
ôêñàîÃÂôÃÂçÃÂ",
|
happy: "مشتری خوشحال",
|
||||||
unhappy: "ÃÂ
ôêñàÃÂçñçöÃÂ",
|
unhappy: "مشتری ناراضی",
|
||||||
special: "ÃÂ
ôêñàîçõ",
|
special: "مشتری خاص",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface PersonDto {
|
export interface PersonDto {
|
||||||
@@ -777,7 +777,7 @@ export interface DealDto {
|
|||||||
person: PersonSummaryDto | null;
|
person: PersonSummaryDto | null;
|
||||||
company: CompanySummaryDto | null;
|
company: CompanySummaryDto | null;
|
||||||
owner: UserSummaryDto | null;
|
owner: UserSummaryDto | null;
|
||||||
/** ÃÂ
óæÃÂÃÂçàÃÂ
ôêñé ÃÂ
ùçÃÂ
ÃÂà(ùÃÂçÃÂàèñ ÃÂ
çÃÂé çõÃÂÃÂ) */
|
/** مسئولان مشترک معامله (علاوه بر مالک اصلی) */
|
||||||
assignees: UserSummaryDto[];
|
assignees: UserSummaryDto[];
|
||||||
lineItems: DealLineItemDto[];
|
lineItems: DealLineItemDto[];
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
@@ -849,7 +849,7 @@ export interface UpdateDealRequest {
|
|||||||
lineItems?: DealLineItemInput[];
|
lineItems?: DealLineItemInput[];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂÃÂÃÂêñ ðîÃÂñÃÂâÂÂôïÃÂàÃÂÃÂóê çôîçõ */
|
/** فیلتر ذخیرهشدهٔ لیست اشخاص */
|
||||||
export interface PeopleViewFilters {
|
export interface PeopleViewFilters {
|
||||||
q?: string;
|
q?: string;
|
||||||
sort?: string;
|
sort?: string;
|
||||||
@@ -857,7 +857,7 @@ export interface PeopleViewFilters {
|
|||||||
page?: number;
|
page?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂÃÂÃÂêñ ðîÃÂñÃÂâÂÂôïÃÂàéçñÃÂò / ÃÂ
ùçÃÂ
ÃÂçê */
|
/** فیلتر ذخیرهشدهٔ کاریز / معاملات */
|
||||||
export interface DealsViewFilters {
|
export interface DealsViewFilters {
|
||||||
q?: string;
|
q?: string;
|
||||||
amountMin?: string;
|
amountMin?: string;
|
||||||
@@ -1014,7 +1014,7 @@ export interface NoteDto {
|
|||||||
title: string | null;
|
title: string | null;
|
||||||
body: string;
|
body: string;
|
||||||
noteType: NoteType | string;
|
noteType: NoteType | string;
|
||||||
/** team = êÃÂÃÂ
à| personal = ÃÂÃÂ÷ ÃÂÃÂÃÂóÃÂïà*/
|
/** team = تیمی | personal = فقط نویسنده */
|
||||||
visibility: NoteVisibility;
|
visibility: NoteVisibility;
|
||||||
pinned: boolean;
|
pinned: boolean;
|
||||||
color: string | null;
|
color: string | null;
|
||||||
@@ -1029,7 +1029,7 @@ export interface NoteDto {
|
|||||||
activity: { id: string; title: string } | null;
|
activity: { id: string; title: string } | null;
|
||||||
author: UserSummaryDto | null;
|
author: UserSummaryDto | null;
|
||||||
attachments: NoteAttachmentDto[];
|
attachments: NoteAttachmentDto[];
|
||||||
/** êùïçï ÃÂóîÃÂâÂÂÃÂçàÃÂèÃÂà(èñçàÃÂÃÂ
çÃÂô ïéÃÂ
àêçñÃÂîÃÂÃÂ) */
|
/** تعداد نسخههای قبلی (برای نمایش دکمه تاریخچه) */
|
||||||
revisionCount?: number;
|
revisionCount?: number;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
@@ -1040,8 +1040,8 @@ export type NoteVisibility = "team" | "personal";
|
|||||||
export const NOTE_VISIBILITIES: NoteVisibility[] = ["team", "personal"];
|
export const NOTE_VISIBILITIES: NoteVisibility[] = ["team", "personal"];
|
||||||
|
|
||||||
export const NOTE_VISIBILITY_LABELS: Record<NoteVisibility, string> = {
|
export const NOTE_VISIBILITY_LABELS: Record<NoteVisibility, string> = {
|
||||||
team: "êÃÂÃÂ
ÃÂ",
|
team: "تیمی",
|
||||||
personal: "ôîõà(ÃÂÃÂ÷ ÃÂ
ÃÂ)",
|
personal: "شخصی (فقط من)",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface NoteRevisionDto {
|
export interface NoteRevisionDto {
|
||||||
@@ -1915,7 +1915,7 @@ export interface CreateSalesGoalRequest {
|
|||||||
probability?: number | null;
|
probability?: number | null;
|
||||||
currency?: string;
|
currency?: string;
|
||||||
notes?: string;
|
notes?: string;
|
||||||
/** ÃÂÃÂ÷ ÃÂ
çÃÂé/ÃÂ
ïÃÂñàïñ úÃÂñ çÃÂàõÃÂñê ÃÂïàèñçàîÃÂï éçñèñ */
|
/** فقط مالک/مدیر؛ در غیر این صورت هدف برای خود کاربر */
|
||||||
userId?: string | null;
|
userId?: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1946,13 +1946,13 @@ export interface SalesForecastDto {
|
|||||||
periodStart: string;
|
periodStart: string;
|
||||||
periodEnd: string;
|
periodEnd: string;
|
||||||
currency: string;
|
currency: string;
|
||||||
/** ÃÂ
ìÃÂ
ÃÂù çÃÂïçàÃÂÃÂ
âÂÂþÃÂôçàèç èçòà*/
|
/** مجموع اهداف همپوشان با بازه */
|
||||||
targetAmount: number;
|
targetAmount: number;
|
||||||
/** ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂâÂÂôïàïñ èçòà*/
|
/** معاملات برندهشده در بازه */
|
||||||
wonAmount: number;
|
wonAmount: number;
|
||||||
/** ÃÂ
ùçÃÂ
ÃÂçê èçò ÃÂùÃÂà*/
|
/** معاملات باز فعلی */
|
||||||
openPipelineAmount: number;
|
openPipelineAmount: number;
|
||||||
/** þÃÂôâÂÂèÃÂÃÂÃÂ: êÃÂÃÂà+ éçñÃÂò èçò àÃÂ
ÃÂçÃÂïÃÂàçÃÂêÃÂ
çà*/
|
/** پیشبینی: تحقق + کاریز باز × میانگین احتمال */
|
||||||
forecastAmount: number;
|
forecastAmount: number;
|
||||||
progressPercent: number | null;
|
progressPercent: number | null;
|
||||||
openDealsCount: number;
|
openDealsCount: number;
|
||||||
@@ -1960,7 +1960,7 @@ export interface SalesForecastDto {
|
|||||||
goals: SalesGoalDto[];
|
goals: SalesGoalDto[];
|
||||||
kpis: SalesForecastKpiDto[];
|
kpis: SalesForecastKpiDto[];
|
||||||
newCustomersCount: number;
|
newCustomersCount: number;
|
||||||
/** ÃÂ
ùçÃÂ
ÃÂçê çÃÂìçïôïàïñ èçòà*/
|
/** معاملات ایجادشده در بازه */
|
||||||
newDealsCount: number;
|
newDealsCount: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2061,7 +2061,7 @@ export interface UpdateFaqArticleRequest {
|
|||||||
position?: number;
|
position?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** óçùçê ÃÂ
ÃÂÃÂê þçóî çÃÂàèñ çóçó çÃÂÃÂÃÂÃÂê */
|
/** ساعات مهلت پاسخ اول بر اساس اولویت */
|
||||||
export const TICKET_SLA_HOURS: Record<TicketPriority, number> = {
|
export const TICKET_SLA_HOURS: Record<TicketPriority, number> = {
|
||||||
urgent: 4,
|
urgent: 4,
|
||||||
high: 8,
|
high: 8,
|
||||||
@@ -2069,7 +2069,7 @@ export const TICKET_SLA_HOURS: Record<TicketPriority, number> = {
|
|||||||
low: 48,
|
low: 48,
|
||||||
};
|
};
|
||||||
|
|
||||||
/* âÂÂâÂÂâ þñêçàÃÂ
ôêñà(OTP) âÂÂâÂÂâ */
|
/* ——— پرتال مشتری (OTP) ——— */
|
||||||
|
|
||||||
export interface PortalOrgInfoDto {
|
export interface PortalOrgInfoDto {
|
||||||
name: string;
|
name: string;
|
||||||
@@ -2082,7 +2082,7 @@ export interface PortalRequestOtpRequest {
|
|||||||
|
|
||||||
export interface PortalRequestOtpResponse {
|
export interface PortalRequestOtpResponse {
|
||||||
ok: true;
|
ok: true;
|
||||||
/** ÃÂÃÂ÷ ïñ ÃÂçÃÂê êÃÂóùà/ ïÃÂ
àÃÂÃÂêàSMS ÃÂçÃÂùàÃÂõàÃÂÃÂóê */
|
/** فقط در حالت توسعه / دمو وقتی SMS واقعی وصل نیست */
|
||||||
devCode?: string;
|
devCode?: string;
|
||||||
expiresInSeconds: number;
|
expiresInSeconds: number;
|
||||||
}
|
}
|
||||||
@@ -2139,7 +2139,7 @@ export interface PortalTicketDto {
|
|||||||
updatedAt: string;
|
updatedAt: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ïòçñôçê àïçôèÃÂñï âÂÂâÂÂâ */
|
/* ——— گزارشات و داشبورد ——— */
|
||||||
|
|
||||||
export interface ReportsKpiDto {
|
export interface ReportsKpiDto {
|
||||||
key: string;
|
key: string;
|
||||||
@@ -2177,7 +2177,7 @@ export interface ReportsTeamRowDto {
|
|||||||
activitiesDone: number;
|
activitiesDone: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ïÃÂÃÂÃÂâÂÂÃÂçàdrill-down ïòçñô ùÃÂ
ÃÂà(ÃÂçò ñ BI) */
|
/** گونههای drill-down گزارش عمیق (فاز ۱ BI) */
|
||||||
export type ReportsDrillKind =
|
export type ReportsDrillKind =
|
||||||
| "stage_open"
|
| "stage_open"
|
||||||
| "team_won"
|
| "team_won"
|
||||||
@@ -2202,25 +2202,25 @@ export interface ReportsFunnelStageDto {
|
|||||||
pipelineName: string;
|
pipelineName: string;
|
||||||
count: number;
|
count: number;
|
||||||
amount: number;
|
amount: number;
|
||||||
/** ïñõï êèïÃÂàÃÂóèê èàÃÂ
ñÃÂÃÂàÃÂèàÃÂÃÂ
çàéçñÃÂòànull èñçàçÃÂÃÂÃÂàÃÂ
ñÃÂÃÂà*/
|
/** درصد تبدیل نسبت به مرحله قبل همان کاریز؛ null برای اولین مرحله */
|
||||||
conversionFromPrevPercent: number | null;
|
conversionFromPrevPercent: number | null;
|
||||||
/** óÃÂÃÂ
çò éàÃÂ
ùçÃÂ
ÃÂçê èçò ÃÂÃÂ
çàéçñÃÂò */
|
/** سهم از کل معاملات باز همان کاریز */
|
||||||
shareOfPipelinePercent: number;
|
shareOfPipelinePercent: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂé ñïÃÂàÃÂñî êèïÃÂà(ÃÂñÃÂïàâ ÃÂ
ÃÂÃÂÃÂ) ÃÂ
ëàïÃÂïçñ */
|
/** یک ردیف نرخ تبدیل (ورودی → موفق) مثل دیدار */
|
||||||
export interface ReportsConversionRateRowDto {
|
export interface ReportsConversionRateRowDto {
|
||||||
key: string;
|
key: string;
|
||||||
label: string;
|
label: string;
|
||||||
incomingCount: number;
|
incomingCount: number;
|
||||||
wonCount: number;
|
wonCount: number;
|
||||||
/** ïñõïàçïñ ÃÂñÃÂïàõÃÂñ èçôï ð */
|
/** درصد؛ اگر ورودی صفر باشد ۰ */
|
||||||
conversionPercent: number;
|
conversionPercent: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ÃÂñî êèïÃÂàèàóèé ïÃÂïçñ:
|
* نرخ تبدیل به سبک دیدار:
|
||||||
* çò ÃÂ
ùçÃÂ
ÃÂçê êçòÃÂâÂÂóçîêÃÂâÂÂôïàïñ èçòÃÂàÃÂÃÂï ïñõï çÃÂçàèñÃÂïàôïÃÂâÂÂçÃÂï.
|
* از معاملات تازهساختهشده در بازه، چند درصد الان برنده شدهاند.
|
||||||
*/
|
*/
|
||||||
export interface ReportsConversionRateDto {
|
export interface ReportsConversionRateDto {
|
||||||
incomingCount: number;
|
incomingCount: number;
|
||||||
@@ -2242,7 +2242,7 @@ export interface ReportsPeriodCompareRowDto {
|
|||||||
current: number;
|
current: number;
|
||||||
previous: number;
|
previous: number;
|
||||||
changePercent: number | null;
|
changePercent: number | null;
|
||||||
/** çïñ ÃÂçèàéÃÂÃÂé èñçàÃÂÃÂóê þñÃÂÃÂïàèçôï */
|
/** اگر قابل کلیک برای لیست پرونده باشد */
|
||||||
drillKind?: ReportsDrillKind;
|
drillKind?: ReportsDrillKind;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2299,9 +2299,9 @@ export interface ReportsDashboardDto {
|
|||||||
winRate: number;
|
winRate: number;
|
||||||
};
|
};
|
||||||
funnel: ReportsFunnelStageDto[];
|
funnel: ReportsFunnelStageDto[];
|
||||||
/** ÃÂñî êèïÃÂàÃÂñÃÂïÃÂâÂÂÃÂ
ÃÂÃÂà(óèé ïÃÂïçñ) */
|
/** نرخ تبدیل ورودی→موفق (سبک دیدار) */
|
||||||
conversionRate: ReportsConversionRateDto;
|
conversionRate: ReportsConversionRateDto;
|
||||||
/** ÃÂ
ÃÂçÃÂóàõñÃÂàèçòàÃÂùÃÂàèç ïÃÂñàÃÂèàÃÂÃÂ
âÂÂ÷ÃÂà*/
|
/** مقایسه صریح بازه فعلی با دوره قبل همطول */
|
||||||
periodCompare: ReportsPeriodCompareRowDto[];
|
periodCompare: ReportsPeriodCompareRowDto[];
|
||||||
tickets: {
|
tickets: {
|
||||||
open: number;
|
open: number;
|
||||||
@@ -2359,7 +2359,7 @@ export interface HomeDashboardDto {
|
|||||||
topCustomers: HomeDashboardTopCustomerDto[];
|
topCustomers: HomeDashboardTopCustomerDto[];
|
||||||
}
|
}
|
||||||
|
|
||||||
/** èñï þñÃÂÃÂà/ éçñÃÂò éçñê */
|
/** برد پروژه / کاریز کارت */
|
||||||
export interface ProjectBoardStageDto {
|
export interface ProjectBoardStageDto {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -2423,7 +2423,7 @@ export interface MoveProjectCardRequest {
|
|||||||
position?: number;
|
position?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** èçôïçàÃÂ
ôêñÃÂçà*/
|
/** باشگاه مشتریان */
|
||||||
export interface LoyaltyTierDto {
|
export interface LoyaltyTierDto {
|
||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
@@ -2526,7 +2526,7 @@ export interface RedeemLoyaltyRewardRequest {
|
|||||||
personId: string;
|
personId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** çêÃÂÃÂ
çóÃÂÃÂàçïñ/âÃÂïçà*/
|
/** اتوماسیون اگر/آنگاه */
|
||||||
export type AutomationTrigger =
|
export type AutomationTrigger =
|
||||||
| "person_created"
|
| "person_created"
|
||||||
| "lead_submitted"
|
| "lead_submitted"
|
||||||
@@ -2545,23 +2545,23 @@ export type AutomationAction =
|
|||||||
| "add_loyalty_points";
|
| "add_loyalty_points";
|
||||||
|
|
||||||
export const AUTOMATION_TRIGGER_LABELS: Record<AutomationTrigger, string> = {
|
export const AUTOMATION_TRIGGER_LABELS: Record<AutomationTrigger, string> = {
|
||||||
person_created: "ÃÂ
îç÷è ìïÃÂï óçîêàôï",
|
person_created: "مخاطب جدید ساخته شد",
|
||||||
lead_submitted: "ÃÂñÃÂ
óñÃÂî çñóçàôï",
|
lead_submitted: "فرم سرنخ ارسال شد",
|
||||||
deal_created: "ÃÂ
ùçÃÂ
ÃÂàìïÃÂï óçîêàôï",
|
deal_created: "معامله جدید ساخته شد",
|
||||||
deal_stage_changed: "ÃÂ
ñÃÂÃÂàÃÂ
ùçÃÂ
ÃÂàùÃÂö ôï",
|
deal_stage_changed: "مرحله معامله عوض شد",
|
||||||
deal_won: "ÃÂ
ùçÃÂ
ÃÂàèñÃÂïàôï",
|
deal_won: "معامله برنده شد",
|
||||||
deal_lost: "ÃÂ
ùçÃÂ
ÃÂàèçîê",
|
deal_lost: "معامله باخت",
|
||||||
ticket_created: "êÃÂéê ìïÃÂï óçîêàôï",
|
ticket_created: "تیکت جدید ساخته شد",
|
||||||
ticket_resolved: "êÃÂéê ÃÂàôï",
|
ticket_resolved: "تیکت حل شد",
|
||||||
invoice_issued: "ÃÂçéêÃÂñ õçïñ ôï",
|
invoice_issued: "فاکتور صادر شد",
|
||||||
invoice_paid: "þñïçîê ñÃÂàÃÂçéêÃÂñ ëèê ôï",
|
invoice_paid: "پرداخت روی فاکتور ثبت شد",
|
||||||
activity_done: "ÃÂùçÃÂÃÂê êÃÂ
çÃÂ
ôï",
|
activity_done: "فعالیت تمام شد",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AUTOMATION_ACTION_LABELS: Record<AutomationAction, string> = {
|
export const AUTOMATION_ACTION_LABELS: Record<AutomationAction, string> = {
|
||||||
create_activity: "óçîê ÃÂùçÃÂÃÂê",
|
create_activity: "ساخت فعالیت",
|
||||||
create_notification: "çñóçàçùÃÂçÃÂ",
|
create_notification: "ارسال اعلان",
|
||||||
add_loyalty_points: "çÃÂòÃÂïàçÃÂ
êÃÂçò èçôïçÃÂ",
|
add_loyalty_points: "افزودن امتیاز باشگاه",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MAX_AUTOMATION_STEPS = 8;
|
export const MAX_AUTOMATION_STEPS = 8;
|
||||||
@@ -2590,14 +2590,14 @@ export const AUTOMATION_TRIGGER_GROUPS: {
|
|||||||
label: string;
|
label: string;
|
||||||
items: AutomationTrigger[];
|
items: AutomationTrigger[];
|
||||||
}[] = [
|
}[] = [
|
||||||
{ label: "ÃÂ
îç÷è", items: ["person_created", "lead_submitted"] },
|
{ label: "مخاطب", items: ["person_created", "lead_submitted"] },
|
||||||
{
|
{
|
||||||
label: "ÃÂ
ùçÃÂ
ÃÂÃÂ",
|
label: "معامله",
|
||||||
items: ["deal_created", "deal_stage_changed", "deal_won", "deal_lost"],
|
items: ["deal_created", "deal_stage_changed", "deal_won", "deal_lost"],
|
||||||
},
|
},
|
||||||
{ label: "êÃÂéê", items: ["ticket_created", "ticket_resolved"] },
|
{ label: "تیکت", items: ["ticket_created", "ticket_resolved"] },
|
||||||
{ label: "ÃÂùçÃÂÃÂê", items: ["activity_done"] },
|
{ label: "فعالیت", items: ["activity_done"] },
|
||||||
{ label: "ÃÂ
çÃÂÃÂ", items: ["invoice_issued", "invoice_paid"] },
|
{ label: "مالی", items: ["invoice_issued", "invoice_paid"] },
|
||||||
];
|
];
|
||||||
|
|
||||||
export type AutomationStepKind = "action" | "condition";
|
export type AutomationStepKind = "action" | "condition";
|
||||||
@@ -2623,31 +2623,31 @@ export const AUTOMATION_CONDITION_FIELD_LABELS: Record<
|
|||||||
AutomationConditionField,
|
AutomationConditionField,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
deal_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂÃÂ",
|
deal_amount: "مبلغ معامله",
|
||||||
has_person: "ÃÂ
îç÷è ïçñï",
|
has_person: "مخاطب دارد",
|
||||||
has_company: "ôñéê ïçñï",
|
has_company: "شرکت دارد",
|
||||||
ticket_priority: "çÃÂÃÂÃÂÃÂê êÃÂéê",
|
ticket_priority: "اولویت تیکت",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AUTOMATION_CONDITION_OP_LABELS: Record<
|
export const AUTOMATION_CONDITION_OP_LABELS: Record<
|
||||||
AutomationConditionOp,
|
AutomationConditionOp,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
gte: "èòñïâÂÂêñ ÃÂç ÃÂ
óçÃÂÃÂ",
|
gte: "بزرگتر یا مساوی",
|
||||||
lte: "éÃÂÃÂéâÂÂêñ ÃÂç ÃÂ
óçÃÂÃÂ",
|
lte: "کوچکتر یا مساوی",
|
||||||
eq: "ÃÂ
óçÃÂÃÂ",
|
eq: "مساوی",
|
||||||
neq: "ÃÂçÃÂ
óçÃÂÃÂ",
|
neq: "نامساوی",
|
||||||
is_set: "ïçñï",
|
is_set: "دارد",
|
||||||
is_empty: "ÃÂïçñï",
|
is_empty: "ندارد",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AUTOMATION_NOTIFY_CHANNEL_LABELS: Record<
|
export const AUTOMATION_NOTIFY_CHANNEL_LABELS: Record<
|
||||||
AutomationNotifyChannel,
|
AutomationNotifyChannel,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
app: "ÃÂçêÃÂÃÂÃÂéÃÂôàïçîÃÂÃÂ",
|
app: "ناتیفیکیشن داخلی",
|
||||||
sms: "þÃÂçÃÂ
é",
|
sms: "پیامک",
|
||||||
both: "ÃÂñ ïÃÂ",
|
both: "هر دو",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const AUTOMATION_NOTIFY_CHANNELS = [
|
export const AUTOMATION_NOTIFY_CHANNELS = [
|
||||||
@@ -2710,7 +2710,7 @@ export interface AutomationRuleConfig {
|
|||||||
notifyTarget?: AutomationNotifyTarget;
|
notifyTarget?: AutomationNotifyTarget;
|
||||||
activityType?: "call" | "meeting" | "task" | "note";
|
activityType?: "call" | "meeting" | "task" | "note";
|
||||||
points?: number;
|
points?: number;
|
||||||
/** òÃÂìÃÂñÃÂàçùÃÂ
çÃÂàçïñ îçÃÂàèçôï ÃÂÃÂ
çàaction êéàçóêÃÂçïàÃÂ
ÃÂâÂÂôÃÂï */
|
/** زنجیرهٔ اعمال؛ اگر خالی باشد همان action تکی استفاده میشود */
|
||||||
steps?: AutomationStep[];
|
steps?: AutomationStep[];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2806,7 +2806,7 @@ export function automationStepToConfig(step: AutomationStep): AutomationRuleConf
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
// âÂÂâ êÃÂâÂÂÃÂóçè / ÃÂóçèïçñàâÂÂâÂÂ
|
// —— تهحساب / حسابداری ——
|
||||||
|
|
||||||
export const TAHSAB_SANAD_TYPES = [
|
export const TAHSAB_SANAD_TYPES = [
|
||||||
"buy_sale_gold",
|
"buy_sale_gold",
|
||||||
@@ -2819,11 +2819,11 @@ export const TAHSAB_SANAD_TYPES = [
|
|||||||
export type TahesabSanadType = (typeof TAHSAB_SANAD_TYPES)[number];
|
export type TahesabSanadType = (typeof TAHSAB_SANAD_TYPES)[number];
|
||||||
|
|
||||||
export const TAHSAB_SANAD_LABELS: Record<TahesabSanadType, string> = {
|
export const TAHSAB_SANAD_LABELS: Record<TahesabSanadType, string> = {
|
||||||
buy_sale_gold: "îñÃÂï/ÃÂñÃÂô âèôïÃÂ",
|
buy_sale_gold: "خرید/فروش آبشده",
|
||||||
buy_sale_sekeh: "îñÃÂï/ÃÂñÃÂô óéÃÂ",
|
buy_sale_sekeh: "خرید/فروش سکه",
|
||||||
talab_bedehi: "÷ÃÂè/èïÃÂÃÂ",
|
talab_bedehi: "طلب/بدهی",
|
||||||
vkh_gold: "ÃÂçñÃÂò/îñÃÂì ÷ÃÂç",
|
vkh_gold: "واریز/خروج طلا",
|
||||||
vkh_bank: "ÃÂçñÃÂò/îñÃÂì èçÃÂéÃÂ",
|
vkh_bank: "واریز/خروج بانکی",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface TahesabConnectionDto {
|
export interface TahesabConnectionDto {
|
||||||
@@ -2894,7 +2894,7 @@ export interface PersonAssetsDto {
|
|||||||
fetchedAt: string;
|
fetchedAt: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
// âÂÂâ þÃÂçÃÂ
îÃÂïéçñ (ìïç çò çêÃÂÃÂ
çóÃÂÃÂàïñïô éçñ) âÂÂâÂÂ
|
// —— پیام خودکار (جدا از اتوماسیون گردش کار) ——
|
||||||
|
|
||||||
export type MessageAutomationTrigger =
|
export type MessageAutomationTrigger =
|
||||||
| "person_created"
|
| "person_created"
|
||||||
@@ -2938,37 +2938,37 @@ export const MESSAGE_AUTOMATION_TRIGGER_LABELS: Record<
|
|||||||
MessageAutomationTrigger,
|
MessageAutomationTrigger,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
person_created: "ÃÂ
îç÷è ìïÃÂï óçîêàôï",
|
person_created: "مخاطب جدید ساخته شد",
|
||||||
lead_submitted: "ÃÂñÃÂ
óñÃÂî çñóçàôï",
|
lead_submitted: "فرم سرنخ ارسال شد",
|
||||||
deal_created: "ÃÂ
ùçÃÂ
ÃÂàìïÃÂï óçîêàôï",
|
deal_created: "معامله جدید ساخته شد",
|
||||||
deal_stage_changed: "ÃÂ
ñÃÂÃÂàÃÂ
ùçÃÂ
ÃÂàùÃÂö ôï",
|
deal_stage_changed: "مرحله معامله عوض شد",
|
||||||
deal_won: "ÃÂ
ùçÃÂ
ÃÂàèñÃÂïàôï",
|
deal_won: "معامله برنده شد",
|
||||||
deal_lost: "ÃÂ
ùçÃÂ
ÃÂàèçîê",
|
deal_lost: "معامله باخت",
|
||||||
ticket_created: "êÃÂéê ìïÃÂï óçîêàôï",
|
ticket_created: "تیکت جدید ساخته شد",
|
||||||
ticket_resolved: "êÃÂéê ÃÂàôï",
|
ticket_resolved: "تیکت حل شد",
|
||||||
invoice_issued: "ÃÂçéêÃÂñ õçïñ ôï",
|
invoice_issued: "فاکتور صادر شد",
|
||||||
invoice_paid: "þñïçîê ñÃÂàÃÂçéêÃÂñ ëèê ôï",
|
invoice_paid: "پرداخت روی فاکتور ثبت شد",
|
||||||
activity_created: "ÃÂùçÃÂÃÂê ëèê ôï",
|
activity_created: "فعالیت ثبت شد",
|
||||||
activity_done: "ÃÂùçÃÂÃÂê êÃÂ
çÃÂ
ôï",
|
activity_done: "فعالیت تمام شد",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_AUTOMATION_UNIT_LABELS: Record<
|
export const MESSAGE_AUTOMATION_UNIT_LABELS: Record<
|
||||||
MessageAutomationDelayUnit,
|
MessageAutomationDelayUnit,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
minutes: "ïÃÂÃÂÃÂÃÂ",
|
minutes: "دقیقه",
|
||||||
hours: "óçùê",
|
hours: "ساعت",
|
||||||
days: "ñÃÂò",
|
days: "روز",
|
||||||
weeks: "ÃÂÃÂêÃÂ",
|
weeks: "هفته",
|
||||||
months: "ÃÂ
çÃÂ",
|
months: "ماه",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_AUTOMATION_FIELDS = [
|
export const MESSAGE_AUTOMATION_FIELDS = [
|
||||||
{ token: "{ÃÂçÃÂ
}", label: "ÃÂçÃÂ
ÃÂ
ôêñÃÂ" },
|
{ token: "{نام}", label: "نام مشتری" },
|
||||||
{ token: "{ôÃÂ
çñÃÂ}", label: "ôÃÂ
çñàÃÂ
ÃÂèçÃÂÃÂ" },
|
{ token: "{شماره}", label: "شماره موبایل" },
|
||||||
{ token: "{êçñÃÂî}", label: "êçñÃÂî çñóçÃÂ" },
|
{ token: "{تاریخ}", label: "تاریخ ارسال" },
|
||||||
{ token: "{ùÃÂÃÂçÃÂ}", label: "ùÃÂÃÂçàñéÃÂñï" },
|
{ token: "{عنوان}", label: "عنوان رکورد" },
|
||||||
{ token: "{ôñéê}", label: "ÃÂçÃÂ
ôñéê" },
|
{ token: "{شرکت}", label: "نام شرکت" },
|
||||||
] as const;
|
] as const;
|
||||||
|
|
||||||
export const MESSAGE_AUTOMATION_SMS_SEGMENT = 70;
|
export const MESSAGE_AUTOMATION_SMS_SEGMENT = 70;
|
||||||
@@ -2977,18 +2977,18 @@ export const MESSAGE_AUTOMATION_CHANNEL_LABELS: Record<
|
|||||||
MessageAutomationChannel,
|
MessageAutomationChannel,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
app: "ÃÂçêÃÂàïçîàèñÃÂçÃÂ
ÃÂ",
|
app: "ناتیف داخل برنامه",
|
||||||
sms: "þÃÂçÃÂ
é",
|
sms: "پیامک",
|
||||||
both: "þÃÂçÃÂ
é àÃÂçêÃÂÃÂ",
|
both: "پیامک و ناتیف",
|
||||||
};
|
};
|
||||||
|
|
||||||
export const MESSAGE_AUTOMATION_TARGET_LABELS: Record<
|
export const MESSAGE_AUTOMATION_TARGET_LABELS: Record<
|
||||||
MessageAutomationTarget,
|
MessageAutomationTarget,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
staff: "ÃÂ
óæÃÂàþñÃÂÃÂïÃÂ",
|
staff: "مسئول پرونده",
|
||||||
person: "ÃÂ
ôêñÃÂ",
|
person: "مشتری",
|
||||||
both: "ÃÂ
ôêñààÃÂ
óæÃÂÃÂ",
|
both: "مشتری و مسئول",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface MessageAutomationRuleDto {
|
export interface MessageAutomationRuleDto {
|
||||||
@@ -3115,7 +3115,7 @@ export interface PlatformUserDto {
|
|||||||
lastLoginAt?: string | null;
|
lastLoginAt?: string | null;
|
||||||
createdAt: string;
|
createdAt: string;
|
||||||
memberships: PlatformUserMembershipDto[];
|
memberships: PlatformUserMembershipDto[];
|
||||||
/** ÃÂÃÂ÷ çïñ ÃÂïçÃÂàÃÂé ùöÃÂÃÂê ÃÂ
çÃÂé ÃÂùçàïçñï */
|
/** فقط اگر حداقل یک عضویت مالک فعال دارد */
|
||||||
isBillingOwner?: boolean;
|
isBillingOwner?: boolean;
|
||||||
billing?: BillingAccountDto | null;
|
billing?: BillingAccountDto | null;
|
||||||
}
|
}
|
||||||
@@ -3152,7 +3152,7 @@ export { brand, APP_NAME, APP_NAME_FA, brandSuggestionFa } from "./brand";
|
|||||||
export type { Brand } from "./brand";
|
export type { Brand } from "./brand";
|
||||||
export const API_PREFIX = "api";
|
export const API_PREFIX = "api";
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ÃÂçï ÃÂùçÃÂÃÂê éçñèñçàâÂÂâÂÂâ */
|
/* ——— لاگ فعالیت کاربران ——— */
|
||||||
|
|
||||||
export interface AuditLogDto {
|
export interface AuditLogDto {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -3174,7 +3174,7 @@ export interface AuditLogListResponse {
|
|||||||
limit: number;
|
limit: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïàâÂÂâÂÂâ */
|
/* ——— فیلترهای ذخیرهشده ——— */
|
||||||
|
|
||||||
export type SavedViewScope =
|
export type SavedViewScope =
|
||||||
| "deals"
|
| "deals"
|
||||||
@@ -3193,7 +3193,7 @@ export const SAVED_VIEW_SCOPES: SavedViewScope[] = [
|
|||||||
"reports",
|
"reports",
|
||||||
];
|
];
|
||||||
|
|
||||||
/** ÃÂÃÂÃÂêñÃÂçàðîÃÂñÃÂâÂÂôïÃÂàõÃÂÃÂàïòçñôçê */
|
/** فیلترهای ذخیرهشدهٔ صفحه گزارشات */
|
||||||
export interface ReportsViewFilters {
|
export interface ReportsViewFilters {
|
||||||
/** today | week | month | quarter | year | custom */
|
/** today | week | month | quarter | year | custom */
|
||||||
period: string;
|
period: string;
|
||||||
@@ -3209,7 +3209,7 @@ export interface ReportsViewFilters {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂ
êñÃÂéâÂÂÃÂçàïòçñôâÂÂóçò óçïà*/
|
/** متریکهای گزارشساز ساده */
|
||||||
export type ReportsBuilderMetric =
|
export type ReportsBuilderMetric =
|
||||||
| "won_amount"
|
| "won_amount"
|
||||||
| "won_count"
|
| "won_count"
|
||||||
@@ -3237,18 +3237,18 @@ export const REPORTS_BUILDER_METRIC_LABELS: Record<
|
|||||||
ReportsBuilderMetric,
|
ReportsBuilderMetric,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
won_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂ",
|
won_amount: "مبلغ معاملات برنده",
|
||||||
won_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èñÃÂïÃÂ",
|
won_count: "تعداد معاملات برنده",
|
||||||
lost_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èçîêÃÂ",
|
lost_count: "تعداد معاملات باخته",
|
||||||
open_count: "êùïçï ÃÂ
ùçÃÂ
ÃÂçê èçò",
|
open_count: "تعداد معاملات باز",
|
||||||
open_amount: "ÃÂ
èÃÂú ÃÂ
ùçÃÂ
ÃÂçê èçò",
|
open_amount: "مبلغ معاملات باز",
|
||||||
activities_done: "ÃÂùçÃÂÃÂê çÃÂìçÃÂ
âÂÂôïÃÂ",
|
activities_done: "فعالیت انجامشده",
|
||||||
people_created: "ÃÂ
ôêñÃÂçàìïÃÂï",
|
people_created: "مشتریان جدید",
|
||||||
invoice_amount: "ÃÂ
èÃÂú ÃÂçéêÃÂñ",
|
invoice_amount: "مبلغ فاکتور",
|
||||||
invoice_count: "êùïçï ÃÂçéêÃÂñ",
|
invoice_count: "تعداد فاکتور",
|
||||||
};
|
};
|
||||||
|
|
||||||
/** çèùçï ïñÃÂÃÂâÂÂèÃÂïàïòçñôâÂÂóçò */
|
/** ابعاد گروهبندی گزارشساز */
|
||||||
export type ReportsBuilderDimension =
|
export type ReportsBuilderDimension =
|
||||||
| "none"
|
| "none"
|
||||||
| "owner"
|
| "owner"
|
||||||
@@ -3272,13 +3272,13 @@ export const REPORTS_BUILDER_DIMENSION_LABELS: Record<
|
|||||||
ReportsBuilderDimension,
|
ReportsBuilderDimension,
|
||||||
string
|
string
|
||||||
> = {
|
> = {
|
||||||
none: "èïÃÂàïñÃÂÃÂâÂÂèÃÂïà(ìÃÂ
ù éÃÂ)",
|
none: "بدون گروهبندی (جمع کل)",
|
||||||
owner: "éçñèñ / ÃÂ
óæÃÂÃÂ",
|
owner: "کاربر / مسئول",
|
||||||
team: "êÃÂÃÂ
",
|
team: "تیم",
|
||||||
source: "ÃÂ
ÃÂèù",
|
source: "منبع",
|
||||||
stage: "ÃÂ
ñÃÂÃÂàéçñÃÂò",
|
stage: "مرحله کاریز",
|
||||||
month: "ÃÂ
çÃÂ",
|
month: "ماه",
|
||||||
status: "ÃÂöùÃÂê ÃÂ
ùçÃÂ
ÃÂÃÂ",
|
status: "وضعیت معامله",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface ReportsBuilderQuery {
|
export interface ReportsBuilderQuery {
|
||||||
@@ -3329,7 +3329,7 @@ export interface CreateSavedViewRequest {
|
|||||||
|
|
||||||
export type UpdateSavedViewRequest = Partial<CreateSavedViewRequest>;
|
export type UpdateSavedViewRequest = Partial<CreateSavedViewRequest>;
|
||||||
|
|
||||||
/* âÂÂâÂÂâ API ùÃÂ
ÃÂÃÂ
ààÃÂèâÂÂÃÂÃÂé âÂÂâÂÂâ */
|
/* ——— API عمومی و وبهوک ——— */
|
||||||
|
|
||||||
export const WEBHOOK_EVENTS = [
|
export const WEBHOOK_EVENTS = [
|
||||||
"person.created",
|
"person.created",
|
||||||
@@ -3358,7 +3358,7 @@ export interface CreateOrganizationApiKeyRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface CreateOrganizationApiKeyResponse extends OrganizationApiKeyDto {
|
export interface CreateOrganizationApiKeyResponse extends OrganizationApiKeyDto {
|
||||||
/** ÃÂÃÂ÷ ÃÂéâÂÂèçñ ÃÂÃÂïçÃÂ
óçîê èñïñïçÃÂïàÃÂ
ÃÂâÂÂôÃÂï */
|
/** فقط یکبار هنگام ساخت برگردانده میشود */
|
||||||
rawKey: string;
|
rawKey: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3380,7 +3380,7 @@ export interface CreateWebhookEndpointRequest {
|
|||||||
isActive?: boolean;
|
isActive?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** ÃÂÃÂ÷ ÃÂÃÂïçÃÂ
óçîêàsecret ïÃÂèçñàèñÃÂÃÂ
ÃÂâÂÂïñïï */
|
/** فقط هنگام ساخت؛ secret دوباره برنمیگردد */
|
||||||
export interface CreateWebhookEndpointResponse extends WebhookEndpointDto {
|
export interface CreateWebhookEndpointResponse extends WebhookEndpointDto {
|
||||||
secret: string;
|
secret: string;
|
||||||
}
|
}
|
||||||
@@ -3398,7 +3398,7 @@ export interface WebhookDeliveryDto {
|
|||||||
deliveredAt: string | null;
|
deliveredAt: string | null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ þÃÂçÃÂ
é ïñÃÂÃÂàâÂÂâÂÂâ */
|
/* ——— پیامک گروهی ——— */
|
||||||
|
|
||||||
export type SmsCampaignStatus =
|
export type SmsCampaignStatus =
|
||||||
| "draft"
|
| "draft"
|
||||||
@@ -3426,7 +3426,7 @@ export interface CreateSmsCampaignRequest {
|
|||||||
body: string;
|
body: string;
|
||||||
personIds: string[];
|
personIds: string[];
|
||||||
scheduledAt?: string | null;
|
scheduledAt?: string | null;
|
||||||
/** çïñ true èçôï èÃÂçÃÂçõÃÂàõàÃÂ
ÃÂâÂÂôÃÂï */
|
/** اگر true باشد بلافاصله صف میشود */
|
||||||
queueNow?: boolean;
|
queueNow?: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3435,7 +3435,7 @@ export interface SmsCampaignListResponse {
|
|||||||
total: number;
|
total: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ êÃÂÃÂ
âÂÂÃÂç àó÷àïóêñóàèàþñÃÂÃÂïÃÂâÂÂÃÂç âÂÂâÂÂâ */
|
/* ——— تیمها و سطح دسترسی به پروندهها ——— */
|
||||||
|
|
||||||
export type TeamMemberRole = "member" | "manager";
|
export type TeamMemberRole = "member" | "manager";
|
||||||
|
|
||||||
@@ -3472,7 +3472,7 @@ export interface SetTeamMembersRequest {
|
|||||||
members: Array<{ userId: string; role: TeamMemberRole }>;
|
members: Array<{ userId: string; role: TeamMemberRole }>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ÃÂÃÂéçÃÂ
ñó âÂÂâÂÂâ */
|
/* ——— ووکامرس ——— */
|
||||||
|
|
||||||
export interface WooCommerceConnectionDto {
|
export interface WooCommerceConnectionDto {
|
||||||
id: string;
|
id: string;
|
||||||
@@ -3528,7 +3528,7 @@ export interface WooCommerceOrderLinkDto {
|
|||||||
syncedAt: string;
|
syncedAt: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ êÃÂÃÂàóçòÃÂ
çÃÂà/ VoIP âÂÂâÂÂâ */
|
/* ——— تلفن سازمانی / VoIP ——— */
|
||||||
|
|
||||||
export type VoipCallDirection = "inbound" | "outbound";
|
export type VoipCallDirection = "inbound" | "outbound";
|
||||||
|
|
||||||
@@ -3544,7 +3544,7 @@ export interface VoipConnectionDto {
|
|||||||
label: string;
|
label: string;
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
webhookSecretSet: boolean;
|
webhookSecretSet: boolean;
|
||||||
/** ÃÂçÃÂè URL èñçàôñÃÂù êÃÂ
çóà{number} ìçÃÂïòÃÂàÃÂ
ÃÂâÂÂôÃÂï */
|
/** قالب URL برای شروع تماس؛ {number} جایگزین میشود */
|
||||||
clickToCallUrl: string | null;
|
clickToCallUrl: string | null;
|
||||||
lastEventAt: string | null;
|
lastEventAt: string | null;
|
||||||
lastError: string | null;
|
lastError: string | null;
|
||||||
@@ -3601,7 +3601,7 @@ export interface VoipClickToCallRequest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface VoipWebhookEvent {
|
export interface VoipWebhookEvent {
|
||||||
/** ôÃÂçóàÃÂéêçàêÃÂ
çó ïñ óçÃÂêñçà*/
|
/** شناسه یکتای تماس در سانترال */
|
||||||
callId: string;
|
callId: string;
|
||||||
direction: VoipCallDirection;
|
direction: VoipCallDirection;
|
||||||
status: VoipCallStatus | string;
|
status: VoipCallStatus | string;
|
||||||
@@ -3610,16 +3610,16 @@ export interface VoipWebhookEvent {
|
|||||||
startedAt?: string;
|
startedAt?: string;
|
||||||
endedAt?: string;
|
endedAt?: string;
|
||||||
durationSec?: number;
|
durationSec?: number;
|
||||||
/** ÃÂÃÂÃÂé ÃÂçÃÂàöè÷ (èñçàîÃÂçõàîÃÂïéçñ) */
|
/** لینک فایل ضبط (برای خلاصه خودکار) */
|
||||||
recordingUrl?: string;
|
recordingUrl?: string;
|
||||||
/** ÃÂ
êàâÃÂ
çïÃÂàêÃÂ
çóàçïñ èçôï STT ñï ÃÂ
ÃÂâÂÂôÃÂï */
|
/** متن آمادهٔ تماس؛ اگر باشد STT رد میشود */
|
||||||
transcript?: string;
|
transcript?: string;
|
||||||
/** èñçàóçòïçñàèç ÃÂÃÂÃÂïÃÂçàñçÃÂì ïÃÂïñ */
|
/** برای سازگاری با فیلدهای رایج دیگر */
|
||||||
caller?: string;
|
caller?: string;
|
||||||
callee?: string;
|
callee?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ñòñààÃÂÃÂèêâÂÂïÃÂàâÂÂâÂÂâ */
|
/* ——— رزرو و نوبتدهی ——— */
|
||||||
|
|
||||||
export type ReservationStatus =
|
export type ReservationStatus =
|
||||||
| "pending"
|
| "pending"
|
||||||
@@ -3635,10 +3635,10 @@ export const RESERVATION_STATUSES: ReservationStatus[] = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
export const RESERVATION_STATUS_LABELS: Record<ReservationStatus, string> = {
|
export const RESERVATION_STATUS_LABELS: Record<ReservationStatus, string> = {
|
||||||
pending: "ïñ çÃÂêøçñ",
|
pending: "در انتظار",
|
||||||
confirmed: "êãÃÂÃÂï ôïÃÂ",
|
confirmed: "تأیید شده",
|
||||||
canceled: "ÃÂúàôïÃÂ",
|
canceled: "لغو شده",
|
||||||
done: "çÃÂìçÃÂ
ôïÃÂ",
|
done: "انجام شده",
|
||||||
};
|
};
|
||||||
|
|
||||||
export interface ReservationServiceDto {
|
export interface ReservationServiceDto {
|
||||||
@@ -3646,7 +3646,7 @@ export interface ReservationServiceDto {
|
|||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
durationMinutes: number;
|
durationMinutes: number;
|
||||||
/** ñÃÂòÃÂçàÃÂÃÂêàð=ÃÂéôÃÂèà⦠ö=ôÃÂèà(JS getDay) */
|
/** روزهای هفته ۰=یکشنبه … ۶=شنبه (JS getDay) */
|
||||||
workDays: number[];
|
workDays: number[];
|
||||||
dayStartHour: number;
|
dayStartHour: number;
|
||||||
dayEndHour: number;
|
dayEndHour: number;
|
||||||
@@ -3714,7 +3714,7 @@ export interface ReservationListResponse {
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* âÂÂâÂÂâ ÃÂ
ïÃÂñÃÂê ÃÂÃÂïÃÂç âÂÂâÂÂâ */
|
/* ——— مدیریت لیدها ——— */
|
||||||
|
|
||||||
export type LeadAssignRule = "round_robin" | "equal_split";
|
export type LeadAssignRule = "round_robin" | "equal_split";
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user