1
0
forked from erp-dev/erp

feat: settlement first api beta

This commit is contained in:
2026-02-27 18:26:12 +08:00
parent c564b1af32
commit 86f5dab32b
16 changed files with 1854 additions and 10 deletions

View File

@@ -78,6 +78,7 @@ class DailySettlementConfig(ModelBase):
class Meta:
verbose_name = '日结配置'
verbose_name_plural = '日结配置'
db_table = 'daily_settlement_config'
```
**说明**
@@ -212,8 +213,8 @@ def run_daily_settlement(self):
from basic_info.models import Merchant
# 获取所有配置了统计模块的商户
configs = DailySettlementConfig.objects.filter(
settlement_modules__len__gt=0
configs = DailySettlementConfig.objects.exclude(
settlement_modules=[]
).select_related('merchant')
logger.info(
@@ -412,7 +413,42 @@ class SettlementConfig(AppConfig):
3. 未来如需提升性能,可以通过增加 Celery worker 数量来解决
4. Celery 本身支持任务队列和并发控制,后续可以轻松扩展
## 十三、实施步骤
## 十三、数据库优化评估PostgreSQL
### 13.1 当前结论(暂不实施)
已评估从数据库层面优化开版订单统计(索引、视图、物化视图),当前阶段暂不实施结构性优化,维持现有实现。
### 13.2 暂缓原因
1. 当前测试与功能已稳定,优先保证行为一致性
2. 生产环境要求“不可接受阻塞风险”,索引变更需专项窗口与监控保障
3. 现阶段数据规模下,统计查询尚可接受
### 13.3 后续可选优化路线(按优先级)
1. **索引优先**:为 `plate_order` 统计路径增加复合/部分索引
2. **表达式索引**:针对 `date(plate_date)` 的筛选场景
3. **物化视图**:当数据规模明显增大时,将日粒度聚合前置
### 13.4 生产安全约束
若后续执行索引优化,必须遵循:
1. 使用 PostgreSQL `CREATE INDEX CONCURRENTLY`
2. 迁移使用 `atomic = False`
3. 低峰分批执行,一次一个索引
4. 全程监控 CPU/IO/WAL、慢查询与复制延迟
### 13.5 验证要求
任何数据库优化上线前,需要在预发(接近生产数据量)完成:
1. `EXPLAIN ANALYZE` 对比
2. 回归测试通过(`settlement` + `api_v1.views.settlement`
3. 回滚脚本预演
## 十四、实施步骤
1. 创建 `settlement` 模块目录结构
2. 实现 `models.py`(配置模型)
@@ -427,7 +463,7 @@ class SettlementConfig(AppConfig):
11. 编写测试用例
12. 手动触发测试,验证结果
## 十、方案优势
## 十、方案优势
1. **独立模块**`settlement` 模块独立,职责清晰
2. **配置驱动**:每个商户可独立配置统计模块和通知渠道