跳转至

daily.py说明文档

日报引擎,解析

目前代码的健壮性非常低,需要非常多非常多前提条件才能运行。要做高容错是非常非常难得。。(尽量少的条件达到很好的效果)

重业务轻架构和重架构轻业务只能二选一

关于当前目录: 非常奇怪的是,执行python的目录被当作当前目录,比如vscode打开的文件夹,cmd所在目录等等,所以无法使用os.getcwd()获取当前目录,只能使用os.path.dirname(file)获取当前目录。

要包括【Common目录】下文件的迁移

功能说明

1. 日志目录初始化

难点:对于“周”的处理

在dailyReport目录(测试会临时更改到@override目录)下初始化日志文件夹:

1 2 3 4 5 6 7 8 9 10 11 目录设置如下:(后续更改,现在能用就行) |-- dailyReport日报 ---后续目录可以调整(自动归档) |-- archivingFile(暂时不做,归档文件) |-- 04-24-week1 |-- common |-- ... |-- 04-24.md |-- 04-25.md |-- week1周报.md |-- 05-06-week2 |-- 05-13-week3
  • 建立目录格式为mm-dd-weekx的目录
  • (因为只实习三个月,日志可以按周记录,年份固定死2024)
  • 输入的日期不合法,直接返回(参数校验在主函数)
  • 假如没有,就以本日为第一周
  • 假如存在,则获取第一个目录的日期和周数(作为基准)
  • 判断是新的一周,建立新目录
  • 判断是未来的第x周,提前建立目录

2. 日报文件初始化

自适应:如果有调休/加班 的情况,会自动识别,前提是工作流的构建是【顺序构建】(不然工作天数会乱)

关于模板传参数:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 # 通用参数 week:当前周数 day:工作天数 type:日/周(日报还是周报) ip:服务的ip curr_date:当前日期 mm-dd curr_date_badage:当前日期 mm--dd | 如果是周报则是week_x work_list:todo list,一般是今天工作重点内容概要 work_detail:todo list的详细内容 work_summary:工作总结,有default # 日报模板变量 work_brief:工作简要,有default work_class:所在项目或者分类,default为‘M-cmp多云管理平台’ work_link:日报链接(ip的子路由) # 周报模板变量 weekly_plan weekly_content weekly_summary weekly_report_data:{[ date:'本周的所有日期', content:'某天工作的内容', class:'某日的分类', link:'日报链接' ],[...],[...]}

基本逻辑

读取config.json到内存(转化为字典)->修改字典->写入新的到

TodoList

  1. 不依赖数据库(尤其是日志),现在因为周数和天数都严重依赖日志,导致很多问题的发生

日期的双因子认证机制: 同时从.dailyReportConfig.json里取和

类的成员变量(因为比较大,防止混淆):

1 self.arg_date
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 # 首次创建的配置文件 config_json = { "global": { "create_at": "", # 创建日期 "last_modify": "", # 最后修改日期 "work_day": -1, # "work_week": -1, }, "detail": [], } config_week_detail = { "name": "week1", "desc": "系统创建-首周", "date": [], # 本周的所有天 "detail":[] # 本周的每一天的情况[里面有多个detail] } config_day_detail = { "date": "month-day", "work_day": 1, "work_week": 1, "work_brief": "work_brief_default", "work_list": "work_list_default", "work_todo": "work_todo_default", "work_content": "work_content_default", "work_link": "work_link_default", }