1. finalizeTransaction 將 flow_id 前綴機台序號(serial+rawFlowId)使其全域唯一,解決跨機台單機 flow_id 撞號問題;ACK 仍回傳原始 flow_id,App/outbox 對帳無感。 2. 終態冪等檢查移入 DB transaction 並對既有 order 加 lockForUpdate 排他鎖,防止兩個 worker 同時穿透 pending 而重複出貨/扣庫存/核銷。 3. 取貨碼(PickupCode)與來店禮(WelcomeGift)核銷加排他鎖,防並發 lost-update 使 usage_count 突破 usage_limit。 4. recordInvoice 的 RelateNumber 推導改為直接取用已前綴序號的 flow_id,與線上既有 serial+rawFlowId 逐字等價,不重複加序號。 5. 新增 FinalizeIdempotencyTest、FinalizeStockMysqlTest 與 phpunit.mysql.xml(MySQL-only DDL 測試設定)。 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
38 lines
1.3 KiB
XML
38 lines
1.3 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!--
|
|
本機 MySQL 測試設定:跑需要 MySQL-only DDL(如 machine_stock_movements.type enum)的測試。
|
|
用法:./vendor/bin/sail test -c phpunit.mysql.xml
|
|
使用 Sail 自動建立的 `testing` 資料庫;RefreshDatabase 會在其上跑 migration。
|
|
-->
|
|
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
|
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
|
|
bootstrap="vendor/autoload.php"
|
|
colors="true"
|
|
>
|
|
<testsuites>
|
|
<testsuite name="Unit">
|
|
<directory>tests/Unit</directory>
|
|
</testsuite>
|
|
<testsuite name="Feature">
|
|
<directory>tests/Feature</directory>
|
|
</testsuite>
|
|
</testsuites>
|
|
<source>
|
|
<include>
|
|
<directory>app</directory>
|
|
</include>
|
|
</source>
|
|
<php>
|
|
<env name="APP_ENV" value="testing"/>
|
|
<env name="BCRYPT_ROUNDS" value="4"/>
|
|
<env name="CACHE_DRIVER" value="array"/>
|
|
<env name="DB_CONNECTION" value="mysql"/>
|
|
<env name="DB_DATABASE" value="testing"/>
|
|
<env name="MAIL_MAILER" value="array"/>
|
|
<env name="PULSE_ENABLED" value="false"/>
|
|
<env name="QUEUE_CONNECTION" value="sync"/>
|
|
<env name="SESSION_DRIVER" value="array"/>
|
|
<env name="TELESCOPE_ENABLED" value="false"/>
|
|
</php>
|
|
</phpunit>
|