feat: add phone frequency controls and modularize codebase

This commit is contained in:
hectorzhao
2026-07-31 22:25:23 +08:00
parent 0af671b4ed
commit ca4f591a13
216 changed files with 41579 additions and 23694 deletions
@@ -0,0 +1,260 @@
{
"version": "R9",
"generatedAt": "2026-07-31",
"source": "api/src/send-chain/send-chain.service.ts at R8 local baseline",
"target": "api/src/send-chain/send-*.service.ts via send-submission.service.ts compatibility facade",
"methods": [
{
"name": "createBatchTask",
"bodySha256": "c7baccb2b49a95ef4b36a97f6f56c987f0ac60c45ed634cd050201f2a9bce8b5",
"file": "send-batch-entry.service.ts"
},
{
"name": "createHttpBatchTask",
"bodySha256": "9c5a8d4a1a257e418f8abf83b7ae4fc10148e966a77d45e78568207eeabf92a6",
"file": "send-batch-entry.service.ts"
},
{
"name": "getBatchTask",
"bodySha256": "ce25b495f876e746e7b707410e699479bb7d9cb27c2a749c89dd45a956a23c07",
"file": "send-batch-entry.service.ts"
},
{
"name": "previewImport",
"bodySha256": "c722c90e014ee4b7301e8c7a01591b0573574f15b49df5fc9498067235613013",
"file": "send-batch-entry.service.ts"
},
{
"name": "confirmImport",
"bodySha256": "48ed35f8271892be111909dcce3ddf0705e3054ca38a236c416e9b8d41747864",
"file": "send-batch-entry.service.ts"
},
{
"name": "enqueueBatchTask",
"bodySha256": "909972eb0accfb6e31b9fd6118750005c4a6671577ef5b5c9222a341dac59800",
"file": "send-gateway-submit.service.ts"
},
{
"name": "handleReviewDecision",
"bodySha256": "62f118fa543b8db59773300c5218008c25ae779ab9e0a888aac26c7e85ed3db1",
"file": "send-review-continuation.service.ts"
},
{
"name": "dispatchDueScheduledTasks",
"bodySha256": "8fd154bd1318b362b844a97a42cde360623ecb372bd476b92baa54db8a4be768",
"file": "send-scheduled-dispatch.service.ts"
},
{
"name": "runScheduledDispatchScan",
"bodySha256": "02167ffcf1972ee2d85e40d933f0c02fe031300e973fa4307dfd1678a14f27ba",
"file": "send-scheduled-dispatch.service.ts"
},
{
"name": "startWorker",
"bodySha256": "82fe6e5b27f95b15f4a5c218cb6c30e99a9128c293192e7443657d8b245f84d6",
"file": "send-gateway-submit.service.ts"
},
{
"name": "processSendJob",
"bodySha256": "cec399a6552c118a77530f760e2c05b4d2d1fd01c9bdc477f342e0015d461207",
"file": "send-gateway-submit.service.ts"
},
{
"name": "authenticateInboundApplication",
"bodySha256": "2630dd1066b5a3e86c805d13102973e1c928ca2747bd0c3741481d03169eba2f",
"file": "send-inbound-entry.service.ts"
},
{
"name": "submitInboundMessage",
"bodySha256": "281e33a732f80e4ede6cc9d04a5b206a9348e17e66dee33d53f2d8d1d9bb9472",
"file": "send-inbound-entry.service.ts"
},
{
"name": "recoverCompletedInboundLongMessageResponse",
"bodySha256": "d98dd2a7606f45711f9dafbcbf4668c27a4d17a9343ee790ebe2c8b36ff5e49c",
"file": "send-inbound-entry.service.ts"
},
{
"name": "submitCompleteInboundMessage",
"bodySha256": "10e2140580e4bae2055853981de65f4adf82c228b647dbb56fce7c39469acaf3",
"file": "send-inbound-entry.service.ts"
},
{
"name": "collectInboundLongMessageFragment",
"bodySha256": "5b4e7f795966462fccb8c4c7a2cfae649ef19ee1b8176e7356eb2d621526ba41",
"file": "send-inbound-entry.service.ts"
},
{
"name": "expireInboundLongMessages",
"bodySha256": "2328633d6c410089b3be4e38245d238a783015e3411baee0f8202a9c953aa427",
"file": "send-inbound-entry.service.ts"
},
{
"name": "submitInboundSingleMessage",
"bodySha256": "df97548b1710b217f118cc297104d6c5cc845acc40947df4180036b8d284d847",
"file": "send-inbound-entry.service.ts"
},
{
"name": "evaluateRiskWithPhoneFrequency",
"bodySha256": "2e9fab56cd8ae85856fae2e88bb49c1ac1438feea79b7410069554c4fb494782",
"file": "send-inbound-entry.service.ts"
},
{
"name": "submitMessageToGateway",
"bodySha256": "4a928eab5727ba457ee1d4a202e719b6e389361ab2be8ad13ccf146dcebdc141",
"file": "send-gateway-submit.service.ts"
},
{
"name": "selectChannelForMessage",
"bodySha256": "3ab89dbfea42c99a898e7ea62742b200a18615e7aed541c2978af913b9689c68",
"file": "send-gateway-submit.service.ts"
},
{
"name": "findApplicationRoute",
"bodySha256": "110dd4b6d716ee0b08306a16818617b73fba8c6148ae6b7bc87480a2a3f75b54",
"file": "send-gateway-submit.service.ts"
},
{
"name": "identifyCarrier",
"bodySha256": "18e82894203d50d9b2371b9da0ac06fc34e83dd5600d3411f3a09a912955f0b4",
"file": "send-gateway-submit.service.ts"
},
{
"name": "identifyProvince",
"bodySha256": "56d1859733bfe44b6d32295f5706d06b64f1bb03e797e8c894f98b012a71fa35",
"file": "send-gateway-submit.service.ts"
},
{
"name": "resolveUnitPrice",
"bodySha256": "1d14202d83fcc9baa4e56ff2e33771db81f64159852142fadfeae4a89eb5e5c9",
"file": "send-batch-entry.service.ts"
},
{
"name": "resolveQueuePriority",
"bodySha256": "752b13877a4b7a5f89f95cc7f52718e0c473a7c70cb0b99eec63370790540b89",
"file": "send-batch-entry.service.ts"
},
{
"name": "resolveApplicationAccessNumber",
"bodySha256": "948dbcb3106c96c1c2aa3fe4e914590b38f3961d720357b2df3ede07e80663f5",
"file": "send-batch-entry.service.ts"
},
{
"name": "findInboundApplication",
"bodySha256": "6d0bfcb122d0d824f7db542ed3d6a84d034d816f412c61cf96a38510d1738023",
"file": "send-inbound-entry.service.ts"
},
{
"name": "resolveInboundTemplateCandidate",
"bodySha256": "0bd1ccad86d18797132a4f142b24bcfff080021c76217f946301befc81b51b4e",
"file": "send-inbound-entry.service.ts"
},
{
"name": "resolveInboundSignatureCandidate",
"bodySha256": "716a526ea36f92012670c48e3f9cf4a2453435bed6b1943a310e603531998412",
"file": "send-inbound-entry.service.ts"
},
{
"name": "resolveTemplateMessageClassification",
"bodySha256": "f2b99e2e9d7fa00172b3cca72f080493fbf6f090f378784611388320254575f7",
"file": "send-batch-entry.service.ts"
},
{
"name": "resolveDrainageInfoMatch",
"bodySha256": "31c393cd6b5b641776dc50cee46fe79cc5243adb57c6296a1b0cd8b346896021",
"file": "send-inbound-entry.service.ts"
},
{
"name": "attachMessageToReviewTask",
"bodySha256": "55485f011465ae62006552c1343822623a8d914d2989f74b3e809eea659539c2",
"file": "send-inbound-entry.service.ts"
},
{
"name": "classifyRejectedPhones",
"bodySha256": "cd9fe84399dcf83d4e7926c4c3900f04fb84a526135009e5af17b417bf81b108",
"file": "send-batch-entry.service.ts"
},
{
"name": "validateSendResources",
"bodySha256": "3c96b0edae411fb291cc9f52b0c3de8681c00f870c9e25cfd458703257639f00",
"file": "send-batch-entry.service.ts"
},
{
"name": "reserveDailySendQuota",
"bodySha256": "2f3132ec25ad778d24ca8129263e2a4db9120697160f908fd247c9824dc7bc49",
"file": "send-batch-entry.service.ts"
},
{
"name": "tryReserveDailySendQuota",
"bodySha256": "3de44b2c155cb25a8c327b465235d1ec627b375f5fa521e2c0fc0a9f3b62b3b5",
"file": "send-batch-entry.service.ts"
},
{
"name": "ensureSignatureReportedForChannel",
"bodySha256": "8c2c5c6f4ef9a26a4643f215c5e590e25d91642946094705e6c1fc7070e0bbd3",
"file": "send-gateway-submit.service.ts"
},
{
"name": "resolveMessageSignatureId",
"bodySha256": "4c67a20f76e520afc23756ae475a365769c6eaea18c453a7516f2502c26b756a",
"file": "send-gateway-submit.service.ts"
},
{
"name": "waitForChannelRateLimit",
"bodySha256": "7706917a2535caf85fa17cbe8732179211ebca96ac233ba986c1e713f78f26b8",
"file": "send-gateway-submit.service.ts"
},
{
"name": "refreshTaskProgress",
"bodySha256": "3c5521193128d2d738abf37b7bd6213bfb7c60973d85daa28e4d9f28e2ea81e3",
"file": "send-gateway-submit.service.ts"
},
{
"name": "getSendQueue",
"bodySha256": "9dca5a9008ebd0c472db8807e64be409aed46e5dd289638149f56a4b23970d7e",
"file": "send-gateway-submit.service.ts"
},
{
"name": "getGatewayQueue",
"bodySha256": "0f24d7cbf91cf33b9620c6f6197edddfe64cc49e8d9e237eb656e84fb9965c66",
"file": "send-gateway-submit.service.ts"
},
{
"name": "getRedis",
"bodySha256": "f487638a6b656e0d297ed0f6f3181face99b71895dec42762c834bf1d20dc635",
"file": "send-gateway-submit.service.ts"
},
{
"name": "publishGatewaySubmitCommand",
"bodySha256": "ad68171579e3790c3f9176f6a2c9fd900783da5ae6ded9593f3e156ea0e297de",
"file": "send-gateway-submit.service.ts"
}
],
"domains": [
{
"file": "send-batch-entry.service.ts",
"className": "SendBatchEntryService",
"methodCount": 13
},
{
"file": "send-inbound-entry.service.ts",
"className": "SendInboundEntryService",
"methodCount": 13
},
{
"file": "send-review-continuation.service.ts",
"className": "SendReviewContinuationService",
"methodCount": 1
},
{
"file": "send-scheduled-dispatch.service.ts",
"className": "SendScheduledDispatchService",
"methodCount": 2
},
{
"file": "send-gateway-submit.service.ts",
"className": "SendGatewaySubmitService",
"methodCount": 16
}
]
}