Files
gaokao-volunteer-system/data/orders/__init__.py

107 lines
2.1 KiB
Python
Raw Normal View History

"""订单数据模块 (T4.1 + T4.2)
提供
- SQLite schemaAES-256 加密字段 + 6 态状态机 + 审计表
- Fernet 加密/解密/索引哈希派生
- 6 态订单状态机
- ``Order`` dataclass + 加密/脱敏序列化
- ``OrdersDAO`` 完整 CRUD + 事务 + 状态机守护**T4.2**
下游使用
--------
```python
import os
os.environ["GAOKAO_ORDERS_FERNET_KEY"] = "your-secret-here"
from data.orders import (
# schema
apply_schema,
# crypto
encrypt, decrypt, hash_for_index,
# state machine
assert_valid_transition, OrderStatus,
# models
Order, generate_order_id,
# DAO (T4.2)
OrdersDAO, UpsertResult, StatusChange,
OrderNotFound, DuplicateOrder,
)
```
"""
from .crypto import (
ENV_KEY_NAME,
EncryptionError,
MissingEncryptionKey,
constant_time_equals,
decrypt,
derive_key,
encrypt,
get_fernet,
hash_for_index,
)
from .dao import (
DuplicateOrder,
OrderNotFound,
OrdersDAO,
StatusChange,
UpsertResult,
)
from .models import (
DecryptPolicy,
Order,
generate_order_id,
utc_now_iso,
)
from .schema import SCHEMA_SQL, apply_schema, get_schema_version
from .state_machine import (
ALLOWED_TRANSITIONS,
InvalidStateTransition,
OrderStatus,
TERMINAL_STATUSES,
assert_valid_transition,
is_known_status,
is_terminal,
is_valid_transition,
next_states,
)
__all__ = [
# schema
"SCHEMA_SQL",
"apply_schema",
"get_schema_version",
# crypto
"ENV_KEY_NAME",
"EncryptionError",
"MissingEncryptionKey",
"constant_time_equals",
"decrypt",
"derive_key",
"encrypt",
"get_fernet",
"hash_for_index",
# state machine
"ALLOWED_TRANSITIONS",
"InvalidStateTransition",
"OrderStatus",
"TERMINAL_STATUSES",
"assert_valid_transition",
"is_known_status",
"is_terminal",
"is_valid_transition",
"next_states",
# models
"DecryptPolicy",
"Order",
"generate_order_id",
"utc_now_iso",
# DAO
"DuplicateOrder",
"OrderNotFound",
"OrdersDAO",
"StatusChange",
"UpsertResult",
]