# timeTableFix - 纯前端 ICS 日历整理器 浏览器内解析、去重、编辑 ICS 日历文件,全程无需后端服务。拖入 `.ics` -> 整理去重 -> 编辑 -> 下载。独立可维护,亦可作为 [mainPage](https://git.zikai.wang/zikai/zMainPage) 的子模块集成展示。 ## 项目结构 ``` timeTableFix/ ├── index.html Vite 入口 ├── package.json ├── vite.config.js ├── vitest.config.js ├── .npmrc npmmirror 镜像加速 ├── README.md ├── src/ │ ├── main.js 应用挂载(i18n + 全局样式) │ ├── App.vue 便携式根组件(嵌入与独立两用) │ ├── i18n/ 独立 vue-i18n 实例 + 中英 locale │ ├── composables/ │ │ ├── useCalendar.js 中心 store(自动保存,无 undo) │ │ └── useLocale.js 语言辅助(直读自身 i18n 实例) │ ├── lib/ │ │ ├── weekday.js 星期常量与工具 │ │ ├── date.js 日期工具 │ │ ├── colors.js 事件配色 │ │ ├── uuid.js UUID 生成(含非安全上下文回退) │ │ ├── ical-io.js ICS 文本 <-> plain model │ │ ├── recur.js RRULE 网格展开 │ │ ├── organize.js 间隔去重 + 链拆分算法 │ │ ├── event-factory.js 事件构造工厂 │ │ └── split.js 事件拆分逻辑 │ └── components/ │ ├── HeaderBar.vue 顶栏:整理/导入/下载 │ ├── DropZone.vue 拖拽/选择文件 │ ├── EventList.vue 侧栏事件列表 │ ├── EventDetail.vue 编辑表单 + 拆分 │ ├── OccurrenceGrid.vue 排除日期网格 │ ├── MonthPreview.vue 月预览 │ └── WeekPreview.vue 周预览 ├── test/ Vitest 单元测试 └── docs/ 设计文档 ``` ## 外部依赖 | 项 | 说明 | |----|------| | Node.js | ≥ 18 | | ical.js | ICS 解析库(npm 依赖) | > 纯前端应用,无运行期后端依赖。 ## 如何使用 ```bash # 克隆并安装 git clone https://git.zikai.wang/zikai/timeTableFix.git cd timeTableFix npm install # 已配 npmmirror 镜像加速 npm run dev # 开发服务器 http://localhost:5173 npm run build # 构建到 dist/ npm test # 单元测试(42 项) ``` ## 技术栈 | 项 | 选择 | |----|------| | 框架 | Vue 3.5(SFC,`