diff --git a/.lark-cli/cache/remote_meta.meta.json b/.lark-cli/cache/remote_meta.meta.json new file mode 100644 index 0000000..92bc9cd --- /dev/null +++ b/.lark-cli/cache/remote_meta.meta.json @@ -0,0 +1 @@ +{"last_check_at":1777167003} \ No newline at end of file diff --git a/.lark-cli/config.json b/.lark-cli/config.json new file mode 100644 index 0000000..36f3bb2 --- /dev/null +++ b/.lark-cli/config.json @@ -0,0 +1,14 @@ +{ + "apps": [ + { + "appId": "cli_a967d6ddb8781bd8", + "appSecret": { + "source": "keychain", + "id": "appsecret:cli_a967d6ddb8781bd8" + }, + "brand": "feishu", + "lang": "zh", + "users": [] + } + ] +} diff --git a/.lark-cli/update-state.json b/.lark-cli/update-state.json new file mode 100644 index 0000000..eae52cf --- /dev/null +++ b/.lark-cli/update-state.json @@ -0,0 +1 @@ +{"latest_version":"1.0.19","checked_at":1777167005} \ No newline at end of file diff --git a/.tools/package-lock.json b/.tools/package-lock.json new file mode 100644 index 0000000..9e02bf0 --- /dev/null +++ b/.tools/package-lock.json @@ -0,0 +1,89 @@ +{ + "name": ".tools", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@larksuite/cli": "^1.0.19" + } + }, + "node_modules/@clack/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.2.0.tgz", + "integrity": "sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.2.0.tgz", + "integrity": "sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.2.0", + "fast-string-width": "^1.1.0", + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@larksuite/cli": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@larksuite/cli/-/cli-1.0.19.tgz", + "integrity": "sha512-ST0SNcYBBV9vM2IPDMOyNushwU8rhQuQ+fbDYzJHdjCdg8o4mZikhGAucTN+4rsKN4oOgguTNjpS3p8VlGwYig==", + "cpu": [ + "x64", + "arm64" + ], + "hasInstallScript": true, + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@clack/prompts": "^1.2.0" + }, + "bin": { + "lark-cli": "scripts/run.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/fast-string-truncated-width": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-1.2.1.tgz", + "integrity": "sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-1.1.0.tgz", + "integrity": "sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^1.2.0" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.1.6.tgz", + "integrity": "sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^1.1.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + } + } +} diff --git a/.tools/package.json b/.tools/package.json new file mode 100644 index 0000000..38676cc --- /dev/null +++ b/.tools/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@larksuite/cli": "^1.0.19" + } +} diff --git a/.toolstest/package-lock.json b/.toolstest/package-lock.json new file mode 100644 index 0000000..7cdf521 --- /dev/null +++ b/.toolstest/package-lock.json @@ -0,0 +1,89 @@ +{ + "name": ".toolstest", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "@larksuite/cli": "^1.0.19" + } + }, + "node_modules/@clack/core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/core/-/core-1.2.0.tgz", + "integrity": "sha512-qfxof/3T3t9DPU/Rj3OmcFyZInceqj/NVtO9rwIuJqCUgh32gwPjpFQQp/ben07qKlhpwq7GzfWpST4qdJ5Drg==", + "license": "MIT", + "dependencies": { + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@clack/prompts": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@clack/prompts/-/prompts-1.2.0.tgz", + "integrity": "sha512-4jmztR9fMqPMjz6H/UZXj0zEmE43ha1euENwkckKKel4XpSfokExPo5AiVStdHSAlHekz4d0CA/r45Ok1E4D3w==", + "license": "MIT", + "dependencies": { + "@clack/core": "1.2.0", + "fast-string-width": "^1.1.0", + "fast-wrap-ansi": "^0.1.3", + "sisteransi": "^1.0.5" + } + }, + "node_modules/@larksuite/cli": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/@larksuite/cli/-/cli-1.0.19.tgz", + "integrity": "sha512-ST0SNcYBBV9vM2IPDMOyNushwU8rhQuQ+fbDYzJHdjCdg8o4mZikhGAucTN+4rsKN4oOgguTNjpS3p8VlGwYig==", + "cpu": [ + "x64", + "arm64" + ], + "hasInstallScript": true, + "license": "MIT", + "os": [ + "darwin", + "linux", + "win32" + ], + "dependencies": { + "@clack/prompts": "^1.2.0" + }, + "bin": { + "lark-cli": "scripts/run.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/fast-string-truncated-width": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/fast-string-truncated-width/-/fast-string-truncated-width-1.2.1.tgz", + "integrity": "sha512-Q9acT/+Uu3GwGj+5w/zsGuQjh9O1TyywhIwAxHudtWrgF09nHOPrvTLhQevPbttcxjr/SNN7mJmfOw/B1bXgow==", + "license": "MIT" + }, + "node_modules/fast-string-width": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-string-width/-/fast-string-width-1.1.0.tgz", + "integrity": "sha512-O3fwIVIH5gKB38QNbdg+3760ZmGz0SZMgvwJbA1b2TGXceKE6A2cOlfogh1iw8lr049zPyd7YADHy+B7U4W9bQ==", + "license": "MIT", + "dependencies": { + "fast-string-truncated-width": "^1.2.0" + } + }, + "node_modules/fast-wrap-ansi": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/fast-wrap-ansi/-/fast-wrap-ansi-0.1.6.tgz", + "integrity": "sha512-HlUwET7a5gqjURj70D5jl7aC3Zmy4weA1SHUfM0JFI0Ptq987NH2TwbBFLoERhfwk+E+eaq4EK3jXoT+R3yp3w==", + "license": "MIT", + "dependencies": { + "fast-string-width": "^1.1.0" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "license": "MIT" + } + } +} diff --git a/.toolstest/package.json b/.toolstest/package.json new file mode 100644 index 0000000..38676cc --- /dev/null +++ b/.toolstest/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "@larksuite/cli": "^1.0.19" + } +} diff --git a/memory/2026-04-26.md b/memory/2026-04-26.md index d73843f..93cdbf2 100644 --- a/memory/2026-04-26.md +++ b/memory/2026-04-26.md @@ -450,3 +450,83 @@ - 风险与影响: - 当前计算输入 DEM 由调用方提供(3x3 高程矩阵),尚未接入自动 DEM 切片检索;生产精度仍依赖上游 DEM 分辨率与采样质量。 - 杆塔缓冲区风险等级已引入地形暴露权重,可能导致部分杆塔风险分级相对旧口径发生变化。 + +## Work Log - 飞书需求管理多维表格(下拉版)创建(2026-04-26) + +- 背景: + - 用户要求“重新创建一个需求管理多维表格,能够用下拉的用下拉”。 + +- 本次执行: + - 通过 `lark-cli base` 新建 Base:`需求管理多维表格`。 + - 将默认表重命名为 `需求管理`。 + - 字段下拉化(`type=select`)并配置选项: + - `优先级`:`P0/P1/P2/P3` + - `状态`:`待开始/进行中/评审中/已完成/阻塞` + - `需求类型`:`功能需求/缺陷修复/优化改进/技术债务` + - `需求来源`:`产品/运营/客户反馈/内部改进` + - `负责人`:`程凯/待分配` + - `风险等级`:`低/中/高/紧急` + - `进度`:`0%/25%/50%/75%/100%` + - `标签`(多选):`前端/后端/测试/接口/高优先` + - 文本/日期字段:`需求ID`、`需求名称`、`开始日期`、`截止日期`、`备注`(保留 `附件` 字段)。 + - 写入 3 条示例需求记录,验证下拉与日期写入均正常。 + +- 验证: + - `HOME=/tmp lark-cli base +field-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tbleJyrScpTGtRdR` -> 下拉字段及选项已生效。 + - `HOME=/tmp lark-cli base +record-batch-create ...` -> 返回 `ok: true`,成功写入 3 条记录。 + - Base 地址:`https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd` + +- 风险与影响: + - 飞书 `field-update` 接口存在频控(`800004135`),本次采用“删除默认字段 + 重建字段”兜底策略完成配置。 + - 保留了系统默认 `附件` 字段;若需极简字段集,可后续删除该列。 + +## Work Log - 需求多维表优先级改为英文四档(2026-04-26) + +- 背景: + - 用户要求将“优先级”下拉改为 `Urgent/High/Medium/Low`。 + +- 本次改动: + - 多维表:`https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd` + - 表:`需求管理`(`tbleJyrScpTGtRdR`) + - 字段 `优先级`(`fld02jCtl7`)下拉选项更新为:`Urgent`、`High`、`Medium`、`Low`。 + - 将现有 3 条示例记录优先级同步为: + - `REQ-001` -> `High` + - `REQ-002` -> `Medium` + - `REQ-003` -> `Urgent` + +- 验证: + - `HOME=/tmp lark-cli base +record-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tbleJyrScpTGtRdR --limit 20` + - 返回数据中三条记录优先级分别为 `High/Medium/Urgent`。 + +- 风险与影响: + - 飞书 `record-batch-update` 存在短时限频(`800004135`),本次通过串行+间隔重试完成。 + +## Work Log - 需求多维表新增 issue 关联表(2026-04-26) + +- 背景: + - 用户要求将主表名改为“需求列表”,并在同一 Base 中新增“issue列表”,且 issue 可关联到需求。 + +- 本次改动: + - Base:`https://my.feishu.cn/base/Xpsgb3jEUaZHlksbnY1cEXMrnpd` + - 表改名: + - `需求管理` -> `需求列表`(`tbleJyrScpTGtRdR`) + - 新增表: + - `issue列表`(`tblkI3rjksLcef67`) + - `issue列表` 字段: + - `Issue标题`(text) + - `状态`(select: Open/In Progress/Resolved/Closed) + - `严重级别`(select: P0/P1/P2/P3) + - `指派给`(select: 程凯/待分配) + - `截止日期`(datetime) + - `备注`(text) + - `关联需求`(link -> `tbleJyrScpTGtRdR`) + - 新增 2 条 issue 示例,并已关联到需求记录: + - `登录页按钮样式偏差` -> `REQ-001` + - `导出接口返回字段缺失` -> `REQ-002` + +- 验证: + - `HOME=/tmp lark-cli base +table-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd` -> 表列表包含 `需求列表` 与 `issue列表`。 + - `HOME=/tmp lark-cli base +record-list --as user --base-token Xpsgb3jEUaZHlksbnY1cEXMrnpd --table-id tblkI3rjksLcef67 --limit 20` -> `关联需求` 字段返回目标需求 `record id`。 + +- 风险与影响: + - 当前 `link` 字段为单向关联(`bidirectional=false`);需求表未自动新增反向聚合列。如需在需求表中直接看 issue 明细,可后续补一个双向/反向展示字段。