gentiq 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{checkbox-DyzncQpE.js → checkbox-BuMyz6YI.js} +536 -535
- package/dist/gentiq-admin.es.js +2483 -1925
- package/dist/gentiq-index.es.js +4 -3
- package/dist/gentiq.css +1 -1
- package/dist/src/admin/lib/api.d.ts +87 -10
- package/dist/src/admin/pages/settings/JobsSection.d.ts +1 -0
- package/dist/src/hooks/useGentiqAdmin.d.ts +32 -5
- package/dist/src/locales/en.json.d.ts +67 -3
- package/dist/src/locales/fa.json.d.ts +67 -3
- package/package.json +1 -1
|
@@ -23,11 +23,14 @@ export interface RechargePolicy extends RechargePolicyInput {
|
|
|
23
23
|
next_recharge_at?: string | null;
|
|
24
24
|
last_recharged_at?: string | null;
|
|
25
25
|
}
|
|
26
|
+
/** Admin list/analytics traffic filter: real humans, external API service accounts, or both. */
|
|
27
|
+
export type AdminSourceFilter = 'human' | 'service' | 'all';
|
|
26
28
|
export interface User {
|
|
27
29
|
id: string;
|
|
28
|
-
phone
|
|
30
|
+
phone?: string | null;
|
|
29
31
|
name: string;
|
|
30
|
-
surname
|
|
32
|
+
/** Service (API) accounts have no surname; only a single service name in `name`. */
|
|
33
|
+
surname?: string | null;
|
|
31
34
|
token?: string;
|
|
32
35
|
metadata?: Record<string, any>;
|
|
33
36
|
balance?: {
|
|
@@ -37,6 +40,8 @@ export interface User {
|
|
|
37
40
|
request_limit: number;
|
|
38
41
|
};
|
|
39
42
|
recharge_policy?: RechargePolicy | null;
|
|
43
|
+
/** 'service' marks an external API consumer; defaults to 'human'. */
|
|
44
|
+
type?: 'human' | 'service';
|
|
40
45
|
}
|
|
41
46
|
export interface UserUsageSummary {
|
|
42
47
|
input_tokens: number;
|
|
@@ -80,14 +85,19 @@ export interface Thread {
|
|
|
80
85
|
title?: string;
|
|
81
86
|
created_at: string;
|
|
82
87
|
updated_at: string;
|
|
88
|
+
metadata?: {
|
|
89
|
+
/** Caller-supplied end-user reference for API traffic. */
|
|
90
|
+
external_user_id?: string;
|
|
91
|
+
[key: string]: any;
|
|
92
|
+
};
|
|
83
93
|
feedback_info?: {
|
|
84
94
|
like: number;
|
|
85
95
|
dislike: number;
|
|
86
96
|
};
|
|
87
97
|
user_info?: {
|
|
88
98
|
name?: string;
|
|
89
|
-
surname?: string;
|
|
90
|
-
phone?: string;
|
|
99
|
+
surname?: string | null;
|
|
100
|
+
phone?: string | null;
|
|
91
101
|
metadata?: Record<string, any>;
|
|
92
102
|
};
|
|
93
103
|
}
|
|
@@ -112,6 +122,50 @@ export interface Job {
|
|
|
112
122
|
result: unknown;
|
|
113
123
|
error: string | null;
|
|
114
124
|
}
|
|
125
|
+
/** Danger level a registered maintenance job declares. */
|
|
126
|
+
export type JobDanger = 'safe' | 'caution' | 'destructive';
|
|
127
|
+
/** One admin-supplied input declared by a registered job. */
|
|
128
|
+
export interface JobParamSpec {
|
|
129
|
+
name: string;
|
|
130
|
+
type: 'str' | 'int' | 'float' | 'bool' | 'text';
|
|
131
|
+
required: boolean;
|
|
132
|
+
default: unknown;
|
|
133
|
+
label?: string | null;
|
|
134
|
+
help?: string | null;
|
|
135
|
+
choices?: string[] | null;
|
|
136
|
+
}
|
|
137
|
+
/** A maintenance job the backend has registered as runnable from the admin panel. */
|
|
138
|
+
export interface JobDefinition {
|
|
139
|
+
id: string;
|
|
140
|
+
name: string;
|
|
141
|
+
description?: string | null;
|
|
142
|
+
danger: JobDanger;
|
|
143
|
+
params: JobParamSpec[];
|
|
144
|
+
supports_dry_run: boolean;
|
|
145
|
+
timeout_seconds?: number | null;
|
|
146
|
+
}
|
|
147
|
+
export type JobRunStatus = 'queued' | 'processing' | 'completed' | 'failed' | 'cancelled';
|
|
148
|
+
/** A single execution of a maintenance job (registered or raw Python). */
|
|
149
|
+
export interface JobRun {
|
|
150
|
+
id: string;
|
|
151
|
+
job_id: string | null;
|
|
152
|
+
name: string;
|
|
153
|
+
kind: 'registered' | 'raw';
|
|
154
|
+
danger: JobDanger;
|
|
155
|
+
status: JobRunStatus;
|
|
156
|
+
params: Record<string, unknown>;
|
|
157
|
+
dry_run: boolean;
|
|
158
|
+
code?: string | null;
|
|
159
|
+
output?: string;
|
|
160
|
+
output_truncated?: boolean;
|
|
161
|
+
result?: Record<string, unknown> | null;
|
|
162
|
+
error?: string | null;
|
|
163
|
+
triggered_by_id?: string | null;
|
|
164
|
+
triggered_by_username?: string | null;
|
|
165
|
+
created_at: string;
|
|
166
|
+
updated_at: string;
|
|
167
|
+
finished_at?: string | null;
|
|
168
|
+
}
|
|
115
169
|
/** Generic `{ status, message }` acknowledgement returned by mutating endpoints. */
|
|
116
170
|
export interface AdminStatusResponse {
|
|
117
171
|
status: string;
|
|
@@ -122,12 +176,13 @@ export interface UserCreateResponse {
|
|
|
122
176
|
status: string;
|
|
123
177
|
user: {
|
|
124
178
|
id: string;
|
|
125
|
-
phone
|
|
179
|
+
phone?: string | null;
|
|
126
180
|
name: string;
|
|
127
|
-
surname
|
|
181
|
+
surname?: string | null;
|
|
128
182
|
token: string;
|
|
129
183
|
created_at: string;
|
|
130
184
|
recharge_policy?: RechargePolicy | null;
|
|
185
|
+
type?: 'human' | 'service';
|
|
131
186
|
};
|
|
132
187
|
}
|
|
133
188
|
/** A user's balance as returned after a balance mutation. */
|
|
@@ -228,7 +283,7 @@ export declare class AdminAPI {
|
|
|
228
283
|
listPermissions(): Promise<{
|
|
229
284
|
permissions: string[];
|
|
230
285
|
}>;
|
|
231
|
-
listThreads(skip?: number, limit?: number, query?: string, feedback?: string): Promise<{
|
|
286
|
+
listThreads(skip?: number, limit?: number, query?: string, feedback?: string, source?: AdminSourceFilter): Promise<{
|
|
232
287
|
threads: Thread[];
|
|
233
288
|
count: number;
|
|
234
289
|
}>;
|
|
@@ -242,11 +297,11 @@ export declare class AdminAPI {
|
|
|
242
297
|
share_id: string;
|
|
243
298
|
url: string;
|
|
244
299
|
}>;
|
|
245
|
-
listUsers(skip?: number, limit?: number, query?: string, sortBy?: 'phone' | 'name' | 'surname', sortOrder?: 'asc' | 'desc'): Promise<{
|
|
300
|
+
listUsers(skip?: number, limit?: number, query?: string, sortBy?: 'phone' | 'name' | 'surname', sortOrder?: 'asc' | 'desc', source?: AdminSourceFilter): Promise<{
|
|
246
301
|
users: User[];
|
|
247
302
|
count: number;
|
|
248
303
|
}>;
|
|
249
|
-
createUser(phone: string, name: string, surname: string, tokens?: number, requests?: number, token_limit?: number, request_limit?: number, metadata?: Record<string, any>, recharge_policy?: RechargePolicyInput): Promise<UserCreateResponse>;
|
|
304
|
+
createUser(phone: string | null, name: string, surname: string | null, tokens?: number, requests?: number, token_limit?: number, request_limit?: number, metadata?: Record<string, any>, recharge_policy?: RechargePolicyInput, type?: 'human' | 'service'): Promise<UserCreateResponse>;
|
|
250
305
|
updateUser(userId: string, data: {
|
|
251
306
|
phone?: string;
|
|
252
307
|
name?: string;
|
|
@@ -271,12 +326,34 @@ export declare class AdminAPI {
|
|
|
271
326
|
}>;
|
|
272
327
|
refreshUserToken(userId: string): Promise<UserTokenRefreshResponse>;
|
|
273
328
|
getUserUsageSummary(userId: string): Promise<UserUsageSummary>;
|
|
274
|
-
getAnalytics(days?: number): Promise<AdminAnalytics>;
|
|
329
|
+
getAnalytics(days?: number, source?: AdminSourceFilter): Promise<AdminAnalytics>;
|
|
275
330
|
listJobs(limit?: number, type?: string): Promise<{
|
|
276
331
|
jobs: Job[];
|
|
277
332
|
count: number;
|
|
278
333
|
}>;
|
|
279
334
|
cancelJob(jobId: string): Promise<AdminStatusResponse>;
|
|
335
|
+
listRegisteredJobs(): Promise<{
|
|
336
|
+
jobs: JobDefinition[];
|
|
337
|
+
}>;
|
|
338
|
+
runRegisteredJob(jobId: string, body: {
|
|
339
|
+
params?: Record<string, unknown>;
|
|
340
|
+
dry_run?: boolean;
|
|
341
|
+
confirm?: string;
|
|
342
|
+
}): Promise<JobRun>;
|
|
343
|
+
runRawJob(body: {
|
|
344
|
+
code: string;
|
|
345
|
+
confirm_phrase: string;
|
|
346
|
+
}): Promise<JobRun>;
|
|
347
|
+
listJobRuns(params?: {
|
|
348
|
+
limit?: number;
|
|
349
|
+
kind?: string;
|
|
350
|
+
status?: string;
|
|
351
|
+
}): Promise<{
|
|
352
|
+
runs: JobRun[];
|
|
353
|
+
count: number;
|
|
354
|
+
}>;
|
|
355
|
+
getJobRun(runId: string): Promise<JobRun>;
|
|
356
|
+
cancelJobRun(runId: string): Promise<AdminStatusResponse>;
|
|
280
357
|
getSettings(): Promise<AppSettings>;
|
|
281
358
|
updateSettings(data: AppSettingsUpdateInput): Promise<AppSettings>;
|
|
282
359
|
resetSettings(): Promise<AdminStatusResponse>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function JobsSection(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -1,14 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
import { AdminSourceFilter } from '../admin/lib/api';
|
|
2
|
+
export declare function useAdminUsers(skip?: number, limit?: number, query?: string, sortBy?: 'phone' | 'name' | 'surname', sortOrder?: 'asc' | 'desc', source?: AdminSourceFilter): import('@tanstack/react-query').UseQueryResult<{
|
|
2
3
|
users: import('../admin/lib/api').User[];
|
|
3
4
|
count: number;
|
|
4
5
|
}, Error>;
|
|
5
6
|
export declare function useAdminUsersMutations(): {
|
|
6
7
|
createUser: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').UserCreateResponse, Error, {
|
|
7
|
-
phone: string;
|
|
8
|
+
phone: string | null;
|
|
8
9
|
name: string;
|
|
9
|
-
surname: string;
|
|
10
|
+
surname: string | null;
|
|
10
11
|
tokens?: number;
|
|
11
12
|
requests?: number;
|
|
13
|
+
type?: "human" | "service";
|
|
12
14
|
}, unknown>;
|
|
13
15
|
updateUser: import('@tanstack/react-query').UseMutationResult<{
|
|
14
16
|
status: string;
|
|
@@ -29,7 +31,7 @@ export declare function useAdminUsersMutations(): {
|
|
|
29
31
|
}, unknown>;
|
|
30
32
|
refreshToken: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').UserTokenRefreshResponse, Error, string, unknown>;
|
|
31
33
|
};
|
|
32
|
-
export declare function useAdminAnalytics(days?: number): import('@tanstack/react-query').UseQueryResult<import('../admin/lib/api').AdminAnalytics, Error>;
|
|
34
|
+
export declare function useAdminAnalytics(days?: number, source?: AdminSourceFilter): import('@tanstack/react-query').UseQueryResult<import('../admin/lib/api').AdminAnalytics, Error>;
|
|
33
35
|
export declare function useAdminAdmins(): import('@tanstack/react-query').UseQueryResult<{
|
|
34
36
|
admins: import('../admin/lib/api').Admin[];
|
|
35
37
|
}, Error>;
|
|
@@ -50,7 +52,7 @@ export declare function useAdminAdminsMutations(): {
|
|
|
50
52
|
}, unknown>;
|
|
51
53
|
deleteAdmin: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').AdminStatusResponse, Error, string, unknown>;
|
|
52
54
|
};
|
|
53
|
-
export declare function useAdminThreads(skip?: number, limit?: number, query?: string, feedback?: string): import('@tanstack/react-query').UseQueryResult<{
|
|
55
|
+
export declare function useAdminThreads(skip?: number, limit?: number, query?: string, feedback?: string, source?: AdminSourceFilter): import('@tanstack/react-query').UseQueryResult<{
|
|
54
56
|
threads: import('../admin/lib/api').Thread[];
|
|
55
57
|
count: number;
|
|
56
58
|
}, Error>;
|
|
@@ -66,6 +68,31 @@ export declare function useAdminJobs(limit?: number, type?: string): import('@ta
|
|
|
66
68
|
export declare function useAdminJobsMutations(): {
|
|
67
69
|
cancelJob: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').AdminStatusResponse, Error, string, unknown>;
|
|
68
70
|
};
|
|
71
|
+
export declare function useRegisteredJobs(enabled?: boolean): import('@tanstack/react-query').UseQueryResult<{
|
|
72
|
+
jobs: import('../admin/lib/api').JobDefinition[];
|
|
73
|
+
}, Error>;
|
|
74
|
+
export declare function useJobRuns(filters?: {
|
|
75
|
+
limit?: number;
|
|
76
|
+
kind?: string;
|
|
77
|
+
status?: string;
|
|
78
|
+
}, enabled?: boolean): import('@tanstack/react-query').UseQueryResult<{
|
|
79
|
+
runs: import('../admin/lib/api').JobRun[];
|
|
80
|
+
count: number;
|
|
81
|
+
}, Error>;
|
|
82
|
+
export declare function useJobRun(runId: string | null, poll?: boolean): import('@tanstack/react-query').UseQueryResult<import('../admin/lib/api').JobRun, Error>;
|
|
83
|
+
export declare function useJobMutations(): {
|
|
84
|
+
runRegisteredJob: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').JobRun, Error, {
|
|
85
|
+
jobId: string;
|
|
86
|
+
params?: Record<string, unknown>;
|
|
87
|
+
dry_run?: boolean;
|
|
88
|
+
confirm?: string;
|
|
89
|
+
}, unknown>;
|
|
90
|
+
runRawJob: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').JobRun, Error, {
|
|
91
|
+
code: string;
|
|
92
|
+
confirm_phrase: string;
|
|
93
|
+
}, unknown>;
|
|
94
|
+
cancelJobRun: import('@tanstack/react-query').UseMutationResult<import('../admin/lib/api').AdminStatusResponse, Error, string, unknown>;
|
|
95
|
+
};
|
|
69
96
|
export declare function useAdminAuth(): {
|
|
70
97
|
login: (username: string, password: string) => Promise<import('../admin/lib/api').AdminLoginResponse>;
|
|
71
98
|
logout: () => void;
|
|
@@ -111,6 +111,48 @@ declare const _default: {
|
|
|
111
111
|
"loading_more": "Loading more...",
|
|
112
112
|
"confirm_delete": "Are you sure you want to delete?",
|
|
113
113
|
"error_loading": "Error loading data",
|
|
114
|
+
"close": "Close",
|
|
115
|
+
"jobs": {
|
|
116
|
+
"section_title": "Maintenance Jobs",
|
|
117
|
+
"no_jobs": "No jobs are registered for this deployment.",
|
|
118
|
+
"run": "Run",
|
|
119
|
+
"run_dry": "Dry run",
|
|
120
|
+
"run_started": "Started \"{{name}}\"",
|
|
121
|
+
"run_failed": "Failed to start job",
|
|
122
|
+
"history": "Run history",
|
|
123
|
+
"history_help": "Recent runs. Click a row to see its inputs and output.",
|
|
124
|
+
"view_history": "View run history",
|
|
125
|
+
"inputs": "Inputs",
|
|
126
|
+
"no_runs": "No runs yet.",
|
|
127
|
+
"dry_run": "Dry run",
|
|
128
|
+
"dry_run_help": "Simulate the job without writing any changes.",
|
|
129
|
+
"confirm_destructive": "This is a destructive job. Type \"{{name}}\" to confirm.",
|
|
130
|
+
"output": "Output",
|
|
131
|
+
"no_output": "(no output)",
|
|
132
|
+
"output_truncated": "...[output truncated]",
|
|
133
|
+
"result": "Result",
|
|
134
|
+
"cancel_run": "Cancel run",
|
|
135
|
+
"triggered_by": "Triggered by {{user}}",
|
|
136
|
+
"triggered_by_api": "Triggered via API key",
|
|
137
|
+
"danger": {
|
|
138
|
+
"safe": "safe",
|
|
139
|
+
"caution": "caution",
|
|
140
|
+
"destructive": "destructive"
|
|
141
|
+
},
|
|
142
|
+
"status": {
|
|
143
|
+
"queued": "Queued",
|
|
144
|
+
"processing": "Running",
|
|
145
|
+
"completed": "Completed",
|
|
146
|
+
"failed": "Failed",
|
|
147
|
+
"cancelled": "Cancelled"
|
|
148
|
+
},
|
|
149
|
+
"raw": {
|
|
150
|
+
"title": "Run raw Python",
|
|
151
|
+
"warning": "This executes arbitrary Python on the server with full process privileges. There is no sandbox — only access control and an audit log. Use only when you know exactly what you are doing.",
|
|
152
|
+
"confirm_label": "Type \"{{phrase}}\" to enable running.",
|
|
153
|
+
"run": "Execute"
|
|
154
|
+
}
|
|
155
|
+
},
|
|
114
156
|
"dashboard": {
|
|
115
157
|
"title": "Admin Panel",
|
|
116
158
|
"logout": "Logout",
|
|
@@ -200,6 +242,8 @@ declare const _default: {
|
|
|
200
242
|
"analytics": {
|
|
201
243
|
"title": "Analytics & Statistics",
|
|
202
244
|
"days": "{{count}} Days",
|
|
245
|
+
"time_range_label": "Last",
|
|
246
|
+
"days_unit": "days",
|
|
203
247
|
"total_users": "Total Users",
|
|
204
248
|
"total_threads": "Total Threads",
|
|
205
249
|
"total_messages": "Total Messages",
|
|
@@ -220,7 +264,13 @@ declare const _default: {
|
|
|
220
264
|
"positive": "Positive",
|
|
221
265
|
"negative": "Negative",
|
|
222
266
|
"loading_analytics": "Loading analytics...",
|
|
223
|
-
"error_loading": "Error loading data"
|
|
267
|
+
"error_loading": "Error loading data",
|
|
268
|
+
"source_human": "Users",
|
|
269
|
+
"source_service": "Service",
|
|
270
|
+
"source_all": "All",
|
|
271
|
+
"source_caption_human": "Showing real users only",
|
|
272
|
+
"source_caption_service": "Showing service traffic only",
|
|
273
|
+
"source_caption_all": "Showing all traffic"
|
|
224
274
|
},
|
|
225
275
|
"chat_history": {
|
|
226
276
|
"title": "Chat History Management",
|
|
@@ -250,7 +300,11 @@ declare const _default: {
|
|
|
250
300
|
"output_available": "Output Available",
|
|
251
301
|
"running": "Running...",
|
|
252
302
|
"unnamed_file": "Unnamed File",
|
|
253
|
-
"download_file": "Download File"
|
|
303
|
+
"download_file": "Download File",
|
|
304
|
+
"source_human": "Users",
|
|
305
|
+
"source_service": "Service",
|
|
306
|
+
"source_all": "All sources",
|
|
307
|
+
"external_user_id": "Service ref"
|
|
254
308
|
},
|
|
255
309
|
"users": {
|
|
256
310
|
"title": "User Management",
|
|
@@ -337,7 +391,17 @@ declare const _default: {
|
|
|
337
391
|
"bulk_select_change": "Select at least one bulk change to apply.",
|
|
338
392
|
"bulk_renewal_policy": "Renewal Policy",
|
|
339
393
|
"bulk_renewal_policy_help": "Enable or disable automatic renewal for every matched user.",
|
|
340
|
-
"bulk_renewal_anchor": "First renewal time (optional)"
|
|
394
|
+
"bulk_renewal_anchor": "First renewal time (optional)",
|
|
395
|
+
"source_human": "Users",
|
|
396
|
+
"source_service": "Service",
|
|
397
|
+
"source_all": "All",
|
|
398
|
+
"account_type": "Account type",
|
|
399
|
+
"account_type_human": "Human user",
|
|
400
|
+
"account_type_service": "Service (external API)",
|
|
401
|
+
"account_type_service_help": "External API consumer. Phone is optional; share this account’s token with the integrating service.",
|
|
402
|
+
"service_name": "Service name",
|
|
403
|
+
"service_name_placeholder": "e.g. Acme CRM integration",
|
|
404
|
+
"optional": "optional"
|
|
341
405
|
},
|
|
342
406
|
"admins": {
|
|
343
407
|
"title": "Admin Management",
|
|
@@ -110,6 +110,48 @@ declare const _default: {
|
|
|
110
110
|
"loading_more": "در حال بارگذاری بیشتر...",
|
|
111
111
|
"confirm_delete": "آیا از حذف اطمینان دارید؟",
|
|
112
112
|
"error_loading": "خطا در بارگذاری دادهها",
|
|
113
|
+
"close": "بستن",
|
|
114
|
+
"jobs": {
|
|
115
|
+
"section_title": "کارهای سیستمی",
|
|
116
|
+
"no_jobs": "هیچ کاری برای این برنامه تعریف نشده است.",
|
|
117
|
+
"run": "اجرا",
|
|
118
|
+
"run_dry": "اجرای آزمایشی",
|
|
119
|
+
"run_started": "کار «{{name}}» اجرا شد",
|
|
120
|
+
"run_failed": "اجرای کار با خطا مواجه شد",
|
|
121
|
+
"history": "تاریخچهٔ اجراها",
|
|
122
|
+
"history_help": "اجراهای اخیر. برای دیدن ورودیها و خروجی هر اجرا روی آن کلیک کنید.",
|
|
123
|
+
"view_history": "مشاهدهٔ تاریخچهٔ اجراها",
|
|
124
|
+
"inputs": "ورودیها",
|
|
125
|
+
"no_runs": "هنوز هیچ کاری اجرا نشده است.",
|
|
126
|
+
"dry_run": "اجرای آزمایشی",
|
|
127
|
+
"dry_run_help": "کار را بدون اعمال هیچ تغییری شبیهسازی میکند.",
|
|
128
|
+
"confirm_destructive": "این یک کار مخرب است. برای تأیید، نام «{{name}}» را وارد کنید.",
|
|
129
|
+
"output": "خروجی",
|
|
130
|
+
"no_output": "(خروجیای ثبت نشد)",
|
|
131
|
+
"output_truncated": "...[خروجی کوتاه شد]",
|
|
132
|
+
"result": "نتیجه",
|
|
133
|
+
"cancel_run": "لغو اجرا",
|
|
134
|
+
"triggered_by": "اجرا شده توسط {{user}}",
|
|
135
|
+
"triggered_by_api": "اجرا شده با کلید API",
|
|
136
|
+
"danger": {
|
|
137
|
+
"safe": "بیخطر",
|
|
138
|
+
"caution": "نیازمند احتیاط",
|
|
139
|
+
"destructive": "مخرب"
|
|
140
|
+
},
|
|
141
|
+
"status": {
|
|
142
|
+
"queued": "در صف",
|
|
143
|
+
"processing": "در حال اجرا",
|
|
144
|
+
"completed": "انجام شد",
|
|
145
|
+
"failed": "ناموفق",
|
|
146
|
+
"cancelled": "لغو شد"
|
|
147
|
+
},
|
|
148
|
+
"raw": {
|
|
149
|
+
"title": "اجرای کد پایتون",
|
|
150
|
+
"warning": "این بخش کد پایتون دلخواه را با دسترسی کامل روی سرور اجرا میکند. هیچ ایزولهسازیای در کار نیست؛ تنها محافظت، کنترل دسترسی و ثبت در گزارش است. فقط زمانی استفاده کنید که از کاری که انجام میدهید کاملاً مطمئن هستید.",
|
|
151
|
+
"confirm_label": "برای فعال شدن دکمهٔ اجرا، عبارت «{{phrase}}» را وارد کنید.",
|
|
152
|
+
"run": "اجرای کد"
|
|
153
|
+
}
|
|
154
|
+
},
|
|
113
155
|
"dashboard": {
|
|
114
156
|
"title": "پنل ادمین",
|
|
115
157
|
"logout": "خروج",
|
|
@@ -199,6 +241,8 @@ declare const _default: {
|
|
|
199
241
|
"analytics": {
|
|
200
242
|
"title": "تحلیل و آمار",
|
|
201
243
|
"days": "{{count}} روز",
|
|
244
|
+
"time_range_label": "بازه",
|
|
245
|
+
"days_unit": "روز",
|
|
202
246
|
"total_users": "تعداد کاربران",
|
|
203
247
|
"total_threads": "تعداد گفتگوها",
|
|
204
248
|
"total_messages": "تعداد پیامها",
|
|
@@ -219,7 +263,13 @@ declare const _default: {
|
|
|
219
263
|
"positive": "مثبت",
|
|
220
264
|
"negative": "منفی",
|
|
221
265
|
"loading_analytics": "در حال بارگذاری تحلیلها...",
|
|
222
|
-
"error_loading": "خطا در بارگذاری دادهها"
|
|
266
|
+
"error_loading": "خطا در بارگذاری دادهها",
|
|
267
|
+
"source_human": "کاربران",
|
|
268
|
+
"source_service": "سرویس",
|
|
269
|
+
"source_all": "همه",
|
|
270
|
+
"source_caption_human": "نمایش فقط کاربران واقعی",
|
|
271
|
+
"source_caption_service": "نمایش فقط ترافیک سرویس",
|
|
272
|
+
"source_caption_all": "نمایش همهٔ ترافیک"
|
|
223
273
|
},
|
|
224
274
|
"chat_history": {
|
|
225
275
|
"title": "مدیریت تاریخچه گفتگوها",
|
|
@@ -249,7 +299,11 @@ declare const _default: {
|
|
|
249
299
|
"output_available": "خروجی موجود است",
|
|
250
300
|
"running": "در حال اجرا...",
|
|
251
301
|
"unnamed_file": "فایل بدون نام",
|
|
252
|
-
"download_file": "دانلود فایل"
|
|
302
|
+
"download_file": "دانلود فایل",
|
|
303
|
+
"source_human": "کاربران",
|
|
304
|
+
"source_service": "سرویس",
|
|
305
|
+
"source_all": "همهٔ منابع",
|
|
306
|
+
"external_user_id": "شناسهٔ سرویس"
|
|
253
307
|
},
|
|
254
308
|
"users": {
|
|
255
309
|
"title": "مدیریت کاربران",
|
|
@@ -336,7 +390,17 @@ declare const _default: {
|
|
|
336
390
|
"bulk_select_change": "حداقل یک تغییر گروهی را برای اعمال انتخاب کنید.",
|
|
337
391
|
"bulk_renewal_policy": "سیاست تمدید",
|
|
338
392
|
"bulk_renewal_policy_help": "تمدید خودکار را برای همه کاربران مطابق فعال یا غیرفعال کنید.",
|
|
339
|
-
"bulk_renewal_anchor": "زمان اولین تمدید (اختیاری)"
|
|
393
|
+
"bulk_renewal_anchor": "زمان اولین تمدید (اختیاری)",
|
|
394
|
+
"source_human": "کاربران",
|
|
395
|
+
"source_service": "سرویس",
|
|
396
|
+
"source_all": "همه",
|
|
397
|
+
"account_type": "نوع حساب",
|
|
398
|
+
"account_type_human": "کاربر انسانی",
|
|
399
|
+
"account_type_service": "سرویس",
|
|
400
|
+
"account_type_service_help": "مصرفکنندهٔ سرویس خارجی. شمارهٔ تلفن اختیاری است؛ توکن این حساب را با سرویس یکپارچهشونده به اشتراک بگذارید.",
|
|
401
|
+
"service_name": "نام سرویس",
|
|
402
|
+
"service_name_placeholder": "مثلاً یکپارچهسازی CRM",
|
|
403
|
+
"optional": "اختیاری"
|
|
340
404
|
},
|
|
341
405
|
"admins": {
|
|
342
406
|
"title": "مدیریت ادمینها",
|