# 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` 影响。