feat: initialize Xiaobai Bookkeeping 0.9

This commit is contained in:
leefer
2026-08-01 11:01:33 +08:00
commit 3ef13b5674
100 changed files with 17503 additions and 0 deletions
+65
View File
@@ -0,0 +1,65 @@
# 小白记账架构约定
## 架构选择
采用“模块化单体 + 本地优先 + 按需云服务”。早期保持一个可安装程序和一个清晰代码库,避免微服务带来的部署与排障成本,同时为未来拆分保留稳定接口。
## 分层
### 界面层
只负责展示、输入和用户反馈,不直接实现税务计算或修改数据库。
### 应用层
组织用户操作,例如“导入流水”“确认分类”“生成申报草稿”。应用层通过模块公开接口协作。
### 领域层
保存交易、账簿、规则、申报等核心业务规则。领域逻辑不依赖页面,也不依赖具体数据库。
### 基础设施层
负责 SQLite、文件系统、加密、网络、日志、更新和 Windows 系统能力。
## 业务模块
- `identity`:用户、经营主体、授权
- `documents`:票据和原始文件
- `transactions`:流水、去重、业务分类
- `ledger`:凭证、账簿和更正记录
- `tax-rules`:有版本的确定性税务规则
- `filing`:申报草稿、确认、提交和回执
- `review`:人工复核队列和意见
- `reporting`:经营概览与报表
- `audit`:不可静默修改的操作与依据记录
- `platform`:本地存储、加密、更新、备份和恢复
## 依赖规则
- 界面只能调用应用层。
- 应用层通过模块公开接口访问领域能力。
- 一个模块不得直接修改另一个模块的数据库表。
- AI 输出必须先经过结构校验和确定性规则校验。
- 税务计算不得调用生成式模型。
- 外部 OCR、AI 和申报通道必须经过适配层,以便更换供应商。
## 数据原则
- 金额以“分”为单位保存为整数。
- 原始文件使用内容哈希去重。
- 原始交易不可覆盖,更正通过追加版本实现。
- 计算结果记录输入版本、规则版本和程序版本。
- 数据库升级必须有迁移、校验与回退方案。
- 客户端日志默认不得记录身份证号、账号、完整票据内容或访问令牌。
## 技术边界
- 桌面容器:Tauri 2
- 界面与主要业务代码:React + TypeScript
- 本地存储:SQLite;生产版本启用加密与 Windows 安全密钥保护
- 云端接口:版本化 JSON API
- 云端数据:PostgreSQL
- 桌面底层桥接:保持少量 Rust 代码,不在其中堆积业务规则
当前仓库首先实现可运行的界面与纯领域逻辑;本地数据库、Tauri 容器和云端服务按阶段接入,不用模拟实现冒充生产能力。