# -*- coding:utf8 -*-
from base import *
# a=cli.render('''
#    my name is {{name}}.
#    {%- for i in [1,2,3,4,5,6,7] %}
#     {{i}}
#    {%- endfor %}
# ''',{'name':"jqzhang"})
#
# # print(a)
#
#
# dsn='mysql://root:root@localhost:3306/ferry'
#
# conn=cli.get_mysql_connection(dsn)
# print(cli.mysql_query(conn,'show tables'))
# print(cli.mysql_query(conn,'select * from test'))


# conn=cli.get_sqlite_connection(":memory:")
#
# cli.sqlite_query(conn,'''
# CREATE TABLE COMPANY(
#    ID INT PRIMARY KEY     NOT NULL,
#    NAME           TEXT    NOT NULL,
#    AGE            INT     NOT NULL,
#    ADDRESS        CHAR(50),
#    SALARY         REAL
# );
# ''')

# i="insert into COMPANY(NAME,ID,AGE) values('jqzhang','1',30)"
# cli.sqlite_query(conn,i)
# i="insert into COMPANY(NAME,ID,AGE) values('hello','2',35)"
# cli.sqlite_query(conn,i)

# sql='''
# INSERT INTO COMPANY (`ID`,`NAME`,`AGE`,`ADDRESS`,`SALARY`)
# VALUES
# (1,'jqzhang',30,NULL,NULL),
# (2,'hello',35,NULL,NULL);'''
# cli.sqlite_query(conn,sql)
#
# rows=cli.sqlite_query(conn,'select * from COMPANY')
#
# print(cli.dict2sql('COMPANY',rows))
#
#
# dsn = os.environ.get("DSN", "mysql://root:root@127.0.0.1:3306/pjm_db")
#
# dsn='mysql://root:root@localhost:3306/ferry'
# conn=cli.get_mysql_connection(dsn)
# cli.dump_mysql_data(conn,"/tmp/ferry")
# cli.dump_mysql_ddl(conn,"/tmp/ferry")
#
# print(cli.get_dependencies())


# tpl='''
# <dl>
#     {% for key, value in d.items() %}
#     <dt>{{ key }}</dt>
#     <dd>{{ value }}</dd>
#     {% endfor %}
# </dl>
# '''
#
# d={'key1':'value1','key2':'value2'}
# print(cli.render(tpl,globals()))


# cli.example()
#
# req=cli.requests.get('https://www.baidu.com')
# print(req.content)

# print(cli.get_dependencies(True))

# html=cli.requests.get("https://www.baidu.com").content
# for i in cli.pq(html,'a','items'):
#     print(cli.pq(i,'a','text'))


# xml='''
# <note>
# <to>Tove</to>
# <from name="xxx">Jani</from>
# <heading>Reminder</heading>
# <body>Don't forget me this weekend!</body>
# </note>
# '''
#
# for i in cli.pq(xml,'from','items'):
#     print(i.attr('name'))


# cli.example()


# cli.get_redis()
#
# import dsnparse
#
# print(cli.parse_dsn(dsn))

# dsn='redis://localhost:63790/0'
# r=cli.get_redis(dsn)
# r.set('a','b')
# print(r.get('a'))

# import kafka

#

#
# def cc():
#     dsn="kafka://127.0.0.1:9092/test?group_id=2&bootstrap_servers=127.0.0.1:9092"
#     consumer=cli.get_kafka_consumer(dsn)
#     for m in consumer:
#         print(m)
# import threading
#
# c=threading.Thread(target=cc)
# c.setDaemon(True)
# c.start()
# #
# dsn="kafka://127.0.0.1:9092/?bootstrap_servers=127.0.0.1:9092"
#
# p=cli.get_kafka_producer(dsn)
# k=cli.kafka
#
# import time
# for i in range(1,1000):
#     p.send('test','xxx')
#     time.sleep(1)


# yaml='''
# Section:
#     heading: Heading 1
#     font:
#         name: Times New Roman
#         size: 22
#         color_theme: ACCENT_2
# '''
#
# a=cli.yaml2json(yaml)
# b=cli.json2yaml(a)
# print(a)
# print(b)

# def server():
#
#     import zmq
#
#     context = zmq.Context()
#     socket = context.socket(zmq.REP)
#     socket.bind("tcp://*:5555")
#
#     while True:
#         message = socket.recv()
#         print("Received: %s" % message)
#         socket.send("I am OK!".encode('utf-8'))
#
# import threading
# svc=threading.Thread(target=server)
# svc.setDaemon(True)
# svc.start()
#
# from concurrent.futures import ThreadPoolExecutor
#
# import zmq
# context = zmq.Context()
# socket = context.socket(zmq.REQ)
# socket.connect("tcp://localhost:5555")
#
# time.sleep(3)
#
# socket.send('Are you OK?'.encode('utf-8'))
# response = socket.recv()
# print("response: %s" % response)


# cli.gen_requirements()

# app=cli.get_flask_app()
# from flask import request
# app.config['SECRET_KEY']=os.urandom(24)
# @app.route("/")
# def hello():
#
#     respose= cli.get_flask_response()
#     respose.data='xxx'
#     respose.status=404
#     return respose
#
# app.run('0.0.0.0',port=8000,debug=True)

# states = ['New' , 'Ready', 'Waiting', 'Running','Terminated']
# transitions = [
#     {'trigger': 'Admitted', 'source': 'New', 'dest': 'Ready'},
#     {'trigger': 'Dispatch', 'source': 'Ready', 'dest': 'Running'},
#     {'trigger': 'Interrupt', 'source': 'Running', 'dest': 'Ready'},
#     {'trigger': 'InputOutputoreventwait', 'source': 'Running', 'dest': 'Waiting'},
#     {'trigger': 'InputOutputoreventcompletion', 'source': 'Waiting', 'dest': 'Ready'},
#     {'trigger': 'Exit', 'source': 'Running', 'dest': 'Terminated'}]
flow = '''
  1=New
2 = Ready
  3=        Waiting
4=Running
5=Terminated
Admitted:1->2
Dispatch:2 -> 4
Interrupt:4->2
InputOutputoreventwait:4->3
InputOutputoreventcompletion:3->2
Exit:4->5
'''
#
# flow = '''
#
# //格式如下：
# 动作1:状态1 -> 状态2
# 动作2:状态2 -> 状态3
# 动作3:状态3 -> 状态4
#
# //举例
# //通知member填写校招培训自评
# NotifyMemberToFillCampusAssignment:init->WaitForMemberFillCampusAssignment
# //member填写校招自评
# MemberFillCampusAssignment:WaitingFillCampusAssignment->FinishFillCampusAssignment
# //通知mentor提交校招生评价
# NotifyMentorToFillCampusAssignment:FinishFillCampusAssignment->WaitForMentorFillCampusAssignment
#
# '''
#
# print(cli.parse_fsm_flow(flow))




#
# from transitions import Transition,Machine
#
#
# data=cli.parse_fsm_flow(flow)
#
# class Matter(object):
#     pass
# model = Matter()
#
# machine = Machine(model=model, **cli.parse_fsm_flow(flow), initial='New')
#
# # machine.set_state('Exit')
# for i in range(1,10):
#     print(model.state)
#     print(model.Admitted())
#     print(model.Dispatch())


# dsn = 'mysq://root:mock@127.0.0.1:63307/mock'
# # d = '/Users/junqiang.zhang/repo/go/hr-api/mock/db'
# d='/tmp/test'
# conn = cli.get_mysql_connection(dsn)
# tables=['audit_log_tab']
# # tables.remove('audit_log_tab')
# # cli.dump_mysql_data(conn, dir=d, limit=0, overwrite=True,tables=tables)
#
# cli.dump_mysql_update_dml(conn,dir=d)


# conn=cli.get_sqlite_connection(":memory:")
#
# cli.sqlite_query(conn,'''
# CREATE TABLE COMPANY(
#    ID INT PRIMARY KEY     NOT NULL,
#    NAME           TEXT    NOT NULL,
#    AGE            INT     NOT NULL,
#    ADDRESS        CHAR(50),
#    SALARY         REAL
# );
# ''')
#
# cli.sqlite_query(conn,'''
# CREATE TABLE abc(
#    ID INT PRIMARY KEY     NOT NULL,
#    NAME           TEXT    NOT NULL,
#    AGE            INT     NOT NULL,
#    ADDRESS        CHAR(50),
#    SALARY         REAL
# );
# ''')
#
# sql='''
# INSERT INTO COMPANY (`ID`,`NAME`,`AGE`,`ADDRESS`,`SALARY`)
# VALUES
# (1,'jqzh''ang',30,NULL,NULL),
# (2,'hello',35,NULL,NULL);'''
# cli.sqlite_query(conn,sql)
# sql= cli.dump_sqlite_data(conn)['COMPANY']
#
# cli.sqlite_query(conn,'delete from COMPANY')
#
#
#
#
# cli.sqlite_query(conn,sql)
#
#
# print(cli.dump_sqlite_data(conn)['COMPANY'])


# cli.dump_sqlite_data(conn,'/tmp/test')

# dsn='mysql://root:mock@127.0.0.1:63307/mock'
#
# conn = cli.get_mysql_connection(dsn)
#
#
# sql='select * from step_tab limit 2000'
#
#
# data=cli.mysql_query(conn,sql)



# data=cli.load_csv2json('/tmp/test.csv')

# data=cli.load_json('/tmp/test.json')

# data=cli.excel2csv('/Users/junqiang.zhang/Downloads/data.xls',date_format='%Y-%m-%d')

# data=cli.load_csv2json(data=data)

# print(data)


# cli.dump_csv(data,'/Users/junqiang.zhang/Downloads/data1.csv')

# log.error("xxx")
#
# log.set_options(filename='/tmp/xxx.log', maxBytes=1024*1024, backupCount=3, level=logging.DEBUG,isLogConsole=True)
#
# log.error("xxx")
#
#
#
# cli.http_get('http://www.baidu.com',headers={'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'})

txt='''
Email	Suggestions
junqiang.zhang@shopee.com	"对构建部署不成功的情况加入更中智能的提示，简化解决构建的难道"
bo.feng@shopee.com	减少系统 Bug，提升易用性
zhengli.dai@shopee.com	DMS添加用户时不能实时显示，往往要多添加几次才可以成功，希望可以优化下这块功能。
zhangzhi@shopee.com	无
zhiming.qiu@shopee.com	无
junbo.wang@shopee.com	暂无
yuan.peng@shopee.com	无
lianjie.chen@shopee.com	dms落地效率很高。
qiong.cao@shopee.com	有
jiaqi.zhu@shopee.com	没啥建议，目前DMS有蛮多功能我都没用过的，例如数据服务等，不知道是否其他团队或角色有在用。
xiaohui.gong@shopee.com	希望能够将发布管理功能做的更完善，目前实际发布的时候任然还有部分操作不能在DMS完成，如合并release分支打版本tag
yujin.hu@shopee.com	用户交互的体验可以做的更好，还有就是项目管理提醒功能
ping.wu@shopee.com	无
zhen.wang@shopee.com	左上角的项目选择器可以优化一下
yingjie.lu@shopee.com	无
lun.zhang@shopee.com	代码合入检查，如果一点改动就会显示未合入，这点是不是可以优化下，不需要提醒
qingchan.li@shopee.com	暂无
shanglun.zhou@shopee.com	暂无
douguang.jin@shopee.com	服务稳定性要是在好点就好了
jianxin.qiu@shopee.com	新功能改进、流程变更通知机制很不好，通过 TL 一层层转达介绍，希望有个统一告知的渠道，不要隔一层
qiongyao.meng@shopee.com	无
wentao.yan@shopee.com	在pop up window编辑时，鼠标一旦点到window外的区域，window就消失了。很影响体验
debao.huang@shopee.com	无
yupei.ye@shopee.com	继续保持高可用性和稳定性
xiaohong.wang@shopee.com	无
hang.lu@shopee.com	增强PFB相关功能的迭代，增强实用性和易用性。
ce.lu@shopee.com	版本化自动部署发布（uat+live）
lingzhang.zeng@shopee.com	加油吧
xiaolin.qiu@shopee.com	自动检查配置项
xin.zhao@shopee.com	Recently Use (Jira, Function)
wangzhenlong@shopee.com	发版太难了，我们组连续几周都出问题。dms很难用
zhijun.hao@shopee.com	现在的使用有些复杂了
jiping.yang@shopee.com	考虑开设一下培训课程？很多功能都不会用
yi.tang@shopee.com	目前live发版的时候，回归这一项很多配置比较多余，能否简化流程。
heng.ye@shopee.com	增加科普；异常情况及时通知
ziwen.shu@shopee.com	暂无
yuyao.qin@shopee.com	需求的自定义数据统计导出功能，为方便统计，可以按照一些选项的组合进行数据的导出
guixian.fu@shopee.com	留言只是为了给DMS的小伙伴点赞💪🏻
chenming.wang@shopee.com	加强自动化测试以及压测服务的功能模块完善
chuangliu.chen@shopee.com	1. 支持更灵活的覆盖率合并(livetest & staging)
saiger.zhang@shopee.com	提升交付速度哈哈哈
ting.zhou@shopee.com	athena新版本的task,目前只有assignee有权限，权限最好可以放开
qi.qiao@shopee.com	暂无
ji.zheng@shopee.com	无
qilin.guo@shopee.com	希望把最核心的版本发布做的更加健壮，易用。
shilin.li@shopee.com	有些交互设计，初次使用时可能有较高的使用成本
yongxing.huang@shopee.com	关于项目管理，是否可以考虑增加导出成特定的项目周报模版。毕竟写模版的数据源都是可以在DMS的项目管理上看到，目前需要频繁截图、复制粘贴
zhiping.chen@shopee.com	暂时无
qiuru.chen@shopee.com	无
hanling.liu@shopee.com	PFB这个，仁者见仁智者见智吧。。。我统计了一下身边的人，大部分人认为加了pfb测试流程反而麻烦了。。。本来要测试，直接test一合一部署就行了，现在还要各种申请，而自测报告又不可能不用test环境。。。可以说是为了优化10%的人的困扰，降低了90%的人的体验
danbin.zhong@shopee.com	希望能提高 DMS 服务稳定性，特别是发布的时候
shiyao.yuan@shopee.com	希望能把集成度再做高一点，就像上栏提交的，比如把PFB相关操作整合进来
gaoyanan@shopee.com	"1、测试过程中我们会直接打开流程管理的详情页去进行bug录入，附件不能直接ctrl+v粘贴上去
2、测试过程中我们会直接打开流程管理的详情页，希望在详情页嵌入「Build」入口的按钮，方便部署操作"
huizhen.yang@shopee.com	无
xianghui.fu@shopee.com	现在每次部署，都是重新拉取镜像，生成构建环境，能否复用构建环境呢？这样可以缩短环境创建时间，而且能利用上次的构建缓存，会明显提高构建效率
yi.liu@shopee.com	简化发布计划相关的操作流程
die.lin@shopee.com	"1. dms提bug的时候，很多时候会报错。这个时候页面会自动跳转到列表。导致写的bug既没有真的提到jira上，又在本地没有保存。需要重新提一遍。很费时间。
希望如果报错的话，新增bug的窗口能不自动关闭。
2. bug列表希望直接就按照创建时间正序排序。
3. 用例一键执行。"
pengsen.huang@shopee.com	太多“规范性约束性”功能了，还不如专注于构建、部署、服务管理、项目看板这些研发团队需要的功能。
bo.zhang@shopee.com	CI，CD可以加强
hailiang.he@shopee.com	DMS和其他项目的配合相关文档
lijie@shopee.com	目前还在熟悉阶段暂时没啥建议
huaizhi.zhu@shopee.com	无
haiqin.xie@shopee.com	无
yanjie.li@shopee.com	可以添加客服机器人，遇到问题直接联系值班同学
yongjin.huang@shopee.com	整挺好
zhengzhaolong@shopee.com	我觉得目前的功能很好
mingqing.zhu@shopee.com	易用性有待加强 同时应该加上服务器状态监控及告警功能 可以实时查看水位和基础中间件的状态 能快速扩容及摘流
xiaohui.ye@shopee.com	无
sheng.zheng@shopee.com	上述
yuzhang.zhuang@shopee.com	无
chun.zhang@shopee.com	服务稳定性
xiaoming.zhu@shopee.com	无
da.liu@shopee.com	希望可以增加操作指引，增加问题反馈渠道
wenpeng.liu@shopee.com	无
hao.lilh@shopee.com	服务不是特别稳定
dongyang.luo@shopee.com	希望能出CI自定义流水线，可以方便的构建各种复杂的CI/CD流程
wenjie.fang@shopee.com	任务自动推送到 seatalk
xiang.chen@shopee.com	无
dinghao.xu@shopee.com	"1.、代码回滚
2、预构建打包环境"
minjie.lei@shopee.com	发布计划的可操作上，如一键打tag并应用到每个仓库，release发布后能自动用release的分支部署test等
feng.wuwf@shopee.com	建立一个最优实践使用教程管理系统
liancheng.hu@shopee.com	"1.希望DMS 页面中可以加一个需求采集反馈入口，然后定时把已经采纳和完成的特性列出来
2.希望有更丰富直接的user guide，最好区分角色提供（针对PJM，Dev，team leader，QA，部门负责人等等角色）
3.希望可以有issue 反馈入口，发现bug后，直接在DMS 页面中就可以提单"
ming.han@shopee.com	无
yichao.tan@shopee.com	暂无
xunchen.zheng@shopee.com	挺好的，很好用的系统。
zhixing.chen@shopee.com	null
shizhan.cheng@shopee.com	暂无
ke.cao@shopee.com	暂无
zhihong.yuan@shopee.com	自动提醒哪些应该发布了，要是接入st提醒就更好了
wuxiong.shi@shopee.com	研发交付、项目过程数据看板
yuanfeng.zhang@shopee.com	无
wenbin.li@shopee.com	暂时没有。
dezhi.cai@shopee.com	暂无
xuhao.gong@shopee.com	雅典娜上的功能是否可以集成到dms中来？
peng.yang@shopee.com	无
zebin.qiu@shopee.com	甘特图可以加一个task维度的查看视图，目前是基于开发的维度来看？
fa.chen@shopee.com	提交代码刷新延迟有点高
jian.zhang@shopee.com	没啥建议，做得很好了
shengsong.mo@shopee.com	简化使用
xianwei.yang@shopee.com	服务稳定性就好
dan.zhang@shopee.com	无
yufei.chen@shopee.com	从统一入口给dms提的需求/bug，需要有更明确的进度反馈，现在看dms的issues列表，连续几个月全部是to do 和doing，都不知道还有没有人在跟进
zhicheng.chen@shopee.com	暂无
paul.zhang@shopee.com	告警粒度到指定用户
jiayu.xie@shopee.com	取消部署后，需要等待的时间缩短
bingrong.cai@shopee.com	wu
liudi.huang@shopee.com	暂无
boyce.li@shopee.com	代码规范标准可以统一出一份
lidong.zhou@shopee.com	无
jiangtao.hu@shopee.com	服务稳定性需要提高
tianci.yu@shopee.com	甘特图如果有一些使用上的优化就好了
pengjianwei@shopee.com	无
fan.liang@shopee.com	暂时无
zhihuang.lin@shopee.com	无
chao.jiang@shopee.com	希望dms独立使用，独立记录数据完成功能；
wenli.liu@shopee.com	功能开发能突出产品亮点，考虑易操作性。同时保证稳定性
linlong.li@shopee.com	无
haoxing.yang@shopee.com	无
yinghao.xie@shopee.com	无
sen.huang@shopee.com	1
cheng.huang@shopee.com	无
yunzhu.lin@shopee.com	无
lang.liu@shopee.com	无
chenjian@shopee.com	加速部署
yifeng.hong@shopee.com	构建能快点更好
rongsong.chen@shopee.com	各规范的实际情况可预查看
bojian.xu@shopee.com	Athena平台不好用，交互太差，希望能优化；
wenjie.ou@shopee.com	无
lili@shopee.com	没有了
juming.wang@shopee.com	希望后续可以做的简单易用
qi.song@shopee.com	无
zhongqi.wen@shopee.com	暂无
ming.shi@shopee.com	无
tangjian.ouyang@shopee.com	dms自动根据jira名创建feature分支
mingjun.shen@shopee.com	没有
hui.zhu@shopee.com	合入uat、staging时自动部署
yupei.ye@shopee.com	更新功能有更好的说明，并简化操作流程，优化视觉效果
xiaofei.wang@shopee.com	无
liuyangly@shopee.com	服务部署时间过长可以进行优化
lindandan@shopee.com	支持在不同项目之间同步 jira状态
chi.zhang@shopee.com	无
jiaqiang.li@shopee.com	一些消息发送，比如合 MR 的 seatalk 消息自动发送，可否有配置选择不发送某些 seatalk 消息
peng.he@shopee.com	暂时还没有
yuli.zhang@shopee.com	（1）前端资源的回归策略和页面入口，比较急切的需求；（2）各个应用（含前端、后端）的访问量、流量监控，便于后续应用管理
chao.shen@shopee.com	无
peiyu.zhang@shopee.com	无
jin.yang@shopee.com	希望加强稳定性
kevin.shen@shopee.com	没有了
jin.xu@shopee.com	当前使用没有其他的建议
ju.gan@shopee.com	"1、希望把系统建设的长期规划跟短期规划都同步出来，部分功能研发关心，但进度没得到很好的同步跟规划
2、更多地关注工作合并（如各个系统的集成，使得核心工作能尽量在DMS中完成），流程简化类功能的开发；
3、更多关注过程质量的指标建设及分析支持，使得过程质量能更好的衡量和管控"
zhizhou.huang@shopee.com	在推广DMS使用的过程中，可以新增一些kanban内容，便于leader了解当前团队资源的投入情况，以及需求的流入、流出情况，这样也有助于leader进一步去推广DMS的规范使用。
'''


data=cli.load_csv2json(txt)


#
# q=[]
# for i in data:
#     if not i['Suggestions'] in ['无','没有了','没有','暂时没有。','暂无','wu',
#                                 '没啥建议，做得很好了','null','上述','加油吧',
#                                 '1','暂时无','整挺好','暂时还没有','留言只是为了给DMS的小伙伴点赞💪🏻',
#                                 '有','dms落地效率很高。','挺好的，很好用的系统。']:
#         d={
#             "class": "dms-221104",
#             "project": "DMS",
#             "question": i['Suggestions'],
#             "answer": i['Suggestions'],
#         "principal": "junqiang.zhang",
#         "reviser": "",
#         "accept_count": 0,
#         "reject_count": 0,
#         "qtype": 2,
#         "creator": i['Email'],
#         "update_at": None,
#         "create_at": None,
#         "delete_at": None,
#         "updated_at": "2022-10-28 14:10:14.731",
#         "created_at": "2022-10-28 14:10:14.731",
#         "deleted_at": None,
#         "sample": "",#SPCICD-6970
#         "creat_time": None,
#         "update_time": None,
#         "requirement_type": "收到",
#         "ques_state": 0,
#         "resp": "",
#         "sub_project": "DMS",
#         "requirement_class": "用户咨询",
#         "priority": "中"
#         }
#         q.append(d)
#
# print(cli.gen_insert_sql('corpus',q))
#
# for row in data:
#     sql=cli.gen_update_sql('user_tab',row,{'email':row['Email*']},['email'])
#     print(sql)


# dsn='mysql://root:root@10.12.78.42:3306/gva?charset=utf8'
#
# #get mysql connection
# conn=cli.get_mysql_connection(dsn)
# data=cli.mysql_query(conn,'select * from corpus')
#
# print(data[0])
# cli.dump_excel(data,'corpus.xlsx')

sql=r'''

select new_flow_tab.id as flow_id, jira_tab.jira_key, jira_tab.summary, '' as storypoint, jira_tab.assignee, jira_tab.reporter, from_unixtime(jira_tab.ctime) as ctime,
    case trans.prd_time when 0 then '' else from_unixtime(trans.prd_time) end prd_time,
    case trans.developing_time when 0 then '' else from_unixtime(trans.developing_time) end developing_time,
    case trans.wait_for_test_time when 0 then '' else from_unixtime(trans.wait_for_test_time) end wait_for_test_time,
    case trans.testing_time when 0 then '' else from_unixtime(trans.testing_time) end testing_time,
    case trans.wait_for_uat_time when 0 then '' else from_unixtime(trans.wait_for_uat_time) end wait_for_uat_time,
    case trans.wait_for_delivering_time when 0 then '' else from_unixtime(trans.wait_for_delivering_time) end wait_for_delivering_time,
    case trans.delivering_time when 0 then '' else from_unixtime(trans.delivering_time) end delivering_time,
    case trans.done_time when 0 then '' else from_unixtime(trans.done_time) end done_time
from jira_tab
left join (
    select *
    from flow_tab as tmp
    where id = (select min(id) from flow_tab where jira_id = tmp.jira_id and jira_key = tmp.jira_key)
) as new_flow_tab
on jira_tab.jira_id = new_flow_tab.jira_id and jira_tab.jira_key = new_flow_tab.jira_key collate utf8mb4_general_ci and jira_tab.group_id = new_flow_tab.group_id
left join (
  select flow_id,
    (max(case when handler like 'to\_prd%' then start_time else 0 end)) prd_time,
    (max(case when handler like 'to\_developing%' then start_time else 0 end)) developing_time,
    (max(case when handler = 'to_test' or handler like 'to\_test\_%' then start_time else 0 end)) wait_for_test_time,
    (max(case when handler like 'to\_testing%' then start_time else 0 end)) testing_time,
    (max(case when handler = 'to_uat' or handler like 'to\_uat\_%' then start_time else 0 end)) wait_for_uat_time,
    (max(case when handler like '%staging%' then start_time else 0 end)) wait_for_delivering_time,
    (max(case when handler like '%delivering%' then start_time else 0 end)) delivering_time,
    (max(case when handler like 'to_done%' then start_time else 0 end)) done_time
    from shopee_ssc_dms_db.flow_trans_log
    where start_time BETWEEN 1656604800 AND 1667145600
    group by flow_id
) as trans
on new_flow_tab.id = trans.flow_id
where jira_tab.ctime BETWEEN 1656604800 AND 1667145600 and jira_tab.jira_type = 1 and new_flow_tab.id is NOT NULL;
'''

# dsn='mysql://root:root@10.12.78.42:3306/gva?charset=utf8'
dsn='mysql://root:mock@127.0.0.1:63307/mock?charset=utf8'
conn_mock_db=cli.get_mysql_connection(dsn)

# cli.load_sql_to_mysql(conn_mock_db,'/tmp/db')


# cli.dump_mysql_data(conn_mock_db,'/tmp/db',limit=100000)


# print(cli.get_mysql_all_table_keys(conn_mock_db))


# def upgrade_db(conn_mock_db,conn_test_db,sql_dir):
#     cli.load_sql_to_mysql(conn_mock_db,sql_dir)
#     table_map=cli.get_mysql_all_table_keys(conn_mock_db)
#     cli.dump_mysql_data_by_keys(conn_test_db,sql_dir,table_map,overwrite=True)
#     cli.dump_mysql_ddl(conn_test_db,sql_dir)
#
#
#
# dsn='mysql://sz_sc_test2:6vJaoy5HHiPP0ms_sUnO@master.shopee_oms.mysql.cloud.test.shopee.io:6606/shopee_ssc_dms_db?charset=utf8&parseTime=True&loc=Local'
#
#
# conn_test_db=cli.get_mysql_connection(dsn)
#
# upgrade_db(conn_mock_db,conn_test_db,'/tmp/db')

md='''
# 亚马逊每日工作流程
## 订单管理
- 检查订单状态，确认是否有未发货、已取消、已退款等异常订单
- 处理订单问题，联系客户或物流商解决问题，并更新订单信息
- 发货订单，打印发货标签和发票，并将包裹交给物流商

## 库存管理
- 检查库存量，确认是否有缺货、过剩、损坏等异常库存
- 处理库存问题，联系供应商或仓库解决问题，并更新库存信息
- 补充库存，根据销售预测和采购周期，及时下单并跟踪到货情况

## 客服管理
- 检查客户消息，确认是否有咨询、投诉、评价等客户反馈
- 处理客户消息，及时回复客户并提供满意的解决方案，并记录沟通内容
- 收集客户信息，分析客户需求和痛点，并提出改进建议

## 营销管理
- 检查广告效果，确认是否有低曝光、低点击、低转化等异常广告
- 处理广告问题，调整广告预算、关键词、出价等参数，并监控效果变化
- 优化广告策略，根据市场竞争和产品特点，制定合适的广告目标和计划
'''

import re


# print(cli.convert_markdown_to_baidu_naotu(md))



# cli.load_sql_to_mysql(conn_mock_db,'/Users/junqiang.zhang/Downloads/hr')

# cli.merge_sql_files('/Users/junqiang.zhang/repo/go/dms/db','/Users/junqiang.zhang/repo/go/dms/mock/db')


dsn='mysql://root:mock@localhost:63307/mock'
conn_mock_db=cli.get_mysql_connection(dsn)
cli.load_sql_to_mysql(conn_mock_db,'/Users/junqiang.zhang/dbs/dms')