ED07 - Thời hạn lưu trữ & Tính bất biến: Git-Hooks, Evidence-Packages
Vấn đề
GoBD và AO yêu cầu lưu trữ dài hạn - nhưng thực tế triển khai lại thất bại:
- "10 năm? Cloud lo hết." - nhiều chủ doanh nghiệp tin rằng phần mềm cloud tự động xử lý việc lưu trữ - nhưng khi hủy tài khoản, dữ liệu thường không còn truy cập được (xem ED01 điểm đau 6–7)
- Hủy tài khoản cloud, mất dữ liệu - tài khoản phần mềm lương bị tạm dừng, các sổ lương cũ chỉ có thể kích hoạt lại với chi phí phát sinh - vi phạm GoBD (§ 146 Abs. 5 AO)
- Không thể khôi phục các phiên bản phần mềm cũ - các bản sao lưu cần phiên bản phần mềm cũ, vốn không còn cài đặt được - vi phạm GoBD (§ 147 Abs. 2 AO: "đọc được ngay lập tức")
- Thiếu tính bất biến - các bút toán bị sửa đổi sau đó mà không thể truy vết - vi phạm GoBD (Rz. 146)
- Thiếu Evidence-Packages - trong cuộc kiểm tra bên ngoài, không thể cung cấp cho kiểm toán viên một thiết bị dữ liệu (Z3) - vi phạm GoBD (§ 147 Abs. 6 AO)
- Không nắm được thời hạn lưu trữ - 10 năm? 8 năm? 6 năm? Nhiều chủ doanh nghiệp không biết thời hạn áp dụng cho tài liệu của mình
Thông điệp chính
Lưu trữ tuân thủ GoBD bằng Git có nghĩa là:
- Git-Bundles là self-contained - không cần tài khoản cloud,
không cần giấy phép phần mềm, không cần nhà cung cấp dịch vụ -
chỉ cần
git clone - Thời hạn lưu trữ được ghi lại trong repo - mỗi artifact mang
theo thời hạn của mình trong sidecar (
obsolescence+ ngày hết thời hạn) - Tính bất biến nhờ Tags và Protected Branches - các phiên bản đã phê duyệt bất biến về mặt mật mã
- Evidence-Packages cho kết thúc kỳ kế toán -
git bundle+ Static-Web (Z3+) cho kiểm toán viên (xem ED04) - Fristen-Check như một Git-Artefakt -
checks/FRISTEN_CHECK.mdcảnh báo về các thời hạn sắp đến
Compliance by Design: Lưu trữ không phải là việc bổ sung sau này - nó hình thành nhờ chính việc lựa chọn phương tiện. Git-Bundles là self-contained và tồn tại bền vững qua mọi lệnh khóa cloud, mọi lần thay đổi phiên bản phần mềm, mọi lần chấm dứt hợp đồng với nhà cung cấp dịch vụ.
Thời hạn lưu trữ theo AO § 147
Aufbewahrungsfristen"] AO --> J10["10 Jahre
§ 147 Abs. 1 Nr. 1"] AO --> J8["8 Jahre
§ 147 Abs. 1 Nr. 4"] AO --> J6["6 Jahre
§ 147 Abs. 1 Nr. 2/3/5"] J10 --> D10["Bücher, Aufzeichnungen
Inventare, Jahresabschlüsse
Eröffnungsbilanz
Arbeitsanweisungen"] J8 --> D8["Buchungsbelege
E-Rechnungen (XML)
Lohnbelege"] J6 --> D6["Handels- / Geschäftsbriefe
E-Mails (EML)
Sonstige Unterlagen"] style AO fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style J10 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style J8 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style J6 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style D10 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style D8 fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style D6 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
| Thời hạn | Loại tài liệu | Căn cứ pháp lý | Ví dụ |
|---|---|---|---|
| 10 năm | Sổ sách, ghi chép, bảng kiểm kê, báo cáo tài chính năm, bảng cân đối mở đầu, hướng dẫn công việc | § 147 Abs. 1 Nr. 1 AO | Grundbuch (JSON), tài liệu quy trình, hệ thống tài khoản |
| 8 năm | Chứng từ hạch toán | § 147 Abs. 1 Nr. 4 AO | Hóa đơn điện tử (XML), bảng tính lương, quyết định BHXH |
| 6 năm | Thư từ thương mại / kinh doanh, tài liệu khác | § 147 Abs. 1 Nr. 2/3/5 AO | Email (EML), thư từ trao đổi, ghi chú |
Quan trọng - Điểm bắt đầu thời hạn: Thời hạn bắt đầu tính từ kết thúc năm dương lịch, trong đó thực hiện bút toán ghi sổ cuối cùng, lập báo cáo tài chính năm, nhận chứng từ hoặc thực hiện ghi chép (§ 147 Abs. 4 AO). Một bút toán ngày 15.08.2026 khởi đầu thời hạn vào ngày 31.12.2026 - 10 năm kết thúc vào ngày 31.12.2036.
Tính bất biến nhờ Git
Commit"] B --> H["SHA-256-Hash
des Commits"] H --> T["Tag
(Freigabe-Marker)"] T --> P["Protected Branch
(kein Force-Push)"] P --> U["Unveränderbarkeit
GoBD Rz. 146"] K["Korrektur nötig"] K --> NC["Neuer Commit
+ Obsoleszenz-Markierung"] NC --> O["Original bleibt
nachvollziehbar"] style B fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style H fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style T fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style P fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style U fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style K fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style NC fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style O fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
| Cơ chế | Tính năng Git | Liên hệ GoBD |
|---|---|---|
| Commit-Hash | Hash SHA-256 cho mỗi commit - mọi thay đổi tạo ra hash mới | Rz. 146 (tính bất biến) |
| Tags | Điểm đánh dấu bất biến cho các phiên bản đã phê duyệt | Rz. 146 (phê duyệt) |
| Protected Branches | main được bảo vệ, không force-push, không rebase |
Rz. 146 (không ghi đè lịch sử) |
| Obsoleszenz | Các sửa lỗi dưới dạng commit mới với superseded_by |
Rz. 146 (khả năng truy vết) |
| Chữ ký GPG | Các commit được ký - chứng minh được tính xác thực | Rz. 146 (tác giả) |
Quan trọng - lịch sử tuyến tính: Chỉ lịch sử tuyến tính không ghi đè mới tuân thủ GoBD.
git rebase,git commit --amendvàgit push --forcelênmainlà bị cấm. Pre-Commit-Hook kiểm tra rằng không xảy ra force-push nào và các sửa lỗi được thực hiện dưới dạng commit mới kèm đánh dấu Obsoleszenz.
Evidence-Packages cho việc lưu trữ
z. B. FY2026"] FY --> EP["Tenant Evidence Package
(Periodenabschluss)"] EP --> GB["git bundle
self-contained Archiv"] EP --> SW["Static-Web
(Z3+ Browser)"] EP --> MF["Manifest
+ SHA-256-Checksummen"] GB --> USB["USB-Stick
oder Off-Site-Backup"] SW --> USB MF --> USB USB --> PR["Prüfer
git clone oder index.html
offline, ohne IAM"] style FY fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style EP fill:#10A987,stroke:#0A7F5C,color:#FBFAF7 style GB fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style SW fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style MF fill:#DBEAFE,stroke:#1D4ED8,color:#0F1B33 style USB fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style PR fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33
Một Tenant Evidence Package (xem ED04 Z3+) cho một năm tài chính bao gồm:
| Thành phần | Nội dung | Liên hệ GoBD |
|---|---|---|
| git bundle | Repo hoàn chỉnh (lịch sử, commit, tag) | § 147 Abs. 6 AO (thiết bị dữ liệu Z3) |
| Static-Web | Trang web điều hướng được bằng trình duyệt (HTML/PDF/JSON) | Z3+ (kiểm toán viên truy cập không cần IAM) |
| Manifest | Checksum SHA-256 cho từng tệp, chỉ mục V7GUID | Rz. 146 (toàn vẹn dữ liệu) |
| Tài liệu quy trình | Được kết xuất dưới dạng HTML | Rz. 64–91 (tài liệu quy trình) |
| Tài liệu DMS | Tất cả chứng từ (PDF, XML, EML) | § 147 Abs. 1 (lưu trữ) |
| Hợp đồng | Tài liệu trải dài qua nhiều kỳ kế toán | § 147 Abs. 1 Nr. 2/3 (thư từ thương mại) |
Cách lưu trữ an toàn nhất: Một USB chứa
git bundle+ Static-Web + Manifest là self-contained, offline, không cần IAM, không cần tài khoản cloud, không cần giấy phép phần mềm. Nó tồn tại bền vững qua mọi lần chấm dứt hợp đồng nhà cung cấp, mọi lần thay đổi phiên bản phần mềm, mọi lệnh khóa cloud. Đây là hình thức lưu trữ tuân thủ GoBD an toàn nhất - vì không tồn tại bất kỳ sự phụ thuộc nào.Tất nhiên, vẫn cần lưu ý đến an ninh vật lý của USB (két sắt, phòng cháy chữa cháy, Off-Site-Backup).
Quản lý thời hạn trong repo
checks/FRISTEN_CHECK.md
# Fristen-Check
## Vorlauf (bis 010926) - PRIO 1
- [ ] 200826: ELSTER-Organisationszertifikat anfordern
- [ ] 250826: Gefahrtarifstelle festlegen
- [ ] 300826: D&O-Versicherung GF-Haftung
## Aufbewahrungsfristen (laufend)
| Frist | Unterlagen-Typ | Endet | Status |
|---:|:---|---:|:---|
| 10 Jahre | Grundbuch FY2026 | 31.12.2036 | aktiv |
| 8 Jahre | E-Rechnungen FY2026 | 31.12.2034 | aktiv |
| 6 Jahre | E-Mails FY2026 | 31.12.2032 | aktiv |
Tự động cảnh báo khi thời hạn cận kề
(Git-Artefakt)"] FC --> P14["über 14 Tage
grün"] FC --> P7["7–14 Tage
gelb"] FC --> P0["unter 7 Tage
orange/rot"] P0 --> W["Warnung
an Unternehmer"] style FC fill:#0F1B33,stroke:#0F1B33,color:#FBFAF7 style P14 fill:#D1FAE5,stroke:#0A7F5C,color:#0F1B33 style P7 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style P0 fill:#FDBA74,stroke:#C2410C,color:#0F1B33 style W fill:#FDBA74,stroke:#C2410C,color:#0F1B33
| Loại thời hạn | Cảnh báo | Hành động |
|---|---|---|
| Thời hạn lưu trữ kết thúc | 30 ngày trước | Ghi nhận việc tiêu hủy sau khi hết hạn |
| Thời hạn cơ quan nhà nước (ELSTER, SV) | 14 ngày trước | Chuẩn bị gửi/nộp |
| Thời hiệu (§ 169 AO) | 90 ngày trước | Không tiêu hủy tài liệu |
Đòn bẩy rủi ro
| Hôm nay (chi phí thấp) | Ngày mai (chống sửa đổi) | Rủi ro được giảm thiểu |
|---|---|---|
git bundle làm kho lưu trữ self-contained |
Lưu trữ 10 năm không cần tài khoản cloud | Vi phạm GoBD do hủy tài khoản |
| Tags + Protected Branches | Tính bất biến sau khi phê duyệt | Vi phạm GoBD do sửa đổi sau đó |
| Evidence-Package (Z3+) | Kiểm toán viên truy cập không cần IAM, offline | Vi phạm GoBD do dữ liệu không thể truy cập |
| Fristen-Check như Git-Artefakt | Tránh bỏ lỡ thời hạn | Phụ thu chậm trễ theo § 152 AO |
| Đánh dấu Obsoleszenz | Sửa lỗi có thể truy vết | Các thay đổi bị che giấu |
| Commit được ký GPG | Chứng minh được tính xác thực | Việc chối bỏ tác giả |
| Static-Web (Z3+) | Điều hướng được bằng trình duyệt cho kiểm toán viên | Vi phạm GoBD do dữ liệu bất thân thiện với kiểm toán viên |
Yêu cầu đối với Harness (xem trước)
Suy ra được từ ED07:
| ID | Yêu cầu | Mức ưu tiên |
|---|---|---|
| FA-4.1 | Tệp Fristen-Check (checks/FRISTEN_CHECK.md) |
MUST |
| FA-4.2 | Các mục thời hạn với ngày, loại, Tenant, tham chiếu chứng từ | MUST |
| FA-4.3 | Tự động cảnh báo khi thời hạn < 14 ngày | SHOULD |
| FA-6.5 | Lưu trữ 10 năm thông qua Evidence-Packages (Git-Bundles) | MUST |
| FA-6.6 | Tính bất biến sau phê duyệt (Tags, Protected Branches) | MUST |
| FA-6.7 | Trình tạo Static-Web cho kết thúc kỳ kế toán (Z3+) | SHOULD |
| TA-2.4 | Pre-Commit: kiểm tra trạng thái Obsoleszenz | SHOULD |
Danh sách yêu cầu đầy đủ nằm trong Harness-Anforderungen.md.
Nguồn
- GoBD (Công văn BMF, Rz. 146 - tính bất biến, Rz. 152 - thời hạn lưu trữ)
- AO (§ 146 Abs. 5 - tính sẵn có của dữ liệu, § 147 - thời hạn lưu trữ 10/8/6 năm, § 147 Abs. 4 - điểm bắt đầu thời hạn, § 147 Abs. 6 - truy cập dữ liệu Z3)
GitCover.Ledger/docs/02-Tenant-Evidence-Package.md- Khái niệm Tenant Evidence PackageAFJD/agents/(đã ẩn danh hóa) - Khái niệm SSoT với Fristen-Check, Evidence-Packages
Cấu trúc nguồn và liên kết tham chiếu CDN
| Vai trò | Địa điểm | Mục đích |
|---|---|---|
| Primary / SSoT | git.gitcover.org/GCC | Kho lưu trữ chính tắc (ký GPG, có phiên bản) |
| Public OSS Mirror / CDN | codeberg.org/gitcover-commons | Bản sao chỉ đọc; khám phá FLOSS |
| Community Hub | github.com/gitcover-commons | Issues & Discussions; tham chiếu mã nguồn về Codeberg |
Lưu ý: Cách phân bổ này giữa nguồn, mirror và community hub phản ánh hiện trạng và có thể thay đổi. Vui lòng kiểm tra nguồn chính tắc tương ứng trên gitcover.org để biết trạng thái hiện tại.