下班吃饭。

This commit is contained in:
Huang,Yonggang 2024-04-17 18:07:49 +08:00
parent da256f3797
commit 36985623c5
3 changed files with 350 additions and 77 deletions

View File

@ -1,5 +1,95 @@
timetype:
- name: work
- name: free
- name: discuss
- name: learn
- name: prepare
- name: sleep
- name: food
- name: check
dayplan:
1:
time:
- beginhour: 04
beginminute: 0
amount: 15
type: free
name: 休整
- beginhour: 04
beginminute: 15
amount: 60
type: prepare
name: 备餐、运动
- beginhour: 05
beginminute: 15
amount: 45
type: food
name: 早餐
- beginhour: 06
beginminute: 0
amount: 45
type: discuss
name: 会议、自习
- beginhour: 06
beginminute: 45
amount: 60
type: free
name: 休整
- beginhour: 07
beginminute: 45
amount: 60
type: work
name: 静默工作
namelink: http://simp.ly/p/xtgD4F
- beginhour: 08
beginminute: 45
amount: 45
type: free
name: 休整
- beginhour: 09
beginminute: 30
amount: 90
type: work
name: 静默工作
namelink: http://simp.ly/p/j1SspP
- beginhour: 11
beginminute: 00
amount: 180
type: food
name: 备餐、午餐午休
- beginhour: 14
beginminute: 0
amount: 30
type: work
name: 静默工作
namelink: http://simp.ly/p/8t3vlk
- beginhour: 14
beginminute: 30
amount: 30
type: work
name: 静默工作
namelink: http://simp.ly/p/5k9gJy
- beginhour: 15
beginminute: 0
amount: 60
type: free
name: 休整
- beginhour: 16
beginminute: 0
amount: 60
type: work
name: 静默工作
namelink: http://simp.ly/p/4QDThK
- beginhour: 17
beginminute: 00
amount: 120
type: food
name: 晚餐
- beginhour: 19
beginminute: 00
amount: 60
type: check
name: 讨论、整理提交
planstr: |-
| 时间片 | 时长 | 用途 |
| --- | --- | --- |
@ -22,6 +112,70 @@ dayplan:
模版一采用静默工作方式。
希望讨论的提纲发到 [huangyg@mars22.com](mailto:huangyg@mars22.com)通常安排在后面某天的早餐5:15~5:59或会议时间6:00~6:45
2:
time:
- beginhour: 04
beginminute: 0
amount: 15
type: free
name: 休整
- beginhour: 04
beginminute: 15
amount: 60
type: prepare
name: 备餐、运动
- beginhour: 05
beginminute: 15
amount: 45
type: food
name: 早餐
- beginhour: 06
beginminute: 0
amount: 45
type: discuss
name: 会议、自习
- beginhour: 06
beginminute: 45
amount: 60
type: free
name: 休整
- beginhour: 07
beginminute: 45
amount: 195
type: work
name: 工作
namelink: http://simp.ly/p/3GXNTh
- beginhour: 11
beginminute: 00
amount: 180
type: food
name: 备餐、午餐午休
- beginhour: 14
beginminute: 0
amount: 90
type: work
name: 工作
namelink: http://simp.ly/p/lsBYG9
- beginhour: 15
beginminute: 30
amount: 30
type: free
name: 休整
- beginhour: 16
beginminute: 0
amount: 60
type: work
name: 工作
namelink: http://simp.ly/p/MpcbHD
- beginhour: 17
beginminute: 00
amount: 120
type: food
name: 晚餐
- beginhour: 19
beginminute: 00
amount: 60
type: check
name: 讨论、整理提交
planstr: |-
| 时间片 | 时长 | 用途 |
| --- | --- | --- |

View File

@ -1,123 +1,141 @@
var fs = require('fs');
var yaml = require('js-yaml');
let gitpath = "../../" ;
let gitpath = "../../";
let rawrepopath = "../../raw/";
let draftrepopath = "../../draft/";
let helpstr = `
today plan: node time init 1
day log mode: node time 20240414
diff day log mode: node time -1
today log mode: node time
node time: today's draft metadata + draft markdown → day log markdown + task markdown's log
node time 1: diff day's draft metadata + draft markdown → day log markdown + task markdown's log
node time 20240417: 20240417's draft metadata + draft markdown → day log markdown + task markdown's log
node time init 1: plan 1 metadata today draft metadata
node time init: draft metadata + plan metadata today plan markdown
`;
let today = datestr();
// read the arguments
var arguments = process.argv.splice(2);
if (arguments.length > 0) {
if ((arguments.length == 2)&(arguments[0] == "init")){
//today plan: node time init 1
loadmetadata();
makedayplan(today,arguments[1]);
}else if ((arguments.length == 1)&(arguments[0].length == 8)) {
//day log mode: node time 20240414
startdate = arguments[0];
enddate = arguments[0];
loadmetadata();
makedaylog(arguments[0]);
showtables();
//makeRfile();
}else if ((arguments.length == 1)&(arguments[0].length != 8)&(!isNaN(arguments[0]))) {
// diff day log mode: node time -1
if ((arguments.length == 1) & (arguments[0] == "init")) {
// node time init: draft metadata + plan metadata → today plan markdown
var date = datestr();
makedayplan(date);
} else if ((arguments.length == 2) & (arguments[0] == "init")) {
// node time init 1: plan 1 metadata → today draft metadata
var date = datestr();
var plan = arguments[1];
makedaydraft(date,plan)
} else if ((arguments.length == 1) & (arguments[0].length == 8)) {
//node time 20240417: 20240417's draft metadata + draft markdown → day log markdown + task markdown's log
} else if ((arguments.length == 1) & (arguments[0].length != 8) & (!isNaN(arguments[0]))) {
//node time 1: diff day's draft metadata + draft markdown → day log markdown + task markdown's log
var diff = parseInt(arguments[0]);
//console.log("diff day mode. diff="+diff);
startdate = datestr(diff);
enddate = datestr(diff);
loadmetadata();
makedaylog(datestr(diff));
showtables();
//makeRfile();
}else{
} else {
console.log(helpstr);
process.exit();
}
} else {
// today log mode: node time
startdate = datestr();
enddate = datestr();
loadmetadata();
makedaylog(datestr());
showtables();
//makeRfile();
//node time: today's draft metadata + draft markdown → day log markdown + task markdown's log
var date = datestr();
makedaylog(date);
}
function makedayplan(date,plan){
// read wake time from raw repo
var rawhealthfilename = "health/d."+date+".yaml";
var rawhealthfile = yaml.load(fs.readFileSync(rawrepopath + rawhealthfilename, 'utf8'));
var waketime = rawhealthfile.wake.time;
function makedaydraft(date, plan) {
var planobj = yaml.load(fs.readFileSync("plan.yaml", 'utf8'));
var time = planobj.dayplan[plan].time;
var draftmetadata = new Object();
var drafttimearray = new Array();
draftmetadata.date = date;
draftmetadata.plan = plan;
for (var i in time) {
if (time[i].type == "work") {
var timeperiod = new Object();
timeperiod.begin = date + time[i].beginhour.toString().padStart(2, '0') + time[i].beginminute.toString().padStart(2, '0') + "00";
timeperiod.amount = time[i].amount;
timeperiod.type = "work";
timeperiod.subject = "tbd";
timeperiod.output = "draft/" + date.slice(0, 4) + "/" + date.slice(4, 6) + "/" + timeperiod.begin + ".md";
drafttimearray.push(timeperiod);
}
}
draftmetadata.time = drafttimearray;
var filename = draftrepopath + date.slice(0, 4) + "/" + date.slice(4, 6) + "/"+ "d." + date + ".yaml";
console.log(filename);
console.log(yaml.dump(draftmetadata));
fs.writeFileSync(filename, yaml.dump(draftmetadata));
}
function makedayplan(date) {
//read wake time from raw repo
//var rawhealthfilename = "health/d." + date + ".yaml";
//var rawhealthfile = yaml.load(fs.readFileSync(rawrepopath + rawhealthfilename, 'utf8'));
//var waketime = rawhealthfile.wake.time;
//console.log("wake time:"+waketime);
var planobj = yaml.load(fs.readFileSync("plan.yaml", 'utf8'));
var planstr = planobj.dayplan[plan].planstr
var draftmetafilename = draftrepopath + date.slice(0, 4) + "/" + date.slice(4, 6) + "/"+ "d." + date + ".yaml";
var draftobj = yaml.load(fs.readFileSync(draftmetafilename, 'utf8'));
var plan = draftobj.plan;
var dayplan = "# "+date+"\n\n计划\n\n根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md),今天绑定模版"+plan+"。\n\n"+ planstr;
var dayplanfilename = "time/d."+date+".md";
var planobj = yaml.load(fs.readFileSync("plan.yaml", 'utf8'));
var planstr = planobj.dayplan[plan].planstr;
var dayplan = "# " + date + "\n\n计划\n\n根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md),今天绑定模版" + plan + "。\n\n" + planstr + "\n\n---\n\n";
for(var i in draftobj.time){
var subject = draftobj.time[i].subject ;
var taskname = draftobj.time[i].name ;
var output = draftobj.time[i].output ;
dayplan = dayplan + "- task:" + subject + " [" + taskname + "](../" + gitpath + output +")\n" ;
}
var dayplanfilename = "time/d." + date + ".md";
//console.log("dayplan file name:\n"+dayplanfilename+"\ncontent:"+dayplan);
fs.writeFileSync(dayplanfilename, dayplan);
}
function loadmetadata(){
}
function makedaylog(date){
var year = date.slice(0,4);
var month = date.slice(4,6);
var draftmetadatafilename = year+"/"+month+"/d."+date+".yaml";
function makedaylog(date) {
var year = date.slice(0, 4);
var month = date.slice(4, 6);
var draftmetadatafilename = year + "/" + month + "/d." + date + ".yaml";
var draftmetadata = yaml.load(fs.readFileSync(draftrepopath + draftmetadatafilename, 'utf8'));
var plan = draftmetadata.plan ;
var plan = draftmetadata.plan;
var planobj = yaml.load(fs.readFileSync("plan.yaml", 'utf8'));
var planstr = planobj.dayplan[plan].planstr ;
var planstr = planobj.dayplan[plan].planstr;
var daylog = "# "+date+"\n\n小结\n<a id=\"top\"></a>\n根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md),今天绑定模版"+plan+"。\n\n"+ planstr+"\n\n---\n";
var daylog = "# " + date + "\n\n小结\n<a id=\"top\"></a>\n根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md),今天绑定模版" + plan + "。\n\n" + planstr + "\n\n---\n";
var indexstr = "<a id=\"index\"></a>\n" ;
var logstr = "" ;
for(t in draftmetadata.time){
var indexstr = "<a id=\"index\"></a>\n";
var logstr = "";
for (t in draftmetadata.time) {
var timelog = draftmetadata.time[t];
//console.log(typeof(timelog.begin));
var hour = timelog.begin.toString().slice(8,10);
var minute = timelog.begin.toString().slice(10,12);
var hour = timelog.begin.toString().slice(8, 10);
var minute = timelog.begin.toString().slice(10, 12);
indexstr = indexstr + "- " + hour + ":" + minute + "\t[" + timelog.name + "](#" + timelog.begin + ")\n";
var outputfilename = gitpath + timelog.output ;
var outputfilename = gitpath + timelog.output;
var outputstr = fs.readFileSync(outputfilename, 'utf8')
logstr = logstr + "\n\n[top](#top) | [index](#index)\n<a id=\"" + timelog.begin + "\"></a>\n" + outputstr;
}
var daylog = daylog + indexstr + "\n---\n" + logstr ;
var daylog = daylog + indexstr + "\n---\n" + logstr;
//console.log(daylog);
var daylogfilename = "time/d."+date+".md";
var daylogfilename = "time/d." + date + ".md";
//console.log("dayplan file name:\n"+dayplanfilename+"\ncontent:"+dayplan);
fs.writeFileSync(daylogfilename, daylog);
}
function showtables(){
}
// utils
function datestr(diff=0) {
function datestr(diff = 0) {
var theDate = new Date();
//theDate.setDate(theDate.getDate() - 1);
theDate.setDate(theDate.getDate()+diff);
theDate.setDate(theDate.getDate() + diff);
var year = theDate.getFullYear();
var month = theDate.getMonth() + 1 < 10 ? "0" + (theDate.getMonth() + 1) : theDate.getMonth() + 1;

View File

@ -1,7 +1,7 @@
# 20240417
计划
小结
<a id="top"></a>
根据[ego模型时间接口](https://gitee.com/hyg/blog/blob/master/timeflow.md)今天绑定模版2。
| 时间片 | 时长 | 用途 |
@ -11,12 +11,113 @@
| 5:15~5:59 | 45 | 早餐 |
| 6:00~6:44 | 45 | 会议、自习 |
| 6:45~7:44 | 60 | 休整 |
| 7:45~10:59 | 195 | [工作](http://simp.ly/p/3GXNTh) PSMD 条款库的代码架构 |
| 7:45~10:59 | 195 | [工作](http://simp.ly/p/3GXNTh) |
| 11:00~13:59 | 180 | 备餐、午餐午休 |
| 14:00~15:29 | 90 | [工作](http://simp.ly/p/lsBYG9) PSMD 合同的代码架构 |
| 14:00~15:29 | 90 | [工作](http://simp.ly/p/lsBYG9) |
| 15:30~15:59 | 30 | 休整 |
| 16:00~16:59 | 60 | [工作](http://simp.ly/p/MpcbHD) ego 任务统计代码 |
| 16:00~16:59 | 60 | [工作](http://simp.ly/p/MpcbHD) |
| 17:00~18:59 | 120 | 晚餐 |
| 19:00~19:59 | 60 | 讨论、整理提交 |
工作的同时可以在线讨论。
工作的同时可以在线讨论。
---
<a id="index"></a>
- 07:45 [PSMD 条款库的数据结构](#20240417074500)
- 14:00 [PSMD 条款库的代码](#20240417140000)
- 16:00 [ego 任务统计代码](#20240417160000)
---
[top](#top) | [index](#index)
<a id="20240417074500"></a>
## 7:45~10:59
PSMD 条款库的数据结构
根据[昨天](https://codeberg.org/hyg/blog/src/branch/master/release/time/d.20240416.md#20240416093000)设计的数据结构,开始编程。
- 由于metadata文件的读写同步问题log字段取消由代码自动写入markdown和html文件。
- 仔细对比COM markdown使用allx还是COM的metadata。决定allx主要起到index索引作用内部使用git库开放。COM metadata、markdown和html对外部使用。数据结构细节需要针对性微调。
- deploy针对从COM启动的需求COD针对部署过程、部分决议已经通过的情形数据结构需要针对性微调。
输出:
1. 数据结构在PSMD\data\readme.md
1. 初步设计:
### PSMD\src\term.js
node term all : term metada + termset metadata → allterm metadata
node term term id : term metadata → term markdown + html
node term termset id termset metadata → termset markdown + html
### PSMD\src\model.js
node model id COM metadata → COM markdown + html
### PSMD\src\deploy.js
node deploy id deploy metadata → deploy markdown、deploy html、全部通过后的COD metdadata
node deploy
下一步:
- 手写metadate
- 实现代码:
- term metadata + termset metadata → allterm metadata
- allterm metadata → 条款的markdown、html文件要约、合同
- COM metadata → COM markdown、COM html
- deploy metadata → deploy markdown、deploy html、全部通过后的COD metdadata
- COD metadata → COD markdown、COD html
- COD record → 修订error、term、termset的task metadata
[top](#top) | [index](#index)
<a id="20240417140000"></a>
## 14:00~15:29
PSMD 条款库的代码
手工编辑了三个term metadata
- 主分配比例p设置初始值在termset中明确修订权。
- 自修订条款
- 二级修订条款1
一个termset metadata自修订条款修订其它两个条款。
创建/PSMD/src/term.js
完成: term metadata + termsetmetadata → allterm metadata
[top](#top) | [index](#index)
<a id="20240417160000"></a>
## 16:00~16:59
ego 任务模版
调整:
- 资源分配、统计放在time.js
~~~
node time: today's draft metadata + draft markdown → day log markdown + task markdown's log
node time 1: diff day's draft metadata + draft markdown → day log markdown + task markdown's log
node time 20240417: 20240417's draft metadata + draft markdown → day log markdown + task markdown's log
node time init 1: plan 1 metadata → today draft metadata
node time init: draft metadata + plan metadata → today plan markdown
~~~
- 任务管理放在task.js
~~~
node task : today draft to stat
node task all : task metadata to alltask metadata
node task 2024 : draft to year stat
node task 20240416 : draft to day stat
node task 1 : diff date draft to stat
node task 20240101 20240401 : period draft to stat
~~~
1. 设计了plan.yaml中的time字段为后续代码提供时间段元数据。
1. 实现了:
- node time init 1: plan 1 metadata → draft metadata
- node time init: draft metadata + plan metadata → day plan markdown
下一步:
- 根据起床时间制定浮动时间表。
- node time: today's draft metadata + draft markdown → day log markdown + task markdown's log 的task markdowns log。