@perrylink/dsh-einvoice 0.2.0-alpha.1 → 0.2.0-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
File without changes
package/NOTICE CHANGED
File without changes
package/README.md CHANGED
@@ -1,9 +1,8 @@
1
1
  # @perrylink/dsh-einvoice
2
2
 
3
- File-level Chinese e-invoice ingest, parse and pool for DeepSeek Harness (SKU-04 S1).
3
+ File-level Chinese e-invoice (OFD/XML) ingest, parse, dedup and local archive for DeepSeek Harness.
4
4
 
5
- > **Status: file-level public demo (0.2.0-alpha.1) — PARTIAL, NOT COUNTED, NOT GA.**
6
- > This package does **not** implement OCR/scanning, tax-bureau verification/receipt, tax filing, 30-year archive compliance, or real-invoice accuracy claims. `invoice.review_queue` / `invoice.record_receipt` are local-only; the legacy names are deprecated aliases. Customer-evidence work (2 enterprises + 1 bookkeeping firm + 100 real invoices) is **permanently out of scope**. This package is public-only; its acceptance rows are `not counted`. Do not describe it as GA-ready.
5
+ > **Status: alpha / public-synthetic / partial / not counted / not GA.** No customer evidence, customer data, or production-readiness claim. All acceptance rows are `counted=false`.
7
6
 
8
7
  ## Install
9
8
 
@@ -12,60 +11,61 @@ dsh plugin --profile <profile> add @perrylink/dsh-einvoice
12
11
  dsh --profile <profile> --dump-config | grep dsh-einvoice
13
12
  ```
14
13
 
15
- The bundle inserts one Host row. It requires the base profile's `tools` and `storageDomain` services and a configured storage backend (the shipped base profile uses `storage-json`).
14
+ Requires DSH `>=0.2.1-rc.3 <0.3.0` and Node `>=24.9 <25`.
16
15
 
17
- ## Tools (S1)
16
+ <details>
17
+ <summary>中文摘要</summary>
18
+
19
+ 文件级中国电子发票(OFD/XML)入库、解析、去重与本地归档。 安装:`dsh plugin --profile <profile> add @perrylink/dsh-einvoice`。公开/合成、alpha、非 GA。
20
+
21
+ </details>
22
+
23
+ ## Tools
18
24
 
19
25
  | Tool | What it does | Risk |
20
26
  |---|---|---|
21
- | `invoice.ingest` | Ingest one local OFD/XML file, compute SHA-256, store the original locally, idempotent by bytes | R1 local write |
22
- | `invoice.parse` | Parse old OFD `Attachs/original_invoice.xml` or 数电票 `Tags/CustomTag.xml` + ObjectRef; return eight fields, lines, evidence and unknown fields | R0 |
23
- | `invoice.query` | Query the invoice pool by entity, period, lifecycle or text | R0 |
24
- | `invoice.dedup` | Group duplicates by invoice number or seller+date+total | R0 |
25
- | `invoice.review_queue` | Queue parsed invoices for manual local review; optional buyer-tax-id mismatch flags. Old `invoice.verify` is a deprecated alias. | R1 local write |
26
- | `invoice.record_receipt` | Hash a local receipt, append it, move lifecycle to receipt-recorded/quarantined; `verification_source=local_receipt`, `tax_verified=false`; old `invoice.receipt` is a deprecated alias. | R1 local write |
27
- | `invoice.redlink` | Bind a negative red invoice to its blue invoice; store deltas | R1 local write |
27
+ | `invoice.ingest` | Ingest one local OFD/XML, compute SHA-256, store the original, idempotent by bytes | R1 local write |
28
+ | `invoice.parse` | Parse old OFD `Attachs/original_invoice.xml` or 数电票 `Tags/CustomTag.xml`; return eight fields, lines, evidence and unknown fields | R0 |
29
+ | `invoice.query` | Query the local pool by entity, period, lifecycle or text | R0 |
30
+ | `invoice.dedup` | Group duplicates by invoice number or seller + date + total | R0 |
31
+ | `invoice.review_queue` | Queue parsed invoices for manual local review; optional buyer-tax-id mismatch flags | R1 local write |
32
+ | `invoice.record_receipt` | Hash a local receipt, append it and move lifecycle; `verification_source=local_receipt`, `tax_verified=false` | R1 local write |
33
+ | `invoice.redlink` | Bind a negative red invoice to its blue invoice and store deltas | R1 local write |
28
34
  | `invoice.archive` | Build a manifest + originals + receipts ZIP under the local archive directory | R1 local write |
29
35
  | `invoice.check` | Verify manifest/member hashes, missing files and traversal | R0 |
30
36
  | `invoice.restore` | Restore a verified archive into the local restore root | R1 local write |
31
37
 
32
- Client: deferred; see `CLIENT-DECISION.md`. GA: blocked by the customer evidence gate; see `GA-CHECKLIST.md`.
38
+ ## Input / output
33
39
 
34
- S3 adds red/blue matching, deterministic archive packages, check and restore. S2 verification is manual/local (no tax-bureau network call).
40
+ **Input:** one local OFD/XML invoice per `invoice.ingest` call. **Output:** a local invoice pool, review/receipt state, red/blue links, and a deterministic archive ZIP. `invoice.check` verifies the archive; `invoice.restore` restores it locally.
35
41
 
36
42
  ## Configuration
37
43
 
38
44
  | Env | Default | Meaning |
39
45
  |---|---|---|
40
46
  | `DSH_EINVOICE_HOME` | `$DSH_HOME/storages/dsh-einvoice` | originals directory and local pool base |
41
- | `DSH_EINVOICE_INPUT_ROOTS` | current working directory | `path.delimiter`-separated allowlist for `invoice.ingest` |
47
+ | `DSH_EINVOICE_INPUT_ROOTS` | `current working directory` | `path.delimiter`-separated allowlist for `invoice.ingest` |
42
48
 
43
- No credentials, no network, no IMAP/OCR in S1.
49
+ ## Limits / non-claims
44
50
 
45
- ## Limitations
51
+ - No OCR/scanning, tax-bureau verification/receipt, tax filing, 30-year archive compliance, or real-invoice accuracy claim.
52
+ - `invoice.record_receipt` is local-only: `verification_source=local_receipt`, `tax_verified=false`.
53
+ - No IMAP/email fetching, ERP posting, e-signature legal opinion, or Client UI.
54
+ - S1 accepts one local file per `invoice.ingest`; directory batches are not part of this package.
55
+ - Public samples with PII are kept outside the tarball; do not paste raw invoice output into logs or public issues.
56
+ - No customer evidence, customer data, or production-readiness claim; all fixtures are public/synthetic.
46
57
 
47
- - No IMAP/email fetching, OCR engine, tax-bureau verification, ERP posting, e-signature legal opinion, or Client UI.
48
- - S1 accepts one local file per `invoice.ingest` call; directory batches are S2.
49
- - `unknown_fields`/`field_evidence` are stored locally and may contain the same sensitive fields as the invoice; keep the pool local and do not paste raw output into logs or public issues.
50
- - Public samples with PII are kept in `.tmp` only; they are not shipped in the tarball.
58
+ ## Public sample
51
59
 
52
- ## Failure paths
53
-
54
- Errors are thrown as `E_INV_*` (`E_INV_FILE_UNREADABLE`, `E_INV_PATH_NOT_ALLOWED`, `E_INV_OFD_UNSUPPORTED`, `E_INV_XML_SCHEMA_DRIFT`, `E_INV_FIELD_MISSING`, `E_INV_DOC_NOT_FOUND`, `E_INV_DUP_CONFLICT`, `E_INV_STORAGE_FAILED`, `E_INV_UNKNOWN_IMPL`). DSH renders thrown errors as tool errors; they are not returned as successful `{ok:false}` values.
60
+ Synthetic invoice XML/OFD fixtures; `ACCEPTANCE.csv` lists 7 public checks (one is `out_of_scope`). No real invoice is included.
55
61
 
56
62
  ## Development
57
63
 
58
64
  ```sh
59
65
  pnpm install --frozen-lockfile
60
- pnpm build
61
- pnpm lint
62
- pnpm typecheck
63
- pnpm test
64
- pnpm gate:sku04
66
+ pnpm build && pnpm lint && pnpm typecheck && pnpm test && pnpm gate:sku04
65
67
  ```
66
68
 
67
- See `docs/architecture.md`, `docs/plugin-development.md`, `docs/configuration.md`, `FIXTURES.md`, `BUILD-PLAN-04.md`.
68
-
69
69
  ## License
70
70
 
71
- Apache-2.0. Third-party notices in `NOTICE` and `THIRD-PARTY-NOTICES`.
71
+ Apache-2.0. See `LICENSE`, `NOTICE`, `THIRD-PARTY-NOTICES`.
File without changes
package/cordis.patch.yml CHANGED
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@perrylink/dsh-einvoice",
3
- "version": "0.2.0-alpha.1",
4
- "description": "File-level Chinese e-invoice (OFD/XML) ingest, parse and pool for DeepSeek Harness (SKU-04 S1).",
3
+ "version": "0.2.0-alpha.2",
4
+ "description": "File-level Chinese e-invoice (OFD/XML) ingest, parse, dedup and local archive.",
5
5
  "type": "module",
6
6
  "main": "./lib/plugin/index.js",
7
7
  "types": "./lib/plugin/index.d.ts",
@@ -45,7 +45,8 @@
45
45
  "einvoice",
46
46
  "invoice",
47
47
  "ofd",
48
- "perrylink"
48
+ "perrylink",
49
+ "finance"
49
50
  ],
50
51
  "repository": {
51
52
  "type": "git",
@@ -80,5 +81,9 @@
80
81
  "@deepseek-ai/schemastery": "3.18.5",
81
82
  "@types/node": "^24.0.0",
82
83
  "typescript": "7.0.2"
84
+ },
85
+ "homepage": "https://github.com/PerryLink/dsh-einvoice#readme",
86
+ "bugs": {
87
+ "url": "https://github.com/PerryLink/dsh-einvoice/issues"
83
88
  }
84
89
  }