From 78d7afe6999a94e2b5f9bcaab270197e6f928258 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 24 Jul 2026 09:15:29 +0000 Subject: [PATCH] =?UTF-8?q?docs:=20=E7=B2=BE=E7=AE=80=20README=EF=BC=88?= =?UTF-8?q?=E7=BB=93=E6=9E=84/=E4=BE=9D=E8=B5=96/=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E7=BB=86=E8=8A=82=E7=A7=BB=E8=87=B3=20docs/i?= =?UTF-8?q?ntegration.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 86 +++++++++++++++------------------------------ docs/integration.md | 30 ++++++++++++++++ 2 files changed, 58 insertions(+), 58 deletions(-) create mode 100644 docs/integration.md diff --git a/README.md b/README.md index 2365f1f..5290437 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,6 @@ # timeTableFix - 纯前端 ICS 日历整理器 -浏览器内解析、去重、编辑 ICS 日历文件,全程无需后端服务。拖入 `.ics` -> 整理去重 -> 编辑 -> 下载。 - -## 功能 - -- 拖入即用:拖拽或选择 `.ics` 文件,浏览器内直接解析 -- 智能去重:检测事件间隔(每周 / 每两周 / 每 N 天),将扁平事件合并为 RRULE 重复事件 + EXDATE;交错的多班次自动拆分为多个系列 -- 自动保存:所有编辑即时生效,下载时兜底序列化最新状态,无需手动保存 -- 可视化编辑:编辑标题/地点/时间/重复规则,点击网格切换排除日期 -- 拆分事件:把一个重复事件按日期拆成前后两段 -- 增删事件:新增单次/重复事件,删除任意事件 -- 导出 ICS:下载整理后的 `.ics`,可直接导入日历应用 +浏览器内解析、去重、编辑 ICS 日历文件,全程无需后端服务。拖入 `.ics` -> 整理去重 -> 编辑 -> 下载。独立可维护,亦可作为 [mainPage](https://git.zikai.wang/zikai/zMainPage) 的子模块集成展示。 ## 项目结构 @@ -18,14 +8,17 @@ timeTableFix/ ├── index.html Vite 入口 ├── package.json -├── vite.config.js 构建配置(含 preview.allowedHosts) +├── vite.config.js ├── vitest.config.js ├── .npmrc npmmirror 镜像加速 +├── README.md ├── src/ -│ ├── main.js 应用挂载 -│ ├── App.vue 布局装配 +│ ├── main.js 应用挂载(i18n + 全局样式) +│ ├── App.vue 便携式根组件(嵌入与独立两用) +│ ├── i18n/ 独立 vue-i18n 实例 + 中英 locale │ ├── composables/ -│ │ └── useCalendar.js 中心 store(自动保存,无 undo) +│ │ ├── useCalendar.js 中心 store(自动保存,无 undo) +│ │ └── useLocale.js 语言辅助(直读自身 i18n 实例) │ ├── lib/ │ │ ├── weekday.js 星期常量与工具 │ │ ├── date.js 日期工具 @@ -45,59 +38,29 @@ timeTableFix/ │ ├── MonthPreview.vue 月预览 │ └── WeekPreview.vue 周预览 ├── test/ Vitest 单元测试 -│ ├── golden-org.ics 测试用例(61 事件的真实课表) -│ ├── weekday.test.js -│ ├── ical-io.test.js -│ ├── recur.test.js -│ └── organize.test.js └── docs/ 设计文档 - ├── organize-algorithm.md 间隔合并与链拆分算法详解 - └── auto-save-design.md 自动保存设计 ``` -## Ubuntu 从零安装 +## 外部依赖 -### 1. 安装 Node.js 18+ - -```bash -curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - -sudo apt-get install -y nodejs -node --version # 确认 v18.x -``` - -### 2. 克隆并安装依赖 +| 项 | 说明 | +|----|------| +| Node.js | ≥ 18 | +| ical.js | ICS 解析库(npm 依赖) | + +> 纯前端应用,无运行期后端依赖。 + +## 如何使用 ```bash +# 克隆并安装 git clone https://git.zikai.wang/zikai/timeTableFix.git cd timeTableFix npm install # 已配 npmmirror 镜像加速 -``` -### 3. 构建生产版本 - -```bash -npm run build # 产物输出到 dist/ -npm test # (可选)运行单元测试 -``` - -### 4. 集成到主页 - -本项目作为 [mainPage](https://git.zikai.wang/zikai/zMainPage) 的一个页签集成展示,采用**构建期组件集成 + git submodule**: - -- mainPage 通过 git submodule 把本项目作为子目录(`third_party/timeTableFix`)引入,并直接 `import` 本项目的 `src/App.vue` 作为懒加载路由组件。 -- 集成时共享 mainPage 的构建、依赖(`ical.js`)与 KeepAlive 缓存,不再是 iframe,无运行期割裂。 -- 本项目 `App.vue` 已做样式隔离(scoped + `ttf-` 前缀类名),设计令牌与 mainPage 对齐;全局重置仅在独立 app(`main.js`)加载,作为组件嵌入时不污染宿主。 - -本项目无独立线上入口,仅通过主页 `https://zikai.wang/timetable` 访问。升级流程见 mainPage 的 [`docs/submodule-timeTableFix.md`](https://git.zikai.wang/zikai/zMainPage/src/branch/main/docs/submodule-timeTableFix.md)。 - -## 开发 - -```bash -cd timeTableFix -npm install -npm run dev # 开发服务器 http://localhost:5173 -npm test # 单元测试(42 项) -npm run build # 构建到 dist/(独立预览用,非线上入口) +npm run dev # 开发服务器 http://localhost:5173 +npm run build # 构建到 dist/ +npm test # 单元测试(42 项) ``` ## 技术栈 @@ -107,6 +70,13 @@ npm run build # 构建到 dist/(独立预览用,非线上入口) | 框架 | Vue 3.5(SFC,`