ED08 - 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ế lại thất bại trong việc triển khai:

Thông điệp cốt lõi

Lưu trữ tuân thủ GoBD với Git có nghĩa là:

  1. Git-Bundles là self-contained - không cần tài khoản đám mây, 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
  2. Thời hạn lưu trữ được ghi nhận trong Repo - mỗi artifact đều mang thời hạn của nó trong Sidecar (obsolescence + ngày hết hạn)
  3. Tính bất biến nhờ Tags và Protected Branches - các phiên bản đã phê duyệt không thể thay đổi về mặt mật mã
  4. Evidence-Packages cho kết thúc kỳ - git bundle + Static-Web (Z3+) cho kiểm tra viên (xem ED05)
  5. Kiểm tra thời hạn dưới dạng Git artifact - checks/FRISTEN_CHECK.md cả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ờ 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 chặn đám mây, mọi thay đổi phiên bản phần mềm, mọi việc 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

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD AO["AO § 147
Thời hạn lưu trữ"] AO --> J10["10 năm
§ 147 Abs. 1 Nr. 1"] AO --> J8["8 năm
§ 147 Abs. 1 Nr. 4"] AO --> J6["6 năm
§ 147 Abs. 1 Nr. 2/3/5"] J10 --> D10["Sổ sách, ghi chép
Bản 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"] J8 --> D8["Chứng từ ghi sổ
Hóa đơn điện tử (XML)
Chứng từ tiền lương"] J6 --> D6["Thư từ thương mại / kinh doanh
Email (EML)
Tài liệu khác"] 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ơ sở pháp lý Ví dụ
10 năm Sổ sách, ghi chép, bản 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 Sổ địa bạ (JSON), tài liệu quy trình, hệ thống tài khoản
8 năm Chứng từ ghi sổ § 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 năm đó thực hiện lần ghi 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

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD B["Bút toán
Commit"] B --> H["Hash SHA-256
của Commit"] H --> T["Tag
(điểm đánh dấu phê duyệt)"] T --> P["Protected Branch
(không Force-Push)"] P --> U["Tính bất biến
GoBD Rz. 146"] K["Cần điều chỉnh"] K --> NC["Commit mới
+ đánh dấu lỗi thời"] NC --> O["Bản gốc vẫn
truy vết được"] 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 quan đến 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 viết lại)
Lỗi thời Điều chỉnh dưới dạng Commit mới với superseded_by Rz. 146 (Khả năng truy vết)
Chữ ký GPG Commit được ký - tính xác thực có thể chứng minh Rz. 146 (Tác giả)

Quan trọng - lịch sử tuyến tính: Chỉ có lịch sử tuyến tính không viết lại mới tuân thủ GoBD. git rebase, git commit --amendgit push --force trên main bị cấm. Pre-Commit-Hook kiểm tra rằng không có Force-Push nào xảy ra và các điều chỉnh được thực hiện dưới dạng Commit mới với đánh dấu lỗi thời.

Evidence-Packages cho việc lưu trữ

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart TD FY["Năm tài chính
vd. FY2026"] FY --> EP["Tenant Evidence Package
(kết thúc kỳ)"] EP --> GB["git bundle
kho lưu trữ self-contained"] EP --> SW["Static-Web
(trình duyệt Z3+)"] EP --> MF["Manifest
+ checksum SHA-256"] GB --> USB["USB
hoặc Off-Site-Backup"] SW --> USB MF --> USB USB --> PR["Kiểm tra viên
git clone hoặc index.html
ngoại tuyến, không cần 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 ED05 Z3+) cho một năm tài chính chứa:

Thành phần Nội dung Liên quan đến GoBD
git bundle Repo đầy đủ (lịch sử, Commit, Tag) § 147 Abs. 6 AO (phương tiện lưu trữ 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 tra 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 (Tính toàn vẹn)
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 xuyên kỳ § 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, ngoại tuyến, không cần IAM, không cần tài khoản đám mây, không cần giấy phép phần mềm. Nó tồn tại bền vững qua mọi việc chấm dứt hợp đồng với nhà cung cấp dịch vụ, mọi thay đổi phiên bản phần mềm, mọi lệnh chặn đám mây. Đây là hình thức lưu trữ tuân thủ GoBD an toàn nhất - vì không có bất kỳ phụ thuộc nào.

Tất nhiên, cần lưu ý đến sự an toàn 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 sắp đến

%%{init: {'theme':'base','themeVariables':{'primaryColor':'#FBFAF7','primaryTextColor':'#0F1B33','primaryBorderColor':'#6B7280','lineColor':'#6B7280'}}}%% flowchart LR FC["Kiểm tra thời hạn
(Git artifact)"] FC --> P14["trên 14 ngày
xanh lá"] FC --> P7["7–14 ngày
vàng"] FC --> P0["dưới 7 ngày
cam/đỏ"] P0 --> W["Cảnh báo
cho chủ doanh nghiệp"] 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 (ELSTER, SV) 14 ngày trước Chuẩn bị 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 (an toàn kiểm toán) Rủi ro được giảm thiểu
git bundle dưới dạng kho lưu trữ self-contained Lưu trữ 10 năm không cần tài khoản đám mây Vi phạm GoBD do chấm dứt tài khoản
Tags + Protected Branches Tính bất biến sau phê duyệt Vi phạm GoBD do sửa đổi sau đó
Evidence-Package (Z3+) Kiểm tra viên truy cập không cần IAM, ngoại tuyến Vi phạm GoBD do dữ liệu không thể truy cập
Kiểm tra thời hạn dưới dạng Git artifact Tránh bỏ lỡ thời hạn Phụ phí chậm trễ § 152 AO
Đánh dấu lỗi thời Điều chỉnh truy vết được Sửa đổi ngầm
Commit ký bằng GPG Tính xác thực có thể chứng minh Phủ nhận tác giả
Static-Web (Z3+) Điều hướng bằng trình duyệt cho kiểm tra viên Vi phạm GoBD do dữ liệu không thân thiện với kiểm tra viên

Yêu cầu Harness (xem trước)

Có thể suy ra từ ED08:

ID Yêu cầu Mức ưu tiên
FA-4.1 Tệp kiểm tra thời hạn (checks/FRISTEN_CHECK.md) MUST
FA-4.2 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 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ỳ (Z3+) SHOULD
TA-2.4 Pre-Commit: Kiểm tra trạng thái lỗi thời SHOULD

Danh sách yêu cầu đầy đủ trong Harness-Anforderungen.md.

Nguồn

Topology nguồn và các liên kết tham chiếu CDN

Vai trò Địa điểm Mục đích
Primary / SSoT git.gitcover.org/GCC Nơi 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; FLOSS-Discovery
Community Hub github.com/gitcover-commons Issues & Discussions; tham chiếu mã nguồn trên 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.