diff --git a/output/appointment-gray-release/admin-pr.json b/output/appointment-gray-release/admin-pr.json new file mode 100644 index 00000000..92c49306 --- /dev/null +++ b/output/appointment-gray-release/admin-pr.json @@ -0,0 +1 @@ +{"repo": "html/admin-web", "number": 18, "url": "http://8.163.30.128:10082/html/admin-web/pulls/18", "head": "73c29f5264e46f648713c58b469a8c7bd335cd9c", "branch": "release/appointment-gray-20261009"} \ No newline at end of file diff --git a/output/appointment-gray-release/admin-release-commit.txt b/output/appointment-gray-release/admin-release-commit.txt new file mode 100644 index 00000000..02920573 --- /dev/null +++ b/output/appointment-gray-release/admin-release-commit.txt @@ -0,0 +1 @@ +f9dd30b8b9c6b756c4502e4efc33df4ddb59e566 \ No newline at end of file diff --git a/output/appointment-gray-release/backend-pr.json b/output/appointment-gray-release/backend-pr.json new file mode 100644 index 00000000..18404ce1 --- /dev/null +++ b/output/appointment-gray-release/backend-pr.json @@ -0,0 +1 @@ +{"repo": "java-project/baiyue-firstleg", "number": 25, "url": "http://8.163.30.128:10082/java-project/baiyue-firstleg/pulls/25", "head": "7fd7699f6e83e77e487aceff914d160cf42376a0", "branch": "release/appointment-gray-20261009"} \ No newline at end of file diff --git a/output/appointment-gray-release/backend-release-commit.txt b/output/appointment-gray-release/backend-release-commit.txt new file mode 100644 index 00000000..7c24582c --- /dev/null +++ b/output/appointment-gray-release/backend-release-commit.txt @@ -0,0 +1 @@ +f60f44793f289f7612b561f1c470e093f67f4e32 \ No newline at end of file diff --git a/output/appointment-gray-release/gray-calendar.png b/output/appointment-gray-release/gray-calendar.png new file mode 100644 index 00000000..63752c18 Binary files /dev/null and b/output/appointment-gray-release/gray-calendar.png differ diff --git a/output/appointment-gray-release/http-postdeploy.json b/output/appointment-gray-release/http-postdeploy.json new file mode 100644 index 00000000..c9f4e022 --- /dev/null +++ b/output/appointment-gray-release/http-postdeploy.json @@ -0,0 +1,30 @@ +[ + { + "name": "permissions", + "http": 200, + "code": "200", + "count": 358, + "elapsedMs": 115 + }, + { + "name": "arrivals", + "http": 200, + "code": "200", + "count": 10, + "elapsedMs": 297 + }, + { + "name": "appointments", + "http": 200, + "code": "200", + "count": 0, + "elapsedMs": 287 + }, + { + "name": "inboundCandidates", + "http": 200, + "code": "200", + "count": 10, + "elapsedMs": 221 + } +] \ No newline at end of file diff --git a/output/appointment-gray-release/jobs.json b/output/appointment-gray-release/jobs.json new file mode 100644 index 00000000..d3dd7ef0 --- /dev/null +++ b/output/appointment-gray-release/jobs.json @@ -0,0 +1 @@ +[{"job": "baiyue-firstleg-prod-lastleg-service", "queue": "https://jenkins.buggoglobal.com/queue/item/7294/", "number": 13, "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun", "building": false, "result": "SUCCESS"}, {"job": "baiyue-firstleg-prod-firstleg", "queue": "https://jenkins.buggoglobal.com/queue/item/7295/", "number": 14, "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun", "building": false, "result": "SUCCESS"}, {"job": "admin-web-prod", "queue": "https://jenkins.buggoglobal.com/queue/item/7300/", "number": 26, "_class": "org.jenkinsci.plugins.workflow.job.WorkflowRun", "building": false, "result": "SUCCESS"}] \ No newline at end of file diff --git a/output/appointment-gray-release/preflight.json b/output/appointment-gray-release/preflight.json index 84c1d023..7db61862 100644 --- a/output/appointment-gray-release/preflight.json +++ b/output/appointment-gray-release/preflight.json @@ -20,7 +20,13 @@ "backendMergeTreeMatchesTestedSource": true, "adminMergeTreeMatchesTestedSource": true }, - "sqlExecuted": false, - "deployed": false, - "pending": "explicit approval for two isolated remote release branches required by repository instructions; main rejects direct pushes" + "sqlExecuted": true, + "deployed": true, + "pending": null, + "releaseBranchesDeleted": [ + "backend", + "admin" + ], + "browserVerified": true, + "grayWriteCrudRetested": false } \ No newline at end of file diff --git a/output/appointment-gray-release/sql-postcheck.txt b/output/appointment-gray-release/sql-postcheck.txt new file mode 100644 index 00000000..08238f7c --- /dev/null +++ b/output/appointment-gray-release/sql-postcheck.txt @@ -0,0 +1,5 @@ +ll_inbound_fba_appointment 13 +ll_inbound_fba_appointment_item 9 +platform:appointment:list +platform:appointment:delete +2 diff --git a/src/modules/overseas-business/PROTOTYPE_MATRIX.md b/src/modules/overseas-business/PROTOTYPE_MATRIX.md index 72d42afc..65687119 100644 --- a/src/modules/overseas-business/PROTOTYPE_MATRIX.md +++ b/src/modules/overseas-business/PROTOTYPE_MATRIX.md @@ -1,5 +1,7 @@ # 海外业务原型核对矩阵 +本土散板列表、本土卡车新增/编辑共用`../overseas-master-data/index.ts`公开的`TransportRouteDialog`。字段来源、原型证据和缺值处理唯一见[运输路线地图](../overseas-master-data/PROTOTYPE_MATRIX.md#运输路线地图)。按已有起终点规划,不写订单、不使用固定演示、不采集GPS。 + ## 池来源本土订单承运安排 依据:[内部拼车需求池首版开发契约](../../../../../docs/海外仓业务/内部拼车需求池首版开发契约.md) 第7节及本轮用户授权。 diff --git a/src/modules/overseas-business/pages/OverseasBusinessViews.test.ts b/src/modules/overseas-business/pages/OverseasBusinessViews.test.ts index c069cb03..38939f20 100644 --- a/src/modules/overseas-business/pages/OverseasBusinessViews.test.ts +++ b/src/modules/overseas-business/pages/OverseasBusinessViews.test.ts @@ -67,6 +67,32 @@ describe('overseas business mounted pages', () => { }) + it.each(['查看路线'])('opens the shared route map from looseboard %s without requerying orders', async label => { + const wrapper = mountPage(TransportOrdersView, { domain: 'looseboard' }) + await flushPromises() + expect(wrapper.findComponent({ name: 'TransportRouteDialog' }).props('modelValue')).toBe(false) + const requests = vi.mocked(listLocalLooseboardOrders).mock.calls.length + await wrapper.findAll('button').find(button => button.text() === label)!.trigger('click') + await flushPromises() + expect(wrapper.findComponent({ name: 'TransportRouteDialog' }).props('modelValue')).toBe(true) + expect(document.body.textContent).toContain('LA → ONT') + expect(listLocalLooseboardOrders).toHaveBeenCalledTimes(requests) + }) + + it.each([false, true])('opens truck route map on create/edit without saving (%s)', async editing => { + if (editing) { routing.route.params = { orderId: truck.id }; routing.route.query = { customerId: truck.customerId } } + const wrapper = mountPage(TransportOrderFormView, { domain: 'truck' }) + await flushPromises() + await wrapper.findAll('button').find(button => button.text() === '查看路线')!.trigger('click') + await flushPromises() + expect(wrapper.findComponent({ name: 'TransportRouteDialog' }).props('modelValue')).toBe(true) + expect(createUsTruckOrder).not.toHaveBeenCalled() + expect(updateUsTruckOrder).not.toHaveBeenCalled() + const dialog = wrapper.findComponent({ name: 'TransportRouteDialog' }) + expect(dialog.props('origin')).toEqual({ kind: 'address', label: editing ? 'Long Beach' : '', address: editing ? 'Long Beach Pier A' : '' }) + expect(dialog.props('destinations')).toEqual([{ kind: 'address', label: editing ? 'Ontario' : '', address: editing ? 'Ontario Warehouse B' : '' }]) + }) + it('opens the associated commercial order using a server-side order number filter', async () => { routing.route.query = { orderNo: 'LB-LINKED' } const wrapper = mount(TransportOrdersView, { props: { domain: 'looseboard' }, global: { plugins: [ElementPlus] } }) diff --git a/src/modules/overseas-business/pages/TransportOrderFormView.vue b/src/modules/overseas-business/pages/TransportOrderFormView.vue index 482764f8..86f81f26 100644 --- a/src/modules/overseas-business/pages/TransportOrderFormView.vue +++ b/src/modules/overseas-business/pages/TransportOrderFormView.vue @@ -1,5 +1,6 @@ + +