PerryLink/dsh-payroll-audit

dsh-payroll-audit

按已核实的社保/公积金/个税参数核对工资表,逐条给出差异与依据,不代申报。

未分類auditcordisdeepseek

dsh-payroll-audit — Payroll audit

English · 简体中文 · Español · Português · हिन्दी

dsh-payroll-audit checks a payroll sheet against published social-insurance, housing-fund and individual-income-tax parameters, and reports each difference with the clause it comes from and the amount at stake.

The outcome is deliberately four-valued: pass, pass_with_gaps, review, fail. A rule whose parameter was never obtained is disabled and listed, so "no finding" is never rendered as "compliant". The parameter documents carry their own next_review_by date, and a rule whose parameter is out of date degrades to review rather than passing on last year's number.

Install

dsh plugin --profile <name> add dsh-payroll-audit
dsh --profile <name> --dump-config | grep 'dsh-payroll-audit'

What it looks like

*Workflow overview: document → rule pack → findings.*

Boundary: this is an arithmetic and field-consistency check, not a filing, an audit opinion, or a determination of the employment relationship. It does not submit anything, does not replace the social-insurance agency's own assessment, and does not tell you whether a person should be enrolled. Two consequences follow, and both are visible in the report: a rule that could not run is listed as such, and the wording never says 合规 (compliant) — only 未发现差异 (no discrepancy found among the checked items).

What it answers

  • Is a declared contribution base inside the city's floor and ceiling for the period?
  • Do the contribution amounts equal the base times the published rate?
  • Does the net pay follow from gross pay minus the deductions?
  • Which rules could not run because a parameter was never obtained?

Standards it follows

Every rule cites a document. The packs ship with their citations inline, and each citation carries the source, a locator, and a verbatim quote, so a reader can go and check it:

  • Beijing social-insurance base limits: 北京市人社局 2026 年度缴费工资基数上下限通告 (7,270 / 36,348).
  • Beijing housing fund: 5%–12%, base 2,540–36,348.
  • Shanghai: base limits, and housing fund 5%–7% — not the 5%–12% in the national regulation, which is why the range is read from the parameter file rather than hard-coded.
  • Individual income tax: cumulative withholding per 国家税务总局公告 2018 年第 61 号.

Parameters that were not obtained are declared pending with the reason and what would unblock them; the corresponding rules are listed under disabled_rules and never evaluated.

Compatibility

Surface · Status Harness · peer range >=0.1.2-rc.1 =0.2.0-0 =24.0.0 Platforms · all (pure ESM; no native code, no network, no model call)

What it does

For each row the engine evaluates the pack's derived columns (restricted arithmetic, no eval), then tests each rule's conditions. A rule that fires contributes its reason_code, severity, impact and citations. Rules are grouped into the four-state verdict described above.

Parameters are addressed by dotted keys (si.base.floor, hf.fund.employee_max, iit.extra.child_edu_monthly), resolved from the official parameter document. A value that is declared missing resolves to *nothing* rather than zero.

Configuration

Key · Default · Meaning rulesFile · rules/payroll-audit.yaml · 规则库路径

Material format

A payroll sheet is a table with one row per person. The fields the packs read include:

Field · Meaning period · 2026-07; selects the parameter validity window base_declared · Declared contribution base gross_pay, net_pay · Gross and net pay employer_pension, employee_pension · Pension contributions as paid ee_unemployment, ee_medical, ee_hf · Employee-side contributions hf_base, hf_employer_rate, hf_employee_rate · Housing fund inputs insurance_set · Enrolled schemes, comma separated

The file is read through dsh-table-ingest, so .xlsx, .xlsm and .csv all work.

Rule sources

No evidence directory: the quotations live inside the rule pack, next to the rule that uses them, and check:citations verifies each one appears verbatim in the pack's citation table.

Known limits: the two shipped packs cover Beijing and Shanghai for 2026-07 onward; an earlier period has no parameters and every rule degrades to gaps. Medical, maternity, injury-tier and minimum-wage checks are disabled because the rates were not obtained from a primary source — each is listed with what would unblock it. The engine does not file anything and does not compute a corrected payroll.

Troubleshooting

  • The plugin installs but the tool never appears: check that main resolves to lib/index.mjs and that pnpm run build produced it.
  • `dsh plugin add` rejects the package: the peer range covers 0.1.x and 0.2.x; outside it, grant an explicit exemption.
  • A rule did not run: read the skipped array.

Development

pnpm install
pnpm run typecheck
pnpm test
pnpm run build
node ../scripts/sync-shared.mjs dsh-payroll-audit

PerryLink DSH Plugin Family

This project is part of the DeepSeek Harness plugin family from PerryLink. The roster stays collapsed below so every README keeps a short first screen; expand it to see every row and its status.

Expand all plugins

Plugin · Status dsh-aqua-input-check · dsh-archive-check · dsh-auto-review · dsh-autotier · dsh-bid-ca-precheck · dsh-bid-qual-check · dsh-cert-mcp · dsh-checkpoint-rewind · dsh-click · dsh-composer-history · dsh-contract-stance · dsh-customs-doc-check · dsh-data-quality · dsh-demurrage-ledger · dsh-doublecheck · dsh-drill-script-check · dsh-eia-guide-check · dsh-emergency-plan · dsh-essay-rubric-check · dsh-evidence-check · dsh-export-ctl-check · dsh-fast · dsh-fmea-table-check · dsh-forecast-penalty · dsh-fund-research · dsh-github · dsh-gongwen-flow-check · dsh-gongwen-word-check · dsh-guard-plan-qc · dsh-hazchem-check · dsh-hazplan-check · dsh-hidden-risk-map · dsh-hs-classify · dsh-icd-rule-check · dsh-industry-research · dsh-lawcite-adapter · dsh-laya · dsh-lc-doc-check · dsh-learning-gap-check · dsh-library · dsh-local-ai · dsh-lsp-actions · dsh-mask · dsh-mcp-panel · dsh-medrec-qc · dsh-memento · dsh-nsfc-form-check · dsh-nurse-record-check · dsh-observe · dsh-origin-rvc-check · dsh-ota-review-check · dsh-output-styles · dsh-paper-doc-adapter · dsh-permission-rules · dsh-permit-report-check · dsh-pipeline-check · dsh-pleading-draft · dsh-plugin-doctor · dsh-plugin-guide · dsh-plugin-kit · dsh-plugin-upgrade · dsh-policy-brief-draft · dsh-power-loss-split · dsh-power-ticket-check · dsh-ppap-check · dsh-protest-deadline · dsh-railway-window · dsh-repair-order-qc · dsh-research-report · dsh-review-reply-check · dsh-rulefile-check · dsh-safety-brief-check · dsh-score · dsh-session-sync · dsh-site-log-check · dsh-skill-pack-security · dsh-soe-decision-check · dsh-soilwater-check · dsh-sop-sync-check · dsh-spc-gbt-adapter · dsh-talk · dsh-tender-extract · dsh-tender-matrix · dsh-test-drive · dsh-ticktick · dsh-translate · dsh-warranty-calc · dsh-budget · 🧊 FROZEN — see the repo README dsh-claude-move · 🧊 FROZEN — see the repo README dsh-defend · 🧊 FROZEN — see the repo README dsh-draw · 🧊 FROZEN — see the repo README dsh-reach · 🧊 FROZEN — see the repo README dsh-background-agents · 🚫 RETIRED — see the repo README dsh-session-pin · 🚫 RETIRED — see the repo README dsh-team-rooms · 🚫 RETIRED — see the repo README

License

Apache License 2.0 © 2026 dsh-payroll-audit contributors.