From cd8f368fe3fcbb6fd53ce8a12006729a8eb97d92 Mon Sep 17 00:00:00 2001 From: Claude Code Date: Mon, 30 Mar 2026 07:16:24 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E5=8F=B2=E8=AF=97?= =?UTF-8?q?=E5=92=8C=E7=94=A8=E6=88=B7=E6=95=85=E4=BA=8B=20Excel=20?= =?UTF-8?q?=E5=AF=BC=E5=87=BA=E5=92=8C=E4=B8=8B=E8=BD=BD=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 生成 epics-and-stories.xlsx 文件,包含 6 个工作表: - 功能模块总览(5 个 Epic,75 个用户故事) - Epic 1-3 的详细用户故事列表 - MCP 工具开发清单(6 个工具,14 人天) - 项目报价汇总(总计 67 人天,¥67,000) - 在文档中心添加 Excel 下载按钮: - 绿色"下载 Excel"按钮(带文件图标) - 与橙色"查看文档"按钮并列显示 - 支持直接下载 epics-and-stories.xlsx - 依赖更新: - 添加 xlsx npm 包用于 Excel 生成 - 更新 package.json 和 package-lock.json Co-Authored-By: Claude Sonnet 4.6 --- package-lock.json | 106 +++++++++++++++++++++++++- package.json | 3 +- prototype/docs-index.html | 11 ++- prototype/docs/epics-and-stories.xlsx | Bin 0 -> 29871 bytes 4 files changed, 115 insertions(+), 5 deletions(-) create mode 100644 prototype/docs/epics-and-stories.xlsx diff --git a/package-lock.json b/package-lock.json index 538d779..8d917cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,7 +5,17 @@ "packages": { "": { "dependencies": { - "markdown-it": "^14.1.1" + "markdown-it": "^14.1.1", + "xlsx": "^0.18.5" + } + }, + "node_modules/adler-32": { + "version": "1.3.1", + "resolved": "https://registry.npmmirror.com/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" } }, "node_modules/argparse": { @@ -14,6 +24,40 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "license": "Python-2.0" }, + "node_modules/cfb": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/codepage": { + "version": "1.15.0", + "resolved": "https://registry.npmmirror.com/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmmirror.com/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -26,6 +70,15 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, + "node_modules/frac": { + "version": "1.1.2", + "resolved": "https://registry.npmmirror.com/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, "node_modules/linkify-it": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", @@ -67,11 +120,62 @@ "node": ">=6" } }, + "node_modules/ssf": { + "version": "0.11.2", + "resolved": "https://registry.npmmirror.com/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", + "license": "Apache-2.0", + "dependencies": { + "frac": "~1.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", "license": "MIT" + }, + "node_modules/wmf": { + "version": "1.0.2", + "resolved": "https://registry.npmmirror.com/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/word": { + "version": "0.3.0", + "resolved": "https://registry.npmmirror.com/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/xlsx": { + "version": "0.18.5", + "resolved": "https://registry.npmmirror.com/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", + "license": "Apache-2.0", + "dependencies": { + "adler-32": "~1.3.0", + "cfb": "~1.2.1", + "codepage": "~1.15.0", + "crc-32": "~1.2.1", + "ssf": "~0.11.2", + "wmf": "~1.0.1", + "word": "~0.3.0" + }, + "bin": { + "xlsx": "bin/xlsx.njs" + }, + "engines": { + "node": ">=0.8" + } } } } diff --git a/package.json b/package.json index 2869939..6a2065a 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,6 @@ { "dependencies": { - "markdown-it": "^14.1.1" + "markdown-it": "^14.1.1", + "xlsx": "^0.18.5" } } diff --git a/prototype/docs-index.html b/prototype/docs-index.html index f8acc9f..f64cdfd 100644 --- a/prototype/docs-index.html +++ b/prototype/docs-index.html @@ -298,9 +298,14 @@ 报价 MCP 工具 - - 查看文档 - + diff --git a/prototype/docs/epics-and-stories.xlsx b/prototype/docs/epics-and-stories.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..acd8ee78df51387f38dfe6b64d381987884cbe48 GIT binary patch literal 29871 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 D)0cp> literal 0 HcmV?d00001