- Add new Access table mappings for transmitter contracts (25/26年变送器) and tube bending workshop (弯管车间烘洗) - Add auto-create target table from Access schema when table does not exist (db_utils + init_full_sync) - Implement per-primary-key verification in incremental sync: verify deletes are gone and inserts are present before marking Synced=1 - Add post-commit re-verification with Synced rollback on failure for automatic retry - Batch IN clause parameters to stay under SQL Server limit - Adjust poll interval from 5s to 30s - Improve IDENTITY_INSERT cleanup in finally blocks Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
132 lines
3.9 KiB
Python
132 lines
3.9 KiB
Python
# config/app_settings.py
|
||
# 应用设置配置
|
||
|
||
import os
|
||
|
||
# ================= 日志表配置 =================
|
||
# 从原 config.py 抽取
|
||
LOG_TABLE_CONFIG = {
|
||
'schema': 'dbo',
|
||
'table_name': 'TableChangeLog',
|
||
'col_log_id': 'LogID',
|
||
'col_table_name': 'TableName',
|
||
'col_record_id': 'RecordID',
|
||
'col_address': 'TableAddress',
|
||
'col_synced': 'Synced'
|
||
}
|
||
|
||
# ================= ntfy 配置 =================
|
||
# 从原 config.py 抽取
|
||
NTFY_CONFIG = {
|
||
'enabled': True,
|
||
'server_url': 'https://ntfy.server10086.icu',
|
||
'topic': 'bld',
|
||
'token': 'tk_eop5fs66acxtwxf6vlkiojhdvkgb0',
|
||
'priority': {
|
||
'error': 'high',
|
||
'critical': 'urgent'
|
||
}
|
||
}
|
||
|
||
# ================= Uptime Kuma 心跳配置 =================
|
||
# 增量同步服务心跳
|
||
UPTIME_KUMA_CONFIG = {
|
||
'enabled': True,
|
||
'push_url': 'https://uptimekuma.server10086.icu/api/push/clMSgOQs4CJeF7DJAOiHaFaaZzoL8eB9',
|
||
'heartbeat_interval': 59 # 心跳间隔(秒),需要与 Uptime Kuma 设置一致
|
||
}
|
||
|
||
# Excel 同步服务心跳
|
||
EXCEL_SYNC_UPTIME_KUMA_CONFIG = {
|
||
'enabled': True,
|
||
'push_url': 'https://uptimekuma.server10086.icu/api/push/MEXi5DYnC3nTMs2OfMqdelK3FawymtVY',
|
||
'heartbeat_interval': 59 # 心跳间隔(秒),需要与 Uptime Kuma 设置一致
|
||
}
|
||
|
||
# ================= 运行参数 =================
|
||
# 合并原 config.py 和 update_config.py 的配置
|
||
POLL_INTERVAL = 30 # 轮询间隔(秒)
|
||
EXCEL_SYNC_INTERVAL = 600 # Excel 同步周期(秒),默认 10 分钟
|
||
BATCH_SIZE = 10000 # 批量处理大小
|
||
CACHE_DIR = os.path.join(os.getcwd(), "temp") # Excel 缓存目录
|
||
TEMP_DIR = os.path.join(os.getcwd(), "temp") # 临时目录(兼容 migration.py)
|
||
|
||
# ================= 字段配置 =================
|
||
# 从原 update_config.py (sync_excel_to_sql.py) 抽取
|
||
EXECUTION_CARD_FIELDS = {
|
||
"合同年份": ("str", 10),
|
||
"总排号": ("str", 50),
|
||
"序号": ("int", None),
|
||
"订单号": ("str", 150),
|
||
"车间号": ("str", 20),
|
||
"销售内部号": ("str", 50),
|
||
"经办人": ("str", 20),
|
||
"签订日期": ("date", None),
|
||
"交货日期": ("date", None),
|
||
"客户名称": ("str", 200),
|
||
"产品名称": ("str", 200),
|
||
"客户型号": ("str", 200),
|
||
"选型型号": ("str", 200),
|
||
"量程": ("str", 150),
|
||
"数量": ("int", None),
|
||
"备注2": ("str", 500),
|
||
"备注1": ("str", 500),
|
||
"位号": ("str", 500),
|
||
"技术参数": ("str", 1000),
|
||
"车间": ("str", 200),
|
||
"工令号": ("str", 200),
|
||
"接单日期": ("date", None),
|
||
"新参数": ("str", 1000),
|
||
"基本型号": ("str", 200),
|
||
"公称外径": ("str", 200),
|
||
"安装代码": ("str", 200),
|
||
"设计形式": ("str", 200),
|
||
"技术安装代码": ("str", 200),
|
||
"隔膜类型": ("str", 200),
|
||
"标准": ("str", 100),
|
||
"隔膜大小": ("str", 200),
|
||
"隔膜材质": ("str", 200),
|
||
"膜片": ("str", 200),
|
||
"膜片材质": ("str", 200),
|
||
"CRM明细ID号": ("str", 200),
|
||
"成品物料编码": ("str", 200),
|
||
"工单号": ("str", 200),
|
||
"盘号": ("str", 200),
|
||
"编码": ("str", 200),
|
||
"型批名称": ("str", 200),
|
||
"型批型号": ("str", 200),
|
||
"开票名称": ("str", 200),
|
||
"开票型号": ("str", 200),
|
||
"上数据时间": ("date", None),
|
||
"生产代码1": ("str", 50),
|
||
"生产代码2": ("str", 50)
|
||
}
|
||
|
||
CONTRACT_DATA_FIELDS = {
|
||
"合同年份": ("str", 10),
|
||
"车间号": ("str", 20),
|
||
"工令号": ("str", 200),
|
||
"订单号": ("str", 150),
|
||
"客户名称": ("str", 200),
|
||
"产品型号": ("str", 200),
|
||
"量程": ("str", 150),
|
||
"数量": ("int", None),
|
||
"单价": ("int", None),
|
||
"ID": ("int", None),
|
||
"位号": ("str", 500)
|
||
}
|
||
|
||
CONTRACT_DATA_MAPPING = {
|
||
"合同年份": "合同年份",
|
||
"车间号": "车间号",
|
||
"工令号": "工令号",
|
||
"订单号": "订单号",
|
||
"客户名称": "客户名称",
|
||
"产品型号": "选型型号",
|
||
"量程": "量程",
|
||
"数量": "数量",
|
||
"单价": None,
|
||
"ID": None,
|
||
"位号": "位号"
|
||
}
|