@downcity/city 0.2.93 → 0.2.100
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/bin/index.d.ts +4 -2
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +2 -1
- package/bin/index.js.map +1 -1
- package/bin/service/ai/ai-service.d.ts +13 -9
- package/bin/service/ai/ai-service.d.ts.map +1 -1
- package/bin/service/ai/ai-service.js +113 -278
- package/bin/service/ai/ai-service.js.map +1 -1
- package/bin/service/ai/charge.d.ts +7 -0
- package/bin/service/ai/charge.d.ts.map +1 -1
- package/bin/service/ai/helpers.d.ts +0 -5
- package/bin/service/ai/helpers.d.ts.map +1 -1
- package/bin/service/ai/helpers.js +0 -9
- package/bin/service/ai/helpers.js.map +1 -1
- package/bin/service/ai/job-types.d.ts +41 -66
- package/bin/service/ai/job-types.d.ts.map +1 -1
- package/bin/service/ai/job-types.js +4 -3
- package/bin/service/ai/job-types.js.map +1 -1
- package/bin/service/ai/provider.d.ts +14 -7
- package/bin/service/ai/provider.d.ts.map +1 -1
- package/bin/service/ai/provider.js +3 -2
- package/bin/service/ai/provider.js.map +1 -1
- package/bin/service/ai/types.d.ts +8 -5
- package/bin/service/ai/types.d.ts.map +1 -1
- package/bin/service/{ai → async-job}/schema.d.ts +139 -31
- package/bin/service/async-job/schema.d.ts.map +1 -0
- package/bin/service/{ai → async-job}/schema.js +26 -14
- package/bin/service/async-job/schema.js.map +1 -0
- package/bin/types/AsyncJob.d.ts +42 -0
- package/bin/types/AsyncJob.d.ts.map +1 -0
- package/bin/types/AsyncJob.js +8 -0
- package/bin/types/AsyncJob.js.map +1 -0
- package/package.json +1 -1
- package/bin/service/ai/schema.d.ts.map +0 -1
- package/bin/service/ai/schema.js.map +0 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 通用异步任务数据库 schema 模块。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* async_jobs 是 City 的统一异步任务表,用于图片生成、视频生成、
|
|
5
|
+
* 文件处理等需要跨请求恢复或轮询的任务。
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* 默认 SQLite
|
|
8
|
+
* 默认 SQLite 异步任务表。
|
|
9
9
|
*/
|
|
10
|
-
export declare const
|
|
11
|
-
name: "
|
|
10
|
+
export declare const sqliteAsyncJobs: import("drizzle-orm/sqlite-core").SQLiteTableWithColumns<{
|
|
11
|
+
name: "async_jobs";
|
|
12
12
|
schema: undefined;
|
|
13
13
|
columns: {
|
|
14
14
|
job_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
15
15
|
name: "job_id";
|
|
16
|
-
tableName: "
|
|
16
|
+
tableName: "async_jobs";
|
|
17
17
|
dataType: "string";
|
|
18
18
|
columnType: "SQLiteText";
|
|
19
19
|
data: string;
|
|
@@ -30,9 +30,28 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
30
30
|
}, {}, {
|
|
31
31
|
length: number | undefined;
|
|
32
32
|
}>;
|
|
33
|
+
job_type: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
34
|
+
name: "job_type";
|
|
35
|
+
tableName: "async_jobs";
|
|
36
|
+
dataType: "string";
|
|
37
|
+
columnType: "SQLiteText";
|
|
38
|
+
data: string;
|
|
39
|
+
driverParam: string;
|
|
40
|
+
notNull: true;
|
|
41
|
+
hasDefault: false;
|
|
42
|
+
isPrimaryKey: false;
|
|
43
|
+
isAutoincrement: false;
|
|
44
|
+
hasRuntimeDefault: false;
|
|
45
|
+
enumValues: [string, ...string[]];
|
|
46
|
+
baseColumn: never;
|
|
47
|
+
identity: undefined;
|
|
48
|
+
generated: undefined;
|
|
49
|
+
}, {}, {
|
|
50
|
+
length: number | undefined;
|
|
51
|
+
}>;
|
|
33
52
|
status: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
34
53
|
name: "status";
|
|
35
|
-
tableName: "
|
|
54
|
+
tableName: "async_jobs";
|
|
36
55
|
dataType: "string";
|
|
37
56
|
columnType: "SQLiteText";
|
|
38
57
|
data: string;
|
|
@@ -51,7 +70,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
51
70
|
}>;
|
|
52
71
|
input_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
53
72
|
name: "input_json";
|
|
54
|
-
tableName: "
|
|
73
|
+
tableName: "async_jobs";
|
|
55
74
|
dataType: "string";
|
|
56
75
|
columnType: "SQLiteText";
|
|
57
76
|
data: string;
|
|
@@ -68,9 +87,28 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
68
87
|
}, {}, {
|
|
69
88
|
length: number | undefined;
|
|
70
89
|
}>;
|
|
90
|
+
state_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
91
|
+
name: "state_json";
|
|
92
|
+
tableName: "async_jobs";
|
|
93
|
+
dataType: "string";
|
|
94
|
+
columnType: "SQLiteText";
|
|
95
|
+
data: string;
|
|
96
|
+
driverParam: string;
|
|
97
|
+
notNull: false;
|
|
98
|
+
hasDefault: false;
|
|
99
|
+
isPrimaryKey: false;
|
|
100
|
+
isAutoincrement: false;
|
|
101
|
+
hasRuntimeDefault: false;
|
|
102
|
+
enumValues: [string, ...string[]];
|
|
103
|
+
baseColumn: never;
|
|
104
|
+
identity: undefined;
|
|
105
|
+
generated: undefined;
|
|
106
|
+
}, {}, {
|
|
107
|
+
length: number | undefined;
|
|
108
|
+
}>;
|
|
71
109
|
result_json: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
72
110
|
name: "result_json";
|
|
73
|
-
tableName: "
|
|
111
|
+
tableName: "async_jobs";
|
|
74
112
|
dataType: "string";
|
|
75
113
|
columnType: "SQLiteText";
|
|
76
114
|
data: string;
|
|
@@ -89,7 +127,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
89
127
|
}>;
|
|
90
128
|
error: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
91
129
|
name: "error";
|
|
92
|
-
tableName: "
|
|
130
|
+
tableName: "async_jobs";
|
|
93
131
|
dataType: "string";
|
|
94
132
|
columnType: "SQLiteText";
|
|
95
133
|
data: string;
|
|
@@ -108,7 +146,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
108
146
|
}>;
|
|
109
147
|
message: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
110
148
|
name: "message";
|
|
111
|
-
tableName: "
|
|
149
|
+
tableName: "async_jobs";
|
|
112
150
|
dataType: "string";
|
|
113
151
|
columnType: "SQLiteText";
|
|
114
152
|
data: string;
|
|
@@ -127,7 +165,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
127
165
|
}>;
|
|
128
166
|
city_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
129
167
|
name: "city_id";
|
|
130
|
-
tableName: "
|
|
168
|
+
tableName: "async_jobs";
|
|
131
169
|
dataType: "string";
|
|
132
170
|
columnType: "SQLiteText";
|
|
133
171
|
data: string;
|
|
@@ -146,7 +184,26 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
146
184
|
}>;
|
|
147
185
|
user_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
148
186
|
name: "user_id";
|
|
149
|
-
tableName: "
|
|
187
|
+
tableName: "async_jobs";
|
|
188
|
+
dataType: "string";
|
|
189
|
+
columnType: "SQLiteText";
|
|
190
|
+
data: string;
|
|
191
|
+
driverParam: string;
|
|
192
|
+
notNull: false;
|
|
193
|
+
hasDefault: false;
|
|
194
|
+
isPrimaryKey: false;
|
|
195
|
+
isAutoincrement: false;
|
|
196
|
+
hasRuntimeDefault: false;
|
|
197
|
+
enumValues: [string, ...string[]];
|
|
198
|
+
baseColumn: never;
|
|
199
|
+
identity: undefined;
|
|
200
|
+
generated: undefined;
|
|
201
|
+
}, {}, {
|
|
202
|
+
length: number | undefined;
|
|
203
|
+
}>;
|
|
204
|
+
service_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
205
|
+
name: "service_id";
|
|
206
|
+
tableName: "async_jobs";
|
|
150
207
|
dataType: "string";
|
|
151
208
|
columnType: "SQLiteText";
|
|
152
209
|
data: string;
|
|
@@ -165,7 +222,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
165
222
|
}>;
|
|
166
223
|
model_id: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
167
224
|
name: "model_id";
|
|
168
|
-
tableName: "
|
|
225
|
+
tableName: "async_jobs";
|
|
169
226
|
dataType: "string";
|
|
170
227
|
columnType: "SQLiteText";
|
|
171
228
|
data: string;
|
|
@@ -184,7 +241,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
184
241
|
}>;
|
|
185
242
|
created_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
186
243
|
name: "created_at";
|
|
187
|
-
tableName: "
|
|
244
|
+
tableName: "async_jobs";
|
|
188
245
|
dataType: "string";
|
|
189
246
|
columnType: "SQLiteText";
|
|
190
247
|
data: string;
|
|
@@ -203,7 +260,7 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
203
260
|
}>;
|
|
204
261
|
updated_at: import("drizzle-orm/sqlite-core").SQLiteColumn<{
|
|
205
262
|
name: "updated_at";
|
|
206
|
-
tableName: "
|
|
263
|
+
tableName: "async_jobs";
|
|
207
264
|
dataType: "string";
|
|
208
265
|
columnType: "SQLiteText";
|
|
209
266
|
data: string;
|
|
@@ -224,15 +281,15 @@ export declare const sqliteAIImageJobs: import("drizzle-orm/sqlite-core").SQLite
|
|
|
224
281
|
dialect: "sqlite";
|
|
225
282
|
}>;
|
|
226
283
|
/**
|
|
227
|
-
* 默认 Postgres
|
|
284
|
+
* 默认 Postgres 异步任务表。
|
|
228
285
|
*/
|
|
229
|
-
export declare const
|
|
230
|
-
name: "
|
|
286
|
+
export declare const pgAsyncJobs: import("drizzle-orm/pg-core").PgTableWithColumns<{
|
|
287
|
+
name: "async_jobs";
|
|
231
288
|
schema: undefined;
|
|
232
289
|
columns: {
|
|
233
290
|
job_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
234
291
|
name: "job_id";
|
|
235
|
-
tableName: "
|
|
292
|
+
tableName: "async_jobs";
|
|
236
293
|
dataType: "string";
|
|
237
294
|
columnType: "PgText";
|
|
238
295
|
data: string;
|
|
@@ -247,9 +304,26 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
247
304
|
identity: undefined;
|
|
248
305
|
generated: undefined;
|
|
249
306
|
}, {}, {}>;
|
|
307
|
+
job_type: import("drizzle-orm/pg-core").PgColumn<{
|
|
308
|
+
name: "job_type";
|
|
309
|
+
tableName: "async_jobs";
|
|
310
|
+
dataType: "string";
|
|
311
|
+
columnType: "PgText";
|
|
312
|
+
data: string;
|
|
313
|
+
driverParam: string;
|
|
314
|
+
notNull: true;
|
|
315
|
+
hasDefault: false;
|
|
316
|
+
isPrimaryKey: false;
|
|
317
|
+
isAutoincrement: false;
|
|
318
|
+
hasRuntimeDefault: false;
|
|
319
|
+
enumValues: [string, ...string[]];
|
|
320
|
+
baseColumn: never;
|
|
321
|
+
identity: undefined;
|
|
322
|
+
generated: undefined;
|
|
323
|
+
}, {}, {}>;
|
|
250
324
|
status: import("drizzle-orm/pg-core").PgColumn<{
|
|
251
325
|
name: "status";
|
|
252
|
-
tableName: "
|
|
326
|
+
tableName: "async_jobs";
|
|
253
327
|
dataType: "string";
|
|
254
328
|
columnType: "PgText";
|
|
255
329
|
data: string;
|
|
@@ -266,7 +340,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
266
340
|
}, {}, {}>;
|
|
267
341
|
input_json: import("drizzle-orm/pg-core").PgColumn<{
|
|
268
342
|
name: "input_json";
|
|
269
|
-
tableName: "
|
|
343
|
+
tableName: "async_jobs";
|
|
270
344
|
dataType: "string";
|
|
271
345
|
columnType: "PgText";
|
|
272
346
|
data: string;
|
|
@@ -281,9 +355,26 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
281
355
|
identity: undefined;
|
|
282
356
|
generated: undefined;
|
|
283
357
|
}, {}, {}>;
|
|
358
|
+
state_json: import("drizzle-orm/pg-core").PgColumn<{
|
|
359
|
+
name: "state_json";
|
|
360
|
+
tableName: "async_jobs";
|
|
361
|
+
dataType: "string";
|
|
362
|
+
columnType: "PgText";
|
|
363
|
+
data: string;
|
|
364
|
+
driverParam: string;
|
|
365
|
+
notNull: false;
|
|
366
|
+
hasDefault: false;
|
|
367
|
+
isPrimaryKey: false;
|
|
368
|
+
isAutoincrement: false;
|
|
369
|
+
hasRuntimeDefault: false;
|
|
370
|
+
enumValues: [string, ...string[]];
|
|
371
|
+
baseColumn: never;
|
|
372
|
+
identity: undefined;
|
|
373
|
+
generated: undefined;
|
|
374
|
+
}, {}, {}>;
|
|
284
375
|
result_json: import("drizzle-orm/pg-core").PgColumn<{
|
|
285
376
|
name: "result_json";
|
|
286
|
-
tableName: "
|
|
377
|
+
tableName: "async_jobs";
|
|
287
378
|
dataType: "string";
|
|
288
379
|
columnType: "PgText";
|
|
289
380
|
data: string;
|
|
@@ -300,7 +391,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
300
391
|
}, {}, {}>;
|
|
301
392
|
error: import("drizzle-orm/pg-core").PgColumn<{
|
|
302
393
|
name: "error";
|
|
303
|
-
tableName: "
|
|
394
|
+
tableName: "async_jobs";
|
|
304
395
|
dataType: "string";
|
|
305
396
|
columnType: "PgText";
|
|
306
397
|
data: string;
|
|
@@ -317,7 +408,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
317
408
|
}, {}, {}>;
|
|
318
409
|
message: import("drizzle-orm/pg-core").PgColumn<{
|
|
319
410
|
name: "message";
|
|
320
|
-
tableName: "
|
|
411
|
+
tableName: "async_jobs";
|
|
321
412
|
dataType: "string";
|
|
322
413
|
columnType: "PgText";
|
|
323
414
|
data: string;
|
|
@@ -334,7 +425,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
334
425
|
}, {}, {}>;
|
|
335
426
|
city_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
336
427
|
name: "city_id";
|
|
337
|
-
tableName: "
|
|
428
|
+
tableName: "async_jobs";
|
|
338
429
|
dataType: "string";
|
|
339
430
|
columnType: "PgText";
|
|
340
431
|
data: string;
|
|
@@ -351,7 +442,24 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
351
442
|
}, {}, {}>;
|
|
352
443
|
user_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
353
444
|
name: "user_id";
|
|
354
|
-
tableName: "
|
|
445
|
+
tableName: "async_jobs";
|
|
446
|
+
dataType: "string";
|
|
447
|
+
columnType: "PgText";
|
|
448
|
+
data: string;
|
|
449
|
+
driverParam: string;
|
|
450
|
+
notNull: false;
|
|
451
|
+
hasDefault: false;
|
|
452
|
+
isPrimaryKey: false;
|
|
453
|
+
isAutoincrement: false;
|
|
454
|
+
hasRuntimeDefault: false;
|
|
455
|
+
enumValues: [string, ...string[]];
|
|
456
|
+
baseColumn: never;
|
|
457
|
+
identity: undefined;
|
|
458
|
+
generated: undefined;
|
|
459
|
+
}, {}, {}>;
|
|
460
|
+
service_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
461
|
+
name: "service_id";
|
|
462
|
+
tableName: "async_jobs";
|
|
355
463
|
dataType: "string";
|
|
356
464
|
columnType: "PgText";
|
|
357
465
|
data: string;
|
|
@@ -368,7 +476,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
368
476
|
}, {}, {}>;
|
|
369
477
|
model_id: import("drizzle-orm/pg-core").PgColumn<{
|
|
370
478
|
name: "model_id";
|
|
371
|
-
tableName: "
|
|
479
|
+
tableName: "async_jobs";
|
|
372
480
|
dataType: "string";
|
|
373
481
|
columnType: "PgText";
|
|
374
482
|
data: string;
|
|
@@ -385,7 +493,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
385
493
|
}, {}, {}>;
|
|
386
494
|
created_at: import("drizzle-orm/pg-core").PgColumn<{
|
|
387
495
|
name: "created_at";
|
|
388
|
-
tableName: "
|
|
496
|
+
tableName: "async_jobs";
|
|
389
497
|
dataType: "string";
|
|
390
498
|
columnType: "PgText";
|
|
391
499
|
data: string;
|
|
@@ -402,7 +510,7 @@ export declare const pgAIImageJobs: import("drizzle-orm/pg-core").PgTableWithCol
|
|
|
402
510
|
}, {}, {}>;
|
|
403
511
|
updated_at: import("drizzle-orm/pg-core").PgColumn<{
|
|
404
512
|
name: "updated_at";
|
|
405
|
-
tableName: "
|
|
513
|
+
tableName: "async_jobs";
|
|
406
514
|
dataType: "string";
|
|
407
515
|
columnType: "PgText";
|
|
408
516
|
data: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/service/async-job/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6B1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6BtB,CAAC"}
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* 通用异步任务数据库 schema 模块。
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* async_jobs 是 City 的统一异步任务表,用于图片生成、视频生成、
|
|
5
|
+
* 文件处理等需要跨请求恢复或轮询的任务。
|
|
6
6
|
*/
|
|
7
7
|
import { pgTable, text as pgText } from "drizzle-orm/pg-core";
|
|
8
8
|
import { sqliteTable, text as sqliteText } from "drizzle-orm/sqlite-core";
|
|
9
|
-
const
|
|
9
|
+
const DEFAULT_ASYNC_JOBS_TABLE = "async_jobs";
|
|
10
10
|
/**
|
|
11
|
-
* 默认 SQLite
|
|
11
|
+
* 默认 SQLite 异步任务表。
|
|
12
12
|
*/
|
|
13
|
-
export const
|
|
14
|
-
/**
|
|
13
|
+
export const sqliteAsyncJobs = sqliteTable(DEFAULT_ASYNC_JOBS_TABLE, {
|
|
14
|
+
/** City 内部生成的异步任务 ID。 */
|
|
15
15
|
job_id: sqliteText("job_id").primaryKey(),
|
|
16
|
+
/** 任务类型,例如 `ai.image.generate`。 */
|
|
17
|
+
job_type: sqliteText("job_type").notNull(),
|
|
16
18
|
/** 任务状态:queued / running / succeeded / failed。 */
|
|
17
19
|
status: sqliteText("status").notNull(),
|
|
18
|
-
/**
|
|
20
|
+
/** 原始任务输入,JSON 字符串。 */
|
|
19
21
|
input_json: sqliteText("input_json").notNull(),
|
|
20
|
-
/**
|
|
22
|
+
/** 可恢复任务中间状态,JSON 字符串。 */
|
|
23
|
+
state_json: sqliteText("state_json"),
|
|
24
|
+
/** 成功后的业务结果,JSON 字符串。 */
|
|
21
25
|
result_json: sqliteText("result_json"),
|
|
22
26
|
/** 失败时给客户端展示的错误消息。 */
|
|
23
27
|
error: sqliteText("error"),
|
|
@@ -27,6 +31,8 @@ export const sqliteAIImageJobs = sqliteTable(DEFAULT_IMAGE_JOBS_TABLE, {
|
|
|
27
31
|
city_id: sqliteText("city_id"),
|
|
28
32
|
/** 当前终端用户 ID。 */
|
|
29
33
|
user_id: sqliteText("user_id"),
|
|
34
|
+
/** 创建该任务的 Service ID。 */
|
|
35
|
+
service_id: sqliteText("service_id"),
|
|
30
36
|
/** 本次任务解析到的模型 ID。 */
|
|
31
37
|
model_id: sqliteText("model_id"),
|
|
32
38
|
/** 创建时间。 */
|
|
@@ -35,16 +41,20 @@ export const sqliteAIImageJobs = sqliteTable(DEFAULT_IMAGE_JOBS_TABLE, {
|
|
|
35
41
|
updated_at: sqliteText("updated_at").notNull(),
|
|
36
42
|
});
|
|
37
43
|
/**
|
|
38
|
-
* 默认 Postgres
|
|
44
|
+
* 默认 Postgres 异步任务表。
|
|
39
45
|
*/
|
|
40
|
-
export const
|
|
41
|
-
/**
|
|
46
|
+
export const pgAsyncJobs = pgTable(DEFAULT_ASYNC_JOBS_TABLE, {
|
|
47
|
+
/** City 内部生成的异步任务 ID。 */
|
|
42
48
|
job_id: pgText("job_id").primaryKey(),
|
|
49
|
+
/** 任务类型,例如 `ai.image.generate`。 */
|
|
50
|
+
job_type: pgText("job_type").notNull(),
|
|
43
51
|
/** 任务状态:queued / running / succeeded / failed。 */
|
|
44
52
|
status: pgText("status").notNull(),
|
|
45
|
-
/**
|
|
53
|
+
/** 原始任务输入,JSON 字符串。 */
|
|
46
54
|
input_json: pgText("input_json").notNull(),
|
|
47
|
-
/**
|
|
55
|
+
/** 可恢复任务中间状态,JSON 字符串。 */
|
|
56
|
+
state_json: pgText("state_json"),
|
|
57
|
+
/** 成功后的业务结果,JSON 字符串。 */
|
|
48
58
|
result_json: pgText("result_json"),
|
|
49
59
|
/** 失败时给客户端展示的错误消息。 */
|
|
50
60
|
error: pgText("error"),
|
|
@@ -54,6 +64,8 @@ export const pgAIImageJobs = pgTable(DEFAULT_IMAGE_JOBS_TABLE, {
|
|
|
54
64
|
city_id: pgText("city_id"),
|
|
55
65
|
/** 当前终端用户 ID。 */
|
|
56
66
|
user_id: pgText("user_id"),
|
|
67
|
+
/** 创建该任务的 Service ID。 */
|
|
68
|
+
service_id: pgText("service_id"),
|
|
57
69
|
/** 本次任务解析到的模型 ID。 */
|
|
58
70
|
model_id: pgText("model_id"),
|
|
59
71
|
/** 创建时间。 */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/service/async-job/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,wBAAwB,GAAG,YAAY,CAAC;AAE9C;;GAEG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,WAAW,CAAC,wBAAwB,EAAE;IACnE,yBAAyB;IACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACzC,mCAAmC;IACnC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IAC1C,kDAAkD;IAClD,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IACtC,uBAAuB;IACvB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,0BAA0B;IAC1B,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;IACpC,yBAAyB;IACzB,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;IACtC,sBAAsB;IACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC;IACpC,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;IAChC,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC/C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC,wBAAwB,EAAE;IAC3D,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACrC,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;IACtC,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAClC,uBAAuB;IACvB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,0BAA0B;IAC1B,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;IAChC,yBAAyB;IACzB,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC;IAChC,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 通用异步任务类型模块。
|
|
3
|
+
*
|
|
4
|
+
* City 内部所有需要跨请求恢复、轮询或后台执行的任务都使用这组结构。
|
|
5
|
+
* 具体业务能力通过 job_type 区分,例如图片生成使用 `ai.image.generate`。
|
|
6
|
+
*/
|
|
7
|
+
/** 通用异步任务状态。 */
|
|
8
|
+
export type AsyncJobStatus = "queued" | "running" | "succeeded" | "failed";
|
|
9
|
+
/**
|
|
10
|
+
* 通用异步任务表行。
|
|
11
|
+
*/
|
|
12
|
+
export interface AsyncJobRecord {
|
|
13
|
+
/** City 内部生成的异步任务 ID。 */
|
|
14
|
+
job_id: string;
|
|
15
|
+
/** 任务类型,例如 `ai.image.generate`。 */
|
|
16
|
+
job_type: string;
|
|
17
|
+
/** 当前任务状态。 */
|
|
18
|
+
status: AsyncJobStatus;
|
|
19
|
+
/** 创建任务时的原始输入,JSON 字符串。 */
|
|
20
|
+
input_json: string;
|
|
21
|
+
/** 任务推进时需要保留的中间状态,JSON 字符串。 */
|
|
22
|
+
state_json?: string | null;
|
|
23
|
+
/** 成功后的业务结果,JSON 字符串。 */
|
|
24
|
+
result_json?: string | null;
|
|
25
|
+
/** 失败时给客户端展示的错误消息。 */
|
|
26
|
+
error?: string | null;
|
|
27
|
+
/** 当前任务状态说明,便于客户端展示或排障。 */
|
|
28
|
+
message?: string | null;
|
|
29
|
+
/** 当前 user_token 绑定的 City ID。 */
|
|
30
|
+
city_id?: string | null;
|
|
31
|
+
/** 当前终端用户 ID。 */
|
|
32
|
+
user_id?: string | null;
|
|
33
|
+
/** 创建该任务的 Service ID。 */
|
|
34
|
+
service_id?: string | null;
|
|
35
|
+
/** 本次任务解析到的模型 ID。 */
|
|
36
|
+
model_id?: string | null;
|
|
37
|
+
/** 创建时间。 */
|
|
38
|
+
created_at: string;
|
|
39
|
+
/** 更新时间。 */
|
|
40
|
+
updated_at: string;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=AsyncJob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncJob.d.ts","sourceRoot":"","sources":["../../src/types/AsyncJob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,gBAAgB;AAChB,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,MAAM,EAAE,cAAc,CAAC;IACvB,2BAA2B;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,sBAAsB;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,2BAA2B;IAC3B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,iBAAiB;IACjB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AsyncJob.js","sourceRoot":"","sources":["../../src/types/AsyncJob.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/service/ai/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuB5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuBxB,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/service/ai/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1E,MAAM,wBAAwB,GAAG,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,WAAW,CAAC,wBAAwB,EAAE;IACrE,+BAA+B;IAC/B,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACzC,kDAAkD;IAClD,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IACtC,yBAAyB;IACzB,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,kCAAkC;IAClC,WAAW,EAAE,UAAU,CAAC,aAAa,CAAC;IACtC,sBAAsB;IACtB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC;IAC1B,2BAA2B;IAC3B,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iCAAiC;IACjC,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,iBAAiB;IACjB,OAAO,EAAE,UAAU,CAAC,SAAS,CAAC;IAC9B,qBAAqB;IACrB,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC;IAChC,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC9C,YAAY;IACZ,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC/C,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,OAAO,CAAC,wBAAwB,EAAE;IAC7D,+BAA+B;IAC/B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,UAAU,EAAE;IACrC,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;IAClC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC;IACtB,2BAA2B;IAC3B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,iBAAiB;IACjB,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC;IAC1B,qBAAqB;IACrB,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC;IAC5B,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;IAC1C,YAAY;IACZ,UAAU,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE;CAC3C,CAAC,CAAC"}
|