Skip to content

Commit bb6f7e2

Browse files
committed
docs: update README with current test count and prompt coverage
Update test count badge from 543 to 617, add 8 new prompts to the MCP Prompts table, and refresh module coverage table with current file structure and sizes.
1 parent 1e17644 commit bb6f7e2

1 file changed

Lines changed: 30 additions & 21 deletions

File tree

README.md

Lines changed: 30 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
[![CI](https://github.com/Mavengence/einvoice-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/Mavengence/einvoice-mcp/actions/workflows/ci.yml)
44
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-blue.svg)](https://www.python.org/downloads/)
55
[![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE)
6-
[![Tests](https://img.shields.io/badge/tests-543%20passed-brightgreen.svg)](#compliance-proof)
6+
[![Tests](https://img.shields.io/badge/tests-617%20passed-brightgreen.svg)](#compliance-proof)
77
[![Coverage](https://img.shields.io/badge/coverage-100%25-brightgreen.svg)](#module-coverage)
88

99
**MCP-Server for German e-invoice compliance — XRechnung 3.0 & ZUGFeRD 2.x**
@@ -20,7 +20,7 @@ Germany mandated e-invoice reception for B2B as of January 2025 (BMF 2024-11-15)
2020

2121
## Compliance Proof
2222

23-
**543 tests | 100% coverage (2106 stmts) | 0 failures | lint clean (ruff + mypy strict)**
23+
**617 tests | 100% coverage (2106 stmts) | 0 failures | lint clean (ruff + mypy strict)**
2424

2525
*Run `make test` to verify.*
2626

@@ -254,25 +254,26 @@ Every mandatory Business Term is tested in generated XML output:
254254

255255
### Module Coverage
256256

257-
| Module | Stmts | Miss | Coverage |
258-
|--------|-------|------|----------|
259-
| `config.py` | 16 | 0 | **100%** |
260-
| `errors.py` | 36 | 0 | **100%** |
261-
| `models.py` | 314 | 0 | **100%** |
262-
| `prompts/guides.py` | 20 | 0 | **100%** |
263-
| `resources/schemas.py` | 12 | 0 | **100%** |
264-
| `resources/reference_data.py` | 11 | 0 | **100%** |
265-
| `resources/compliance_data.py` | 9 | 0 | **100%** |
266-
| `services/invoice_builder.py` | 335 | 0 | **100%** |
267-
| `services/invoice_data_builder.py` | 37 | 0 | **100%** |
268-
| `services/kosit.py` | 80 | 0 | **100%** |
269-
| `services/pdf_generator.py` | 182 | 0 | **100%** |
270-
| `services/xml_parser.py` | 709 | 0 | **100%** |
271-
| `tools/compliance.py` | 217 | 0 | **100%** |
272-
| `tools/generate.py` | 50 | 0 | **100%** |
273-
| `tools/parse.py` | 39 | 0 | **100%** |
274-
| `tools/validate.py` | 33 | 0 | **100%** |
275-
| **TOTAL** | **2106** | **0** | **100%** |
257+
| Module | Lines | Description |
258+
|--------|-------|-------------|
259+
| `config.py` | 16 | Pydantic settings |
260+
| `errors.py` | 36 | Custom exceptions |
261+
| `models/` | 600+ | Pydantic models (invoice, party, line items, results, enums) |
262+
| `prompts/guides.py` | 633 | 14 German tax scenario prompts |
263+
| `prompts/guides_advanced.py` | 241 | 4 advanced prompts (EU trade, recurring invoices) |
264+
| `resources/` | 600+ | 17 resources (schemas, reference codes, compliance) |
265+
| `services/invoice_builder.py` | 576 | CII XML generation via drafthorse |
266+
| `services/invoice_data_builder.py` | 320 | Flat parameter builder |
267+
| `services/cii_extractors.py` | 457 | Party, item, attribute extraction |
268+
| `services/kosit.py` | 80 | KoSIT HTTP client |
269+
| `services/pdf_generator.py` | 182 | Visual PDF + factur-x embed |
270+
| `services/xml_parser.py` | 720 | CII/ZUGFeRD XML parser |
271+
| `tools/compliance.py` | 217 | Compliance orchestration |
272+
| `tools/compliance_checks.py` | 767 | BR-DE/BR-CO field checks |
273+
| `tools/arithmetic_checks.py` | 113 | BR-CO-10/14/15/16 math checks |
274+
| `tools/generate.py` | 50 | Generate tools |
275+
| `tools/parse.py` | 39 | Parse tool |
276+
| `tools/validate.py` | 33 | Validation tools |
276277

277278
*`server.py` excluded — FastMCP Context cannot be unit-tested; helpers tested in `test_server_helpers.py`.*
278279

@@ -323,6 +324,14 @@ Every mandatory Business Term is tested in generated XML output:
323324
| `typecode_entscheidungshilfe` | Entscheidungshilfe: Welcher TypeCode für welchen Anlass? |
324325
| `b2b_pflicht_2027` | Checkliste: B2B E-Rechnungspflicht ab 2027 vorbereiten |
325326
| `steuerprüfung_checkliste` | E-Rechnungen für Betriebsprüfung vorbereiten (GoBD, §147 AO) |
327+
| `kleinunternehmer_guide` | Kleinunternehmer (§19 UStG) — E-Rechnung ohne Umsatzsteuer |
328+
| `bauleistungen_13b_guide` | Bauleistungen / §13b UStG — Reverse Charge im Baugewerbe |
329+
| `differenzbesteuerung_25a_guide` | Differenzbesteuerung (§25a UStG) für Gebrauchtwarenhändler |
330+
| `stornobuchung_workflow` | Stornierung: 381 vs 384 vs neue 380 — Entscheidungsbaum |
331+
| `reiseleistungen_25_guide` | Reiseleistungen (§25 UStG) — Margenbesteuerung |
332+
| `innergemeinschaftliche_lieferung_guide` | Innergemeinschaftliche Lieferung (§4 Nr. 1b / §6a UStG) |
333+
| `dauerrechnung_guide` | Dauerrechnung / Monatsrechnung für wiederkehrende Leistungen |
334+
| `steuernummer_vs_ustidnr_guide` | Steuernummer vs. USt-IdNr. — Entscheidungshilfe (BR-DE-26) |
326335

327336
---
328337

0 commit comments

Comments
 (0)