# timelog **Repository Path**: Feel_Again/timelog ## Basic Information - **Project Name**: timelog - **Description**: 追踪屏幕使用时间,记录、标记时间 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-02-10 - **Last Updated**: 2024-12-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 设计 ## TODO bug: 改成python后端+浏览器前端的模式,放弃pywebview 压缩打包 首页: - tag - 能写备注的时候,将编辑框弄得好用一点 - 时钟提醒功能 - 完善倒计时的展示 - 开发定时提醒 - 导出数据,加载数据,同步数据功能 将首页展示优化: - 优化底部两栏的布局 - 页面是可伸缩的,可用cdk中的拖拽功能+css的flex完成 - 切换选择tag_line/program_line的时候,布局的数据更换(pageIdx换一下就可以了) - d3js自制伸缩时间轴,主要是现在的slider不能整体拖动 - 当选择特定的行的时候,特定的block也会被点击 - 右下角是排序+截图 后台: - 分析出当天的排序 项目管理页面: - 一级的是项目,二级的是阶段 - 轻量级todo 分析页面: - 分析某段时间内最多的tag、程序用时间和比例进行排序 - 某个时间段内tag的使用时长折线图 - 某个项目各个阶段的时间占比 设置页面: - 配置截图路径、清晰度、截图保留时间 后台优化: - 是否需要抽象出service? ## 概览 功能类似ManicTime python后台运行,通过pywin32(windows)或AppleScript(mac)收集程序信息,包括应用名和标题 前端通过网页展示 移动端主要功能是记录和展示,不追踪使用情况 追踪浏览器url、vscode等编辑器的文档等文档追踪通过使用插件实现 主要功能: 打标签、时钟、项目todo、统计、生成报告 其他功能: 记账 技术选择 electron pywebview √ tauri 有很好用的脚手架 react-native proton-native neutralino nodegui flutter ## 后台 ### 目录结构 - assets - model - service - os - abc - windows - macos - instance.py - xxservice - controller - app.py - env.py ### 数据库 sqlite - program_line(字段全都不能为null nullable=False) - id Integer - program_name String(256) - title String(512) - begin_time DateTime - end_time DateTime - program_type - id Integer (自增) - name(索引) String(256) - color String(6) 如果当前的log的program_name和上一个不同的时候,表示这是一个新的log - 当有新的log被记录下来的时候 - 首先查找`program_type`是否存在对应name的记录行,如果不存在,则插入,并随机指定color - 向`program_line`添加一行,begin_time设置为现在,end_time设置为现在+timelog_interval秒 - 当是旧program的log被记录下来的时候 - 修改最后一行的end_time为现在+timelog_interval秒 - tag_line - id 自增长数字 - tag_id Integer - begin_time DateTime - end_time DateTime - note Text - tag_type - id Integer - name String(64) - color String(6) ```py db.session.query(User).filter_by(id=id).one() User.query.filter_by(id=id).one() db.session.execute(select(User.name).where(User.id == id)) ``` ### http 设置 `/setting/` 增删改查tag `/tag/` 查删app `/app/` 添加修改暂停时钟 `/clock/` ### 定时轮询 每5秒收集一次应用程序、标题、截图 ### 时钟 ```plantuml @startuml abstract class Notifier { + notify_by_window(msg: str) -> None + notify_by_toast(msg: str, title: str, duration_second: int) -> None } abstract class OS extends Notifier { } class Windows extends OS { } class MacOS extends OS { } @enduml ``` ## 前端 标签线+时间线+时钟、统计、设置、项目todo、记账 ### 标签线 Tag - 单击事件 颜色变深 - 双击事件 进入编辑页面 - 单机后按E,也是进入编辑页面 TagDialog - 这个tag - 展示Tag的起止时间 startTime, endTime 并可以修改 - name - note - 这个TagType - 展示TagType的颜色、名字 - 所有TagType展示