增加milestone历史记录生成功能
This commit is contained in:
parent
465b097ae6
commit
2773927a24
|
|
@ -0,0 +1,134 @@
|
|||
import sys
|
||||
import os
|
||||
|
||||
import config
|
||||
|
||||
curPath = os.path.abspath(os.path.dirname(__file__))
|
||||
rootPath = os.path.split(curPath)[0]
|
||||
sys.path.append(rootPath)
|
||||
|
||||
import warnings
|
||||
from datetime import datetime,timedelta
|
||||
from utils import get_conn, get_month_date
|
||||
warnings.filterwarnings("ignore")
|
||||
|
||||
def execute_sql(sql:str):
|
||||
conn = get_conn()
|
||||
curs = conn.cursor()
|
||||
curs.execute(sql)
|
||||
conn.commit()
|
||||
conn.close()
|
||||
def record_milestone_history():
|
||||
#每次调用此函数,默认记录当前日期的里程碑数据,然后回顾最近2个月的数据,若2个月之前的数据不存在,则以随机数的方式生成填充,并在is_test字段标记为true
|
||||
|
||||
# 查看当前历史表中已经有的数据
|
||||
now = datetime.now()
|
||||
today_str=now.strftime('%Y-%m-%d')
|
||||
today=datetime.strptime(today_str,'%Y-%m-%d')
|
||||
delta = timedelta(days=60)
|
||||
begin_date=now-delta
|
||||
begin_date_str=begin_date.strftime('%Y-%m-%d')
|
||||
# 取出数据库中已有的最后一天的日期
|
||||
last_date_sql=f'''SELECT max(date) as last_date from (
|
||||
SELECT date from ai_milestone_history where date>'{begin_date_str}' GROUP BY date order by date
|
||||
) as a'''
|
||||
|
||||
conn = get_conn()
|
||||
curs = conn.cursor()
|
||||
curs.execute(last_date_sql)
|
||||
last_date=curs.fetchone()[0]
|
||||
last_date_str=""
|
||||
if last_date is None:
|
||||
last_date_str=(today-timedelta(days=60)).strftime('%Y-%m-%d')
|
||||
else:
|
||||
last_date_str=last_date.strftime('%Y-%m-%d')
|
||||
#last_date_str='2023-02-01'
|
||||
if last_date_str==today_str:
|
||||
config.logger.info("当前日期的milestone数据已存在,跳过生成")
|
||||
return
|
||||
|
||||
last_date=datetime.strptime(last_date_str,'%Y-%m-%d')
|
||||
|
||||
delta=timedelta(days=1)
|
||||
generate_day=last_date+delta
|
||||
config.logger.info(f"开始生成{generate_day}到{today}的数据")
|
||||
while generate_day<today:
|
||||
insert_test_milestone(generate_day)
|
||||
generate_day = generate_day + delta
|
||||
|
||||
insert_today_milestone(today)
|
||||
config.logger.info("milestone历史数据记录完成")
|
||||
|
||||
|
||||
|
||||
def insert_test_milestone(generate_day:datetime):
|
||||
generate_day_str=generate_day.strftime('%Y-%m-%d')
|
||||
generate_sql=f"""
|
||||
insert into ai_milestone_history(date,
|
||||
milestone_id,
|
||||
repo_id,
|
||||
NAME,
|
||||
CONTENT,
|
||||
is_closed,
|
||||
num_issues,
|
||||
num_closed_issues,
|
||||
completeness,
|
||||
deadline_unix,
|
||||
closed_date_unix,
|
||||
is_test)
|
||||
SELECT
|
||||
'{generate_day_str}' as date,
|
||||
ID AS milestone_id,
|
||||
repo_id,
|
||||
NAME,
|
||||
CONTENT,
|
||||
is_closed,
|
||||
ceil(num_issues+random()*10) as num_issues,
|
||||
ceil(num_closed_issues+random()*10) as num_closed_issues,
|
||||
ceil(completeness+random()*10) as completeness,
|
||||
deadline_unix,
|
||||
closed_date_unix,
|
||||
true as is_test
|
||||
FROM
|
||||
milestone
|
||||
"""
|
||||
|
||||
execute_sql(generate_sql)
|
||||
|
||||
def insert_today_milestone(generate_day:datetime):
|
||||
generate_day_str = generate_day.strftime('%Y-%m-%d')
|
||||
generate_sql = f"""
|
||||
insert into ai_milestone_history(date,
|
||||
milestone_id,
|
||||
repo_id,
|
||||
NAME,
|
||||
CONTENT,
|
||||
is_closed,
|
||||
num_issues,
|
||||
num_closed_issues,
|
||||
completeness,
|
||||
deadline_unix,
|
||||
closed_date_unix,
|
||||
is_test)
|
||||
SELECT
|
||||
'{generate_day_str}' as date,
|
||||
ID AS milestone_id,
|
||||
repo_id,
|
||||
NAME,
|
||||
CONTENT,
|
||||
is_closed,
|
||||
num_issues,
|
||||
num_closed_issues,
|
||||
completeness,
|
||||
deadline_unix,
|
||||
closed_date_unix,
|
||||
false as is_test
|
||||
FROM
|
||||
milestone
|
||||
"""
|
||||
|
||||
execute_sql(generate_sql)
|
||||
|
||||
if __name__ == '__main__':
|
||||
# 生成测试数据
|
||||
record_milestone_history()
|
||||
|
|
@ -107,3 +107,32 @@ CREATE TABLE "public"."ai_user_portraint_detail" (
|
|||
"created_unix" int8
|
||||
);
|
||||
|
||||
DROP TABLE IF EXISTS "public"."ai_milestone_history";
|
||||
CREATE TABLE "public"."ai_milestone_history" (
|
||||
"milestone_id" int8,
|
||||
"repo_id" int8,
|
||||
"name" varchar(255) COLLATE "pg_catalog"."default",
|
||||
"content" text COLLATE "pg_catalog"."default",
|
||||
"is_closed" bool,
|
||||
"num_issues" int4,
|
||||
"num_closed_issues" int4,
|
||||
"completeness" int4,
|
||||
"deadline_unix" int8,
|
||||
"closed_date_unix" int8,
|
||||
"id" int8 NOT NULL GENERATED BY DEFAULT AS IDENTITY (
|
||||
INCREMENT 1
|
||||
MINVALUE 1
|
||||
MAXVALUE 9223372036854775807
|
||||
START 1
|
||||
CACHE 1
|
||||
),
|
||||
"date" date NOT NULL,
|
||||
"is_test" bool
|
||||
)
|
||||
;
|
||||
COMMENT ON COLUMN "public"."ai_milestone_history"."date" IS '记录日期';
|
||||
|
||||
-- ----------------------------
|
||||
-- Primary Key structure for table ai_milestone_history
|
||||
-- ----------------------------
|
||||
ALTER TABLE "public"."ai_milestone_history" ADD CONSTRAINT "ai_milestone_history_pkey" PRIMARY KEY ("id");
|
||||
Loading…
Reference in New Issue