feat(M08-C): 补保洁与设备运营

This commit is contained in:
Codex
2026-08-10 10:52:06 +08:00
parent a95e8bf8c8
commit 65932a8000
17 changed files with 815 additions and 104 deletions
+48
View File
@@ -324,6 +324,15 @@ assert.equal(calls.at(-1)[1].status, 'SUBMITTED');
assert.equal(calls.at(-1)[1].storeId, '11');
assert.equal(calls.at(-1)[1].cleanerUserId, '31');
const appManageList = await app.inject({
method: 'GET',
url: '/app-api/management/cleaning/tasks?status=SUBMITTED&storeId=11',
headers: { authorization: `Bearer ${token}` }
});
assert.equal(appManageList.statusCode, 200);
assert.equal(calls.at(-1)[0], 'listManage');
assert.equal(calls.at(-1)[1].storeId, '11');
const managerStats = await app.inject({
method: 'GET',
url: '/admin-api/cleaning/statistics?from=2026-06-01&to=2026-07-01&storeId=11&cleanerUserId=31',
@@ -341,6 +350,15 @@ assert.equal(managerStats.json().data.members[0].rejectedTaskCount, 1);
assert.equal(managerStats.json().data.trend[0].exempted, 1);
assert.equal(managerStats.json().data.trend[0].paidSettlementCents, 600);
const appManagerStats = await app.inject({
method: 'GET',
url: '/app-api/management/cleaning/statistics?storeId=11',
headers: { authorization: `Bearer ${token}` }
});
assert.equal(appManagerStats.statusCode, 200);
assert.equal(calls.at(-1)[0], 'managerStatistics');
assert.equal(calls.at(-1)[1].storeId, '11');
const claim = await app.inject({
method: 'POST',
url: '/app-api/cleaning/tasks/101/claim',
@@ -410,6 +428,16 @@ const complete = await app.inject({
assert.equal(complete.statusCode, 200);
assert.equal(calls.at(-1)[0], 'complete');
const appComplete = await app.inject({
method: 'POST',
url: '/app-api/management/cleaning/tasks/101/complete',
headers: { authorization: `Bearer ${token}` },
payload: { note: 'miniapp approval' }
});
assert.equal(appComplete.statusCode, 200);
assert.equal(calls.at(-1)[0], 'complete');
assert.equal(calls.at(-1)[1].note, 'miniapp approval');
const reject = await app.inject({
method: 'POST',
url: '/admin-api/cleaning/tasks/101/reject',
@@ -420,6 +448,16 @@ assert.equal(reject.statusCode, 200);
assert.equal(calls.at(-1)[0], 'reject');
assert.equal(calls.at(-1)[1].reason, 'photo is unclear');
const appReject = await app.inject({
method: 'POST',
url: '/app-api/management/cleaning/tasks/101/reject',
headers: { authorization: `Bearer ${token}` },
payload: { reason: 'miniapp asks for rework' }
});
assert.equal(appReject.statusCode, 200);
assert.equal(calls.at(-1)[0], 'reject');
assert.equal(calls.at(-1)[1].reason, 'miniapp asks for rework');
const exempt = await app.inject({
method: 'POST',
url: '/admin-api/cleaning/tasks/101/exempt',
@@ -431,6 +469,16 @@ assert.equal(exempt.json().data.status, 'EXEMPT');
assert.equal(calls.at(-1)[0], 'exempt');
assert.equal(calls.at(-1)[1].note, 'no cleaning required');
const appExempt = await app.inject({
method: 'POST',
url: '/app-api/management/cleaning/tasks/101/exempt',
headers: { authorization: `Bearer ${token}` },
payload: { note: 'miniapp exemption' }
});
assert.equal(appExempt.statusCode, 200);
assert.equal(calls.at(-1)[0], 'exempt');
assert.equal(calls.at(-1)[1].note, 'miniapp exemption');
const members = await app.inject({
method: 'GET',
url: '/admin-api/cleaning/tasks/101/members',