# ldesign-work-log **Repository Path**: ldesign-v1/ldesign-work-log ## Basic Information - **Project Name**: ldesign-work-log - **Description**: ???? - ??/??/??????? - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-12 - **Last Updated**: 2026-07-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # @ldesign/work-log 工作日志库,提供日报、周报、月报的结构化编辑、日历标记、模板管理和统计分析。当前 workspace 包含框架无关 core 与 Vue 3 适配层。 ## 包结构 ```text libraries/work-log/ ├── packages/core # @ldesign/work-log,核心状态、模板、日历、统计、DOM renderer ├── packages/vue # @ldesign/work-log-vue,Vue 3 组件、composable、plugin └── scripts # 产物归一化与源码声明清理脚本 ``` ## 设计约定 - 核心逻辑优先落在 `packages/core`,Vue 只做生命周期、props、emit 和 v-model 适配。 - 所有组件 class 使用 `ldesign-` 前缀,主块为 `ldesign-work-log`,元素使用 BEM:`ldesign-work-log__section-textarea`。 - 样式只使用 CSS 变量。颜色来源于 `packages/color` 生成的 `--ld-*`,例如 `--ld-bg-surface`、`--ld-text-primary`、`--ld-primary-default`。 - 尺寸来源于 `packages/size` 生成的 `--ld-*`,例如 `--ld-spacing-md`、`--ld-radius-md`、`--ld-font-sm`、`--ld-layout-sidebar-width`。 - 构建产物统一包含 `dist`、`es`、`esm`、`lib`,并补齐 `dist/index.min.js`。 ## 快速使用 ### Core ```ts import { createWorkLog } from '@ldesign/work-log' const workLog = createWorkLog({ container: '#work-log', type: 'daily', showCalendar: true, showStats: true, onChange(entry) { console.log(entry) }, onSave(entry) { console.log(entry.id) }, }) workLog.setValue({ sections: [ { key: 'completed', title: '今日完成', content: '完成工作日志重构。' }, ], workHours: 8, tags: ['前端', '组件库'], }) const draft = workLog.saveDraft() const submitted = workLog.save() ``` ### Vue ```vue ``` ## 能力 - 内置日报、周报、月报、快速日报、研发日报、项目周报模板。 - 严格本地日期解析,拒绝 `2026-02-31` 这类溢出日期。 - `saveDraft()` 与 `save()` 复用当前条目 ID,避免多次保存重复生成历史日志。 - `setLogs()` 和 `addLog()` 按 ID 去重,日历与统计同步更新。 - 统计引擎支持完成率、总工时、平均工时、周统计、连续工作日、标签排行、月度填报率、工时分布和 `getInsights()` 聚合洞察。 - 模板管理器保护内置模板,返回值使用深拷贝,避免外部突变污染内部状态。 ## 构建与验证 ```bash pnpm -C libraries/work-log run type-check pnpm -C libraries/work-log run test:run pnpm -C libraries/work-log run build ``` 单包验证: ```bash pnpm -C libraries/work-log/packages/core run type-check pnpm -C libraries/work-log/packages/vue run type-check pnpm -C libraries/work-log/packages/core run test:run ``` ## 产物 core 与 Vue 包 build 后都会生成: ```text dist/index.js dist/index.min.js es/ esm/ lib/ ``` `lib/package.json` 会声明 `{"type":"commonjs"}`,避免 CJS 消费端被根包 `type: module` 影响。