dsh-jira
Verified@zhaoyuzhen99/dsh-jira · v0.3.0 · MIT · Web UI
DSH Web GUI plugin「工作任务」: Host-authoritative board with Jira Filter inbox, local drafts, ledger tasks, task-scoped Git workflow, and project-level GitLab observer columns.
Install
dsh plugin add @zhaoyuzhen99/dsh-jira Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Published to npm without a public repository. Inspect the package contents before installing.
Tags
Creators
Readme
dsh-jira
English | 中文
DSH Web GUI 插件 工作任务(包名 @zhaoyuzhen99/dsh-jira):Host 权威看板,含侧栏入口、中列看板、账本与真实会话执行、Jira Filter 待规划(转为待办/转回)、本地草稿,以及完成态任务驱动的 Git 查阅(提交 / Pipeline)。独立仓,验收后最终替换「任务看板」入口。
是什么
P1 — 看板壳(已完成):
- 侧栏入口「工作任务」
- 中列看板:待规划 / 待办 / 进行中 / 已完成 / 已失败
- Host 账本:
$DSH_HOME/work-task/ledger-v2.json - 同源 API:
/api/work-task/* - 创建 / 更新 / 移列 / 归档 / 执行 / 重跑;新建默认进待办
- 设置卡由产品按 volatile Host Config 自动渲染(enabled / announceToAgent / preventIdleSleep / Jira / GitLab / rotate)
- P0 凭据 seam 探测保留
P2 — Jira 待规划(已完成):
- Server/DC REST v2
GET /rest/api/2/search?jql=filter=<id>+ Basic Auth,仅filter=<id>不追加 assignee cleanDescription/ JOYP 优先排序与 AionUi 一致- 待规划列展示远端 Jira Issue 和本地草稿;失败保留上次成功快照并标记 stale
claim-inbox→ 待办(prompt=标题+清洗后描述,持久化source);unclaim-inbox允许todo/backlog:无历史则删除,有执行/Git/审计则保留为无来源本地草稿并解除占用;running 不可转回
P3 — GitLab 不是待规划来源:
- 待规划只含 Jira Filter + 本地草稿,不列出、不认领 GitLab Issue。
- GitLab 凭据和项目设置仍用于观察列与任务级 Git(关联 / 建分支 / 建 MR)。
P4 — 项目级 Git 观察(已完成,看板默认不展示):
- Host 仍按「观察代码库」勾选轮询各仓默认分支的 commits / pipelines / MRs(只读)。这是后台观察,不是看板默认两栏,也不轮询任务 issue 分支。
- 看板默认只显示业务列,右侧 Git 收起。完成状态卡片点 Git查阅 后,Git 提交 / 状态作为查阅面板从右侧滑入,只显示该任务
localCommits;当前行高亮,其它行「未查阅」。「请求提交」先合origin/dev再 push,冲突则提示「分支代码冲突,请解决代码冲突。」push 成功后再展开 Git 状态。详见 观察列与配置迁移、git-view-redesign-requirements.html。 - 任务详情:六个仓共用一个分支名,每个仓独立关联 / 提交 / MR / 合并状态。
- 看板是 行道布局:每个 Issue 固定行号,待办 / 进行中 / 完成 / Git 查阅与待规划同一行;已流转实线、未到达点线(例如 JOYP-15199 在第 3 行,认领后仍在第 3 行)。设计稿见
dsh.pen看板 v2。
P5–P8 — 看板、任务级 Git 与状态治理(当前):
- 中英 i18n、语义属性、无障碍 focus 环、
prefers-reduced-motion - 任务级 Git 关联 / 建分支 / 建 MR(P6–P7):六个仓共用一个分支名,每个仓独立提交与 MR。「建议完成」永不自动结算(D7)。操作者用「标记完成」(
complete-task)确认:只改本地账本+审计,不写回 Jira 状态。 - Host 审计时间线(认领、转回、结算、Git 关联/写/合并、重新打开、归档、确认完成、经办人写回)。运行中可「取消执行」。
- 已认领的 GitLab Issue(历史账本)按 iid 定点补拉(每轮 ≤20)。closed 更新远端快照并提示冲突;404 不进「来源不再匹配」(待规划不再含 GitLab Issue)。
安装
从仓库安装(开发调试)
cd dsh-jira
pnpm install --ignore-scripts
pnpm run build
dsh plugin --profile web add link:$(pwd)
重启 dsh web 使 cordis.patch.yml 生效。开发期可与旧「任务看板」并存;P5 验收后通过 aggregate 移除旧入口。
配置(命名空间 work-task)
| 键 | 默认 | 含义 |
|---|---|---|
enabled |
true |
总开关 |
announceToAgent |
false |
是否写入 system prompt |
preventIdleSleep |
false |
有执行时阻止空闲睡眠 |
jiraServerUrl |
"" |
公司内网 Jira 基地址(如 http://192.168.20.218:9091) |
jiraFilterId |
"" |
已保存过滤器 ID;待规划展示其全部 Issue |
jiraMaxResults |
50 |
Jira 最大条数(1-200) |
allowJiraAssigneeWrite |
false |
是否允许在 Issue 详情修改 Jira 经办人;Host 强制校验,脱敏事件写入任务审计时间线与 Host 日志 |
gitlabEndpoint |
"" |
公司内网 GitLab 基地址 |
gitlabObservedProjects |
[] |
观察代码库(group/repo 列表)。空且已填 endpoint 时 Host 视为现场六库全开 |
gitlabProjectId |
"" |
遗留键。UI 已去掉默认项目;仅当观察列表为空时作为唯一观察仓 |
trustedProxyHosts |
[] |
反向代理白名单 |
proxyTokenEnv |
"DSH_WORK_TASK_PROXY_TOKEN" |
代理 token 环境变量 |
凭据引用(值不进 settings,走 dsh-credentials):
DSH_JIRA_USERNAME/DSH_JIRA_PASSWORD(Basic Auth)DSH_GITLAB_TOKEN(PRIVATE-TOKEN)
连接测试:POST /api/work-task/test-jira 与 /test-gitlab(loopback + Sec-Fetch-Site 围栏,响应不含秘密)。
安全模型
- 账本与 Jira/GitLab 取数及凭据解析均在 Host;浏览器仅访问同源
/api/work-task/*的脱敏 snapshot。 - 仅允许内网 endpoint:
http/https、无 userinfo/fragment、精确 Host allowlist 或私网 CIDR(10/8、172.16/12、192.168/16、fc00::/7)、DNS 二次校验、redirect:'error'、公网 SaaS(gitlab.com、atlassian.net…)硬阻断。 - 每次请求前校验内网,不记录
Authorization/PRIVATE-TOKEN,不提供公网默认值,禁止rejectUnauthorized: false。 - Jira/GitLab 默认只读;仅当
allowJiraAssigneeWrite=true时,Host 允许修改 Jira 经办人。「标记完成」不写回 Jira 状态。经办人写回的成功和失败均写入 Host 日志与账本审计时间线(匹配的已认领任务可见),事件不含凭据和目标用户名。其他看板动作只改本地账本。
已知限制
- Cron 定时 UI 来自 fork 复制,P1-P4 不要求调度迁移(C13)。
- 设置界面不假设可调
credentials.set;密钥通过 DSH 凭据管理器写入(C8)。 - Host 仍可约每 30 秒轮询各仓默认分支,但这些观察卡片不再默认画在看板。完成态 Git 查阅使用账本
localCommits。任务级刷新按已关联仓的共用分支名(commits 带ref_name,MRstate=all且按源分支,pipelines 按ref)。SSE 仍按 revision 全量重拉/state。Inbox 无「加载更多」UI(Host 分页至 200 + 截断提示)。 - 「测试 GitLab 连接」仍读取遗留
gitlabProjectId;只勾观察代码库时测试按钮可能报未配置,观察列本身以 Token + endpoint + 观察列表为准。 - 完成状态里执行失败或已归档的卡片仍打开完整任务详情。成功卡打开改动复核(按仓
.ts/.cs文件、补充修改 follow-up 上一会话);仓头「提交代码」只在该仓建{Issue}{标题去空格}_{时间戳}分支并本地 commit,不 push,成功后关闭弹窗。完成态点「Git查阅」后看板才出现该仓「Git 提交」卡片;点「请求提交」先合origin/dev再 push,冲突则提示解决。GitLab 网页出现的「Create merge request」(/-/merge_requests/new?source_branch=…)不是看板已建 MR。push 后「Git 状态」按该分支叠 Pipeline / 单元测试:未检测 / 检测失败 / 正在编译(黄)/ 未通过(红)/ 通过(绿);仅「通过」时出现「请求合并」,点了才建 MR(目标dev)。结算时未扫到 diff 的旧账本会显示「未检出文件改动」。看板「成功」不等于 View 模块已 gulp。
许可证
MIT.