AIcoding 第 5 步 todo 开发(开发计划 v2.0)前半段: - T-1 3 张新表 DDL(core_convert_request 6 态 ENUM / core_trade_calendar / core_share_rule)+ 种子 + sqlite 单一事实源同步 + 列清单断言 - T-2/T-2b calc 扩展(product_round/redeem_amount/partial_qty)+ 真实净值实算回填 - T-3 convert_request_repository(6 态 + 条件 UPDATE 守卫)+ core_ro 三读方法 + share_lot_repository.available_qty_with_inflight(R-3 在途占用推导) - T-4 convert_repository.sync_mirror 成为 risk_convert_detail 唯一进度镜像写入口 (旧三方法标 Deprecated,T-7 后删) - T-5 locks.py 锁键构造器 convert_req_lock_key / convert_confirm_lock_key - T-6 convert_service.accept_convert 受理事务(八步:锁→幂等→校验→受理日顺延 →在途占用校验→落单→镜像+审计→202;不扣份额/不折算/不写流水) + tests/test_convert_accept.py(16 用例) + scripts/dev/verify_convert_accept.py(真库 36/36 一致) + trading_calendar.py 纯函数包(R-5)+ 21 用例 T-6 真库实测暴露并修复:confirm_eta 在日历数据边界抛 ValueError,会让已落库 的受理单在调用方眼里变 500;改为展示性字段容错 + 单测守护。 基线:798 passed / 10 skipped,零回归。
49 lines
1.3 KiB
PowerShell
49 lines
1.3 KiB
PowerShell
#Requires -Version 5.1
|
|
<#
|
|
.SYNOPSIS
|
|
重置 jinrong_core 模拟库并同步到 agent / Neo4j
|
|
#>
|
|
param(
|
|
[string]$MysqlUser = "root",
|
|
[string]$MysqlHost = "127.0.0.1",
|
|
[switch]$SkipNeo4j
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
$Root = Split-Path (Split-Path $PSScriptRoot -Parent) -Parent
|
|
Set-Location $Root
|
|
|
|
function Invoke-SqlFile($path) {
|
|
Write-Host ">> $path"
|
|
Get-Content -LiteralPath $path -Encoding UTF8 | mysql -h $MysqlHost -u $MysqlUser -p
|
|
}
|
|
|
|
Write-Host "=== Drop & recreate jinrong_core ==="
|
|
mysql -h $MysqlHost -u $MysqlUser -p -e "DROP DATABASE IF EXISTS jinrong_core;"
|
|
|
|
$files = @(
|
|
"scripts/core/00-create-database.sql",
|
|
"scripts/core/01-ddl.sql",
|
|
"scripts/core/02-seed-base.sql",
|
|
"scripts/core/03-seed-customers.sql",
|
|
"scripts/core/04-seed-holdings.sql",
|
|
"scripts/core/05-seed-trades.sql",
|
|
"scripts/core/06-seed-nav.sql",
|
|
"scripts/core/07-seed-fee-rule.sql",
|
|
"scripts/core/08-seed-share-lot.sql",
|
|
"scripts/core/09-seed-org.sql",
|
|
"scripts/core/10-seed-trade-calendar.sql",
|
|
"scripts/core/11-seed-share-rule.sql"
|
|
)
|
|
foreach ($f in $files) { Invoke-SqlFile (Join-Path $Root $f) }
|
|
|
|
Write-Host "=== Sync advisor rel ==="
|
|
python scripts/sync/sync_advisor_rel.py
|
|
|
|
if (-not $SkipNeo4j) {
|
|
Write-Host "=== Sync Neo4j ==="
|
|
python scripts/sync/sync_neo4j.py
|
|
}
|
|
|
|
Write-Host "Done."
|