78 lines
5.2 KiB
MySQL
78 lines
5.2 KiB
MySQL
|
|
-- EasyCode front AI task center incremental upgrade
|
||
|
|
|
||
|
|
create table if not exists front_ai_generation_task (
|
||
|
|
task_id bigint(20) not null auto_increment comment 'AI task ID',
|
||
|
|
generation_id bigint(20) default null comment 'Generation record ID',
|
||
|
|
project_id bigint(20) not null comment 'Project ID',
|
||
|
|
user_id bigint(20) not null comment 'Front user ID',
|
||
|
|
generate_type varchar(50) not null comment 'Generation type',
|
||
|
|
provider varchar(50) default 'deepseek' comment 'AI provider',
|
||
|
|
model varchar(100) default 'deepseek-chat' comment 'AI model',
|
||
|
|
status varchar(30) not null default 'QUEUED' comment 'Task status',
|
||
|
|
request_hash varchar(64) not null comment 'Request idempotency hash',
|
||
|
|
request_payload longtext comment 'Request JSON',
|
||
|
|
result_payload longtext comment 'Result JSON',
|
||
|
|
error_code varchar(100) default '' comment 'Error code',
|
||
|
|
error_message varchar(1000) default '' comment 'Error message',
|
||
|
|
attempts int default 0 comment 'Attempt count',
|
||
|
|
max_attempts int default 3 comment 'Max attempts',
|
||
|
|
next_retry_time datetime default null comment 'Next retry time',
|
||
|
|
locked_by varchar(100) default '' comment 'Worker lock owner',
|
||
|
|
locked_until datetime default null comment 'Worker lock expiry',
|
||
|
|
progress int default 0 comment 'Progress percent',
|
||
|
|
current_step varchar(100) default '' comment 'Current step',
|
||
|
|
input_tokens int default 0 comment 'Input tokens',
|
||
|
|
output_tokens int default 0 comment 'Output tokens',
|
||
|
|
total_tokens int default 0 comment 'Total tokens',
|
||
|
|
cost_cents int default 0 comment 'Estimated cost in cents',
|
||
|
|
started_at datetime default null comment 'Started time',
|
||
|
|
finished_at datetime default null comment 'Finished time',
|
||
|
|
create_time datetime default null comment 'Create time',
|
||
|
|
update_time datetime default null comment 'Update time',
|
||
|
|
primary key (task_id),
|
||
|
|
key idx_front_ai_task_project (user_id, project_id),
|
||
|
|
key idx_front_ai_task_status (status, next_retry_time),
|
||
|
|
key idx_front_ai_task_generation (generation_id),
|
||
|
|
key idx_front_ai_task_hash (user_id, project_id, request_hash)
|
||
|
|
) engine=innodb auto_increment=100 default charset=utf8mb4 comment='Front AI generation task';
|
||
|
|
|
||
|
|
create table if not exists front_ai_quota_bucket (
|
||
|
|
bucket_id bigint(20) not null auto_increment comment 'Quota bucket ID',
|
||
|
|
user_id bigint(20) not null comment 'Front user ID',
|
||
|
|
period_type varchar(20) not null comment 'DAY or MONTH',
|
||
|
|
period_key varchar(20) not null comment 'Period key',
|
||
|
|
task_limit int default 0 comment 'Task limit',
|
||
|
|
task_used int default 0 comment 'Used tasks',
|
||
|
|
token_limit int default 0 comment 'Token limit',
|
||
|
|
token_used int default 0 comment 'Used tokens',
|
||
|
|
cost_limit_cents int default 0 comment 'Cost limit in cents',
|
||
|
|
cost_used_cents int default 0 comment 'Used cost in cents',
|
||
|
|
running_limit int default 1 comment 'Running task limit',
|
||
|
|
running_count int default 0 comment 'Running task count',
|
||
|
|
create_time datetime default null comment 'Create time',
|
||
|
|
update_time datetime default null comment 'Update time',
|
||
|
|
primary key (bucket_id),
|
||
|
|
unique key uk_front_ai_quota_bucket (user_id, period_type, period_key)
|
||
|
|
) engine=innodb auto_increment=100 default charset=utf8mb4 comment='Front AI quota bucket';
|
||
|
|
|
||
|
|
create table if not exists front_ai_usage_ledger (
|
||
|
|
ledger_id bigint(20) not null auto_increment comment 'Usage ledger ID',
|
||
|
|
task_id bigint(20) default null comment 'Task ID',
|
||
|
|
generation_id bigint(20) default null comment 'Generation record ID',
|
||
|
|
project_id bigint(20) not null comment 'Project ID',
|
||
|
|
user_id bigint(20) not null comment 'Front user ID',
|
||
|
|
generate_type varchar(50) not null comment 'Generation type',
|
||
|
|
provider varchar(50) default 'deepseek' comment 'AI provider',
|
||
|
|
model varchar(100) default 'deepseek-chat' comment 'AI model',
|
||
|
|
input_tokens int default 0 comment 'Input tokens',
|
||
|
|
output_tokens int default 0 comment 'Output tokens',
|
||
|
|
total_tokens int default 0 comment 'Total tokens',
|
||
|
|
cost_cents int default 0 comment 'Estimated cost in cents',
|
||
|
|
success char(1) default '0' comment 'Success flag',
|
||
|
|
error_message varchar(1000) default '' comment 'Error message',
|
||
|
|
create_time datetime default null comment 'Create time',
|
||
|
|
primary key (ledger_id),
|
||
|
|
key idx_front_ai_usage_user (user_id, create_time),
|
||
|
|
key idx_front_ai_usage_task (task_id)
|
||
|
|
) engine=innodb auto_increment=100 default charset=utf8mb4 comment='Front AI usage ledger';
|