🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

质疑投诉期限台账核对 PerryLink/dsh-protest-deadline

DeepSeek Harness
PerryLink26 天前有提交已提供中文文档扫描:含敏感能力

逐行核对质疑台账日期与期限,只提示差异不下结论

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/9 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add PerryLink/dsh-protest-deadline
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · tool
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 1 处,展示前 1 条)
  • 读取本地文件
    samples/quickstart/run.mjs:7
    const material = await readFile(join(here, 'input', "PD-001-unsafe.json"), 'utf8')
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-package-manifest@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 逐行核对台账日期
  • 提示期限差异
  • 不作定性结论

质疑与投诉期限台账核对:依据《政府采购质疑和投诉办法》(财政部令第94号)。仅提示差异,不作出定性结论。

README

由 DeepSeek 最新模型翻译生成
dsh-protest-deadline — 查询与投诉登记日期及期限检查 dsh-protest-deadline 读取一份质疑与投诉台账——项目表头加上每行一条质疑记录——并检查这类台账在机械层面能约束什么:质疑提出日期或答复日期是否记录在案,日期能否解析、先后顺序是否成立,答复是否落在台账自己写明的期限内,每个状态是否出自你自己的词表,质疑编号是否唯一,以及表头是否写明采购项目。 它能回答什么 | 你问 | 它回答 | | 某行把质疑提出日期和答复日期都留空。这会被报出来吗? | 会。PD-001 要求每行至少填 raisedAt 和 replyAt 之一,并报出两者皆空的行。它只检查两者中是否填了一个,不检查质疑是否在法律期限内提出:那需要供应商知道受损的日期、送达日期,还要算工作日,台账通常不带这些。 | | 答复日期写得比提出日期还早。这能查出来吗? | PD-002 逐行比较提出日期和答复日期,当 raisedAt 晚于 replyAt 时报出 raisedAt;同一天不算晚。解析不了的值——比如 2026年3月15日,而 2026-03-15、2026/3/15 或 2026-03-15 09:30 都能读——会在那一行报出,而不是悄悄放过。这条规则只排台账里这两个日期的先后。 | | 我们的答复发出时已经过了台账里记的答复期限。算逾期吗?
展开完整文档(README 剩余 1 节)
dsh-protest-deadline — 查询与投诉登记日期及期限检查

dsh-protest-deadline 读取一份质疑与投诉台账——项目表头加上每行一条质疑记录——并检查这类台账在机械层面能约束什么:质疑提出日期或答复日期是否记录在案,日期能否解析、先后顺序是否成立,答复是否落在台账自己写明的期限内,每个状态是否出自你自己的词表,质疑编号是否唯一,以及表头是否写明采购项目。

它能回答什么

| 你问 | 它回答 |
| 某行把质疑提出日期和答复日期都留空。这会被报出来吗? | 会。PD-001 要求每行至少填 raisedAt 和 replyAt 之一,并报出两者皆空的行。它只检查两者中是否填了一个,不检查质疑是否在法律期限内提出:那需要供应商知道受损的日期、送达日期,还要算工作日,台账通常不带这些。 |
| 答复日期写得比提出日期还早。这能查出来吗? | PD-002 逐行比较提出日期和答复日期,当 raisedAt 晚于 replyAt 时报出 raisedAt;同一天不算晚。解析不了的值——比如 2026年3月15日,而 2026-03-15、2026/3/15 或 2026-03-15 09:30 都能读——会在那一行报出,而不是悄悄放过。这条规则只排台账里这两个日期的先后。 |
| 我们的答复发出时已经过了台账里记的答复期限。算逾期吗? | PD-003 不写死天数,也说不了「逾期」:它拿实际答复日期和台账自己 replyDueAt 列里写的期限比,所以报出问题意味着「这和你记录的期限对不上」。该列为空就没有可比对象,规则会在 skipped 里报出自己,而不是假定一个期限。 |
| 状态列写着已答复,却没有任何回复。为什么? | PD-005 拿状态和你配置的词表比,而 values 出厂为空,所以按原样交付时规则会在 skipped 里报出自己——选哪些值是你机构的事,不是引擎的事——而不是默默放过。把 values 填成你自己的清单(待答复、已答复、已投诉、已撤回……),任何不在清单上的值都会逐行报出。它只检查值在不在清单上,从不检查质疑该怎么处理。 |
| 表头写了项目,却没有表头级的提出日期。是缺东西吗? | 不是。PD-006 只检查表头里的采购项目:它的 fields 默认是 [project],因为提出日期通常是逐行的列。如果你的表单确实在表头写了它,规则自己的说明写着把 fields 设为 [project, raisedAt]。项目缺失会报在表头上,不报在某一行上。 |
| 同一查询编号出现在两行。 | PD-007 报告第二行并指出第一行,比较编号时忽略空白字符。重复通常意味着同一查询被登记了两次,或者编号被复制了——区分这两种情况需要人来判断。如果台账没有编号列,规则会报告不适用,而不是放行。 |

遵循的标准

| 文档 | 编号 | 被哪些规则引用 |
| 《政府采购质疑和投诉办法》 | 财政部令第94号(2017 年 12 月 26 日公布,自 2018 年 3 月 1 日起施行;六章四十五条。⚠️ 本令第四十五条同时废止财政部令第20号《政府采购供应商投诉处理办法》) | PD-001, PD-002, PD-003, PD-004, PD-005, PD-006, PD-007 |

边界: 本插件检查的是质疑与投诉台账中台账能够机械约束的部分——关键日期是否记录、能否解析并前后相继、答复是否落在台账自身写明的期限内、状态是否来自你的词表、查询编号是否唯一。它不判断质疑是否按时提出、是否应当受理、是否应当驳回。这些判断需要采购人或财务部门、送达日期,以及工作日口径,而台账通常不记录这些。

⚠️ 引用依据来自哪里

《政府采购质疑和投诉办法》(财政部令第94号) 已获取并逐字阅读——全文六章四十五条——rules/evidence/clause-verification.md 记录了引用的内容:
第十条(质疑在 7 个工作日内提出)、第十三条(答复在 7 个工作日内作出)、第十七条(投诉在答复期满后 15 个工作日内提出)、第二十一条(5 个和 8 个工作日)、第二十六条(30 个工作日)以及第四十二条,该条确定了两条计算规则——「期间开始之日,不计算在期间内」,以及最后一日为节假日时顺延。第四十五条还废止了财政部令第20号,因此本规则包从不引用它。

规则的 excerpt 字段仍写着「本次未取得」,且每条规则仍为 warn 或 info。 本插件检查的是内部台账的日期和列;该办法规范的是采购人和财务部门的行为。把空白列称为「应在 7 个工作日内答复」的 direct 违反,等于把记录缺失包装成违规。政府采购法本身未获取。

本插件不硬编码任何天数,文本本身现在证明了原因。 期限以工作日计,第四十二条将起始日排除在计算之外,并在遇节假日时顺延截止日,第十七条从答复期满而非答复日起算投诉时钟——而台账通常只记录日历日期。因此 PD-003 将实际答复日期与台账自身 答复期限 列中写明的截止日比较,该列为空时则报告自身处于 skipped。其结论说的是「这与您记录的期限不一致」,而非「答复逾期」。

兼容性

| 层面 | 状态 |
| Harness | Peer 范围 >=0.1.2-rc.1 <0.2.0 \|\| >=0.2.0-0 <0.3.0 — 已验证可接受 0.2.0-rc.2 和 0.2.1-alpha.1。故意不声明 engines.dsh:它没有读取方,也无法拒绝宿主 |
| Node | ^22.19.0 || >=24.0.0 |
| 平台 | 全部(纯 ESM;无原生代码、无网络、无模型调用) |
| 工具模式 | 在 native、ptc 和 both 下均可工作;按年登记请用 ptc |

它做什么

注册 protest_deadline 工具。它读取一份质疑与投诉登记表——项目表头加上每条质疑一行——应用版本化规则包,返回报告。

| 规则 | 检查 | 严重级别 | 依据类型 |
| PD-001 | 记录了提出日期或答复日期 | warn | direct |
| PD-002 | 答复日期不早于提出日期 | warn | direct |
| PD-003 | 答复落在记录的期限内 | info | local |
| PD-004 | 投诉日期不早于答复日期 | warn | direct |
| PD-005 | 状态来自你的词表(默认关闭) | info | local |
| PD-006 | 登记表写明其采购项目 | warn | principle |
| PD-007 | 质疑编号在登记表中唯一 | warn | principle |

安装

dsh plugin --profile <name> add dsh-protest-deadline
dsh --profile <name> --dump-config | grep 'dsh-protest-deadline'

配置

| 键 | 类型 | 默认值 | 说明 |
| rulesFile | string | rules/protest-deadline.yaml | 规则包路径,相对于包根目录 |
| disabledRules | string[] | [] | 停止运行的规则 id;每个都会出现在 skipped 中 |
| onlyRules | string[] | [] | 只运行这些规则 id;留空则运行全部规则 |
| skipNotes | string | "" | 追加到每条 skipped 原因后的备注 |
| timeoutMs | number | 120000 | 协作式工具超时预算 |

值得了解的规则级参数:

- PD-003 读取登记表的 答复期限 / replyDueAt 列。按财政部令第94号(工作日)算出该期限,写入台账;插件不会自行推导。
- PD-005 的 values —— 你的状态词表,例如 [待答复, 已答复, 已投诉, 已处理完毕, 已撤回]。
- PD-002 和 PD-004 比较日期对;若还要检查答复到投诉方向,再加一条规则,用 field: replyAt 和 notAfterField: complaintAt。

材料格式

工具接受 JSON 或 YAML:

project: 某某设备采购项目 projectNo: ZC-2026-018 agency: 某某采购代理机构 rows:
- { 序号: ZY-2026-001, 质疑人: 某某科技有限公司, 质疑提出日期: 2026-03-02,
答复期限: 2026-03-09, 实际答复日期: 2026-03-06, 投诉日期: 2026-03-12, 处理状态: 已答复 }

列名匹配不区分大小写,并忽略空格、下划线和连字符;登记表自身的列名会保留,因此发现项会指明它读取的列。日期可以是 2026-03-02 或 2026-03-02 09:30。

规则来源

规则数据位于 rules/protest-deadline.yaml。规则包的表头完整说明引用缺口,每条规则里的 note 会重复该规则的关键部分。加载时的守卫通常强制要求「摘录必须是至少八个字符的真实引文」,但它分不清引文和描述——所以这个包靠头部、每条规则的 note,以及一个断言每个 excerpt 都允许这个缺口的测试来兜底。

故障排查

- PD-003 报告自己跳过。 登记簿没有记录答复期限。这是有意为之:法定期限按工作日计算,插件不会把日历日期换算成工作日。
- PD-003 触发了,但我认为答复是及时的。 登记簿的 答复期限 与实际答复日期不一致。要么期限列算错了,要么答复日期错了。
- PD-005 从不运行。 它的词表是空的;用你登记簿的状态值填进去。
- PD-002 在我能读懂的日期上触发。 读取器接受 2026-03-02 和 2026-03-02 09:30;2026年3月2日 会被有意报告为无法解析。
- 插件装上了,但工具始终不出现。 检查 main 是否解析到 lib/index.mjs,以及 pnpm run build 是否生成了它;main 写错会让加载器静默跳过入口。
- dsh plugin add 以不兼容为由拒绝这个包。 peer 范围覆盖 0.1.x 和 0.2.x;如果你的运行时不在其中,显式授予豁免: dsh plugin --profile <name> allow-version dsh-protest-deadline@0.1.0 --dsh-version <runtime> --accept-risk
- check 报告 manifest-peers 失败。 静态检查器比对的是一个硬编码的 peer 范围,它早于 0.2 系列。运行时会在安装时强制 peer 兼容性,所以声明的范围才是正确的;这是 dsh-plugin-dev 里已知的上游问题。

开发

pnpm install
pnpm run typecheck # tsc --noEmit
pnpm test # vitest, the shared table-plugin suite plus paired fixtures
pnpm run build # tsdown -> lib/index.mjs + lib/index.d.mts
node ../scripts/sync-shared.mjs dsh-protest-deadline # refresh src/shared from ../_shared

这个插件是纯数据的:src/model.ts 声明表结构,共享套件提供读取器和检查引擎,规则包声明每一项检查。

许可证

Apache License 2.0 © 2026 dsh-protest-deadline contributors.
预览分享卡片长什么样 ↓PerryLink/dsh-protest-deadline
分享 · DeepSeek Harness Hub
PerryLink/dsh-protest-deadline

逐行核对质疑台账日期与期限,只提示差异不下结论

这是你的仓库?认领条目

回到顶部