Pular para o conteúdo principal
L

kingdee-portal

littlebeaverstudio/kingdee-portal

Local Kingdee Cloud (金蝶云星空) business portal for DeepSeek Harness: open the operations dashboard in the sidebar with your own Kingdee account; data stays on your machine. Needs Python 3.10+ with Flask and requests (pip install -r requirements.txt) and a local clone of this repo linked into the profile; verified on Windows with DSH Desktop only.

Instalar

dsh plugin --profile web add github:littlebeaverstudio/kingdee-portal

README

金蝶经营门户 · DSH 本地插件

License DSH Plugin Local First Python


在 DSH(DeepSeek Harness)左侧打开完整的金蝶经营门户, 用你自己的金蝶云星空账号登录。门户只监听本机,取数直连你自己的金蝶服务器; 不需要管理员开通公司、不需要公网服务、不内置任何集成账号。

  • 插件 Host 在本机拉起 127.0.0.1:8985 的 Python 服务;侧栏用 iframe 嵌入完整页面。
  • 能取到什么数据完全由金蝶的权限体系决定,门户不换账号、不做兜底。
  • 四个看板:费用报销 / 财务健康与风险 / 销售与回款表现 / 现金流;含组织筛选、下钻、趋势与 CSV 导出。
  • 报销办理与发票云配置为可选功能,写操作默认关闭。

本项目由原公网版经营门户改造而来。公网版的管理员控制台、租户开通、公司申请接口在 DSH 本地模式下禁用。

安装

前置:Python 3.10+、Node.js + pnpm、已能启动的 DSH 客户端。已在 Windows + DSH 桌面版验证。

git clone https://github.com/LittleBeaverStudio/kingdee-portal.git
cd kingdee-portal
python -m pip install -r requirements.txt

配置(可选):仓库只带 portal_config.example.json。不复制也能跑(程序会自动回退到示例配置); 需要改端口、会话时长等时再复制:

cp portal_config.example.json portal_config.json

把插件挂到 DSH profile(以 desktop 为例,路径换成你自己的 clone 目录):

dsh plugin --profile desktop add "link:D:/kingdee-portal/dsh-plugin"

等价的手工写法 —— 编辑 ~/.dsh/profiles/desktop/package.json:

{
  "dependencies": {
    "@littlebeaverstudio/kingdee-portal": "link:D:/kingdee-portal/dsh-plugin"
  },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@littlebeaverstudio/kingdee-portal"]
    }
  }
}

bundles 数组保留原有条目,只需把 @littlebeaverstudio/kingdee-portal 追加进去。然后重启 DSH, 左侧导航出现「金蝶门户」;首次点击会由插件自动启动本地服务(约 1–3 秒)。 端口 8985 同时写在 dsh-plugin/client.js、dsh-plugin/cordis.patch.yml、dsh-plugin/index.js, 改端口需三处同步,并在 profile 的 patch 行里设置 port。

🪟 侧栏嵌入:以 DSH 本地插件方式运行时(PORTAL_LOCAL_MODE=1),门户会自动放开 iframe 嵌入, 侧栏可直接渲染,无需手动改配置。若改用独立浏览器标签打开,仍受 X-Frame-Options 保护。

实验性:仓库根 package.json 也支持 dsh plugin --profile desktop add github:LittleBeaverStudio/kingdee-portal。 该方式尚未在干净机器上验证;若加载异常,请改用上面的本地 link 方式。

🧪 DSH 版本兼容

已在 DSH 桌面版(Windows) 验证;侧栏注入依赖 @deepseek-ai/dsh-client-ui-sidebar-right 与 @deepseek-ai/dsh-client-locale(见 dsh-plugin/cordis.patch.yml)。若你的 DSH 版本过旧、 缺少上述内置包,dsh plugin add 可能报缺依赖——请升级 DSH 到包含这两个包的版本后再装。

🔄 更新插件

cd <clone 目录>
git pull
dsh plugin --profile desktop update "@littlebeaverstudio/kingdee-portal"

若用 github: 方式安装,重新执行 dsh plugin --profile desktop add github:LittleBeaverStudio/kingdee-portal 即可覆盖。更新后重启 DSH。

不装 DSH 也能用

python -X utf8 scripts/serve_local.py --port 8985 --no-warmup

浏览器打开 http://127.0.0.1:8985。填公司名称、金蝶服务器地址、账号、密码即可; 多账套环境在「连接设置」里选择或填写账套,单账套自动识别。

配置说明

项默认值说明
host / port127.0.0.1 / 8985只监听回环
allow_http / block_private_networkfalse / true服务器地址默认要求 HTTPS,并拒绝私网地址
allow_local_embeddingfalse仅 DSH 本地模式按嵌入策略放行,非本地模式不继承
enable_write_opsfalse报销办理写操作总开关
warmup_auto / debugfalse / false关闭后台预热与调试
expense_skill_dir空可选;也可用环境变量 PORTAL_EXPENSE_SKILL_DIR

不要把自己的 portal_config.json(含服务器地址与账套)、账号密码写进仓库。示例配置里 server_url、acct_name、scheme_id 均为空。

🔒 隐私与数据

🛡️ 一句话版:门户只监听 127.0.0.1,账号密码只在内存里,不向作者或任何第三方上传经营数据。

🧩 数据📍 存在哪里⏳ 保留多久📡 会外发吗
🔑 金蝶账号密码🧠 仅 Flask 进程内存服务重启即清空❌ 从不
🍪 会话令牌🪟 浏览器 sessionStorage关闭页面会话即失效❌ 从不
💾 运行库 state.db / state.key🏠 .portal-state-dsh/ 或 ~/.kingdee-portal/直到你手动删除❌ 从不
🧾 发票云授权🏠 本机、按公司隔离直到你手动删除⚠️ 仅调用你配置的发票云接口时
📊 看板业务数据🧠 进程内存 + 本机缓存会话结束 / 缓存到期✅ 只与你自己的金蝶服务器通信

✅ 我们做的:🔐 凭据只在内存 · 🏠 运行数据留在本机 · 🧹 退出登录清理后台任务 · 🚪 写操作默认关闭 🚫 我们不做的:❌ 无遥测 / 埋点 / 崩溃上报 · ❌ 不上传账号密码或业务数据 · ❌ 无第三方统计 SDK · ❌ 不内置集成账号

📄 完整版见 PRIVACY.md · 🛠️ 安全边界见 SECURITY.md

发布前检查与测试

python -X utf8 scripts/check_public.py
python -m unittest discover -s tests -p 'test_*.py' -v

check_public.py 扫描真实公司名、密钥、运行库、审计日志与开发机绝对路径; 发布白名单之外的内容不应进入公开仓库。浏览器回归脚本在 tests/ui_*.py,使用合成数据, 不连接真实金蝶。真实金蝶登录链路已在本机跑通;他机首次安装、真实发票云上传、全岗位权限尚未验证。

目录

路径作用
dsh-plugin/DSH 插件(Host 进程管理 + 侧栏客户端 + patch + 多语言)
app.py / store.pyFlask 服务与本地会话、任务、配置存储
metrics_*.py四个看板的取数口径
portal_actions.py / vendor/helpers/报销办理、发票云(部分来自 kingdee-data-exporter)
static/ templates/前端
scripts/本地服务入口与发布检查

许可证

小河狸工作室非转售许可 1.0。vendor/helpers/ 中部分实现来自 kingdee-data-exporter,见 vendor/kingdee-data-exporter-LICENSE.md。

Plugins relacionados