# worklog **Repository Path**: t0o-yang/worklog ## Basic Information - **Project Name**: worklog - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-10 - **Last Updated**: 2026-07-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Worklog · 工作项记录跟踪系统 个人本地单机应用。设计文档见 [DESIGN.md](./DESIGN.md)。 ## 技术栈 - **后端**:Node.js + Fastify + `node:sqlite`(Node 内置,零原生编译) - **前端**:Vue 3 + Vite + TypeScript + Tailwind CSS - **数据**:全部落在 `worklog-data/`(DB + 附件 + 模板),整目录复制即备份 ## 环境要求 - Node.js ≥ 22(用到内置 `node:sqlite`,需 `--experimental-sqlite` 标志,脚本已带) ## 快速开始 ```bash # 1. 安装依赖(纯 JS,无需 C++ 编译环境) npm install # 2. 初始化数据库(建表 + 默认周报模板 + 种子数据,幂等) npm run init-data # 3. 一条命令同时启动前后端 npm run dev ``` - 前端:http://localhost:5179 - 后端 API:http://127.0.0.1:5178 ## 目录结构 ``` worklog/ ├── server/ # 后端 │ └── src/ │ ├── db/ # schema.sql / 连接 / 初始化 │ ├── lib/ # content-hash(真编辑判定) │ ├── services/ # item-service(隐式状态机)/ stats-service │ ├── routes/ # items / stats │ └── index.js # Fastify 入口 ├── web/ # 前端(Vue3 + Vite) │ └── src/ │ ├── components/ # TreeRow 递归树 │ ├── api.ts # 后端接口封装 │ ├── types.ts # 数据类型 │ └── App.vue # 三栏布局 ├── worklog-data/ # 用户数据(git 忽略) ├── DESIGN.md # 设计文档 └── mockup.html # 视觉样张 ``` ## 已实现(骨架) - ✅ 工作项树(无限层级)、快速新建、选择查看 - ✅ 隐式状态机:写进度区自动 `todo→doing` 并记 `started_at`;填需求区不触发;原样编辑不触发 - ✅ 完成 / 回滚,状态变更留痕(status_log) - ✅ 进度%按数量逐级汇总;自身耗时 / 标签统计口径 - ✅ 需求区 + 进度区双 Milkdown 编辑器(所见即所得) - ✅ 标签管理:打标签 / 新建 / 移除 / 按标签筛选树 - ✅ 图片上传:Milkdown 内粘贴/上传 → 存 `attachments/`,DB 存路径 - ✅ 附件静态服务、周报模板表、瓶颈归因表结构 ## 待接入(后续) - 分析视图 / 周报生成页 - 移动端精简只读视图 - 树内拖拽调整父子/排序 - 瓶颈归因(DESIGN §6/§11) - 视觉细节打磨(配色 token 在 `web/tailwind.config.js`,随时可调)