.graphify_labels.json 33 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743
  1. {
  2. "0": "Community 0",
  3. "1": "Community 1",
  4. "2": "Community 2",
  5. "3": "Community 3",
  6. "4": "Community 4",
  7. "5": "Community 5",
  8. "6": "Community 6",
  9. "7": "Community 7",
  10. "8": "Community 8",
  11. "9": "Community 9",
  12. "10": "Community 10",
  13. "11": "Community 11",
  14. "12": "Community 12",
  15. "13": "Community 13",
  16. "14": "Community 14",
  17. "15": "Community 15",
  18. "16": "Community 16",
  19. "17": "Community 17",
  20. "18": "Community 18",
  21. "19": "Community 19",
  22. "20": "Community 20",
  23. "21": "Community 21",
  24. "22": "Community 22",
  25. "23": "Community 23",
  26. "24": "Community 24",
  27. "25": "Community 25",
  28. "26": "Community 26",
  29. "27": "Community 27",
  30. "28": "Community 28",
  31. "29": "Community 29",
  32. "30": "Community 30",
  33. "31": "Community 31",
  34. "32": "Community 32",
  35. "33": "Community 33",
  36. "34": "Community 34",
  37. "35": "Community 35",
  38. "36": "Community 36",
  39. "37": "Community 37",
  40. "38": "Community 38",
  41. "39": "Community 39",
  42. "40": "Community 40",
  43. "41": "Community 41",
  44. "42": "Community 42",
  45. "43": "Community 43",
  46. "44": "Community 44",
  47. "45": "Community 45",
  48. "46": "Community 46",
  49. "47": "Community 47",
  50. "48": "Community 48",
  51. "49": "Community 49",
  52. "50": "Community 50",
  53. "51": "Community 51",
  54. "52": "Community 52",
  55. "53": "Community 53",
  56. "54": "Community 54",
  57. "55": "Community 55",
  58. "56": "Community 56",
  59. "57": "Community 57",
  60. "58": "Community 58",
  61. "59": "Community 59",
  62. "60": "Community 60",
  63. "61": "Community 61",
  64. "62": "Community 62",
  65. "63": "Community 63",
  66. "64": "Community 64",
  67. "65": "Community 65",
  68. "66": "Community 66",
  69. "67": "Community 67",
  70. "68": "Community 68",
  71. "69": "Community 69",
  72. "70": "Community 70",
  73. "71": "Community 71",
  74. "72": "Community 72",
  75. "73": "Community 73",
  76. "74": "Community 74",
  77. "75": "apply_crm_create_by_scope",
  78. "76": "opportunity_follow.py",
  79. "77": "Community 77",
  80. "78": "Community 78",
  81. "79": "PlCarrier",
  82. "80": "resolve_crm_product",
  83. "81": "customer_follow.py",
  84. "82": "list_duty_staff_users",
  85. "83": "Community 83",
  86. "84": "Community 84",
  87. "85": "allocate_next_biz_no",
  88. "86": "Community 86",
  89. "87": "list_customers",
  90. "88": "CrmProduct",
  91. "89": "pl_ocr_service.py",
  92. "90": "WechatMessageService",
  93. "91": "unsettled_plans_q_filter",
  94. "92": "Community 92",
  95. "93": "api_request_log_middleware.py",
  96. "94": "assert_contract_editable_for_update",
  97. "95": "test_pl_public_link_archived.py",
  98. "96": "minio_url.py",
  99. "97": "contact.py",
  100. "98": "LocalStorage",
  101. "99": "redis_client.py",
  102. "100": "price_letter_detail",
  103. "101": "tenant.py",
  104. "102": "BaseStorage",
  105. "103": "pl_internal_customer.py",
  106. "104": "apply_crm_create_by_scope",
  107. "105": "pool_customer_assign",
  108. "106": "site.py",
  109. "107": "apply_pl_scope",
  110. "108": "statistics.py",
  111. "109": "test_pl_plan_stop_rules.py",
  112. "110": "pool_rule.py",
  113. "111": "test_pl_public_transport_history.py",
  114. "112": "merge_duplicate_crm_customers.py",
  115. "113": "dict_type.py",
  116. "114": "dept.py",
  117. "115": "site.py",
  118. "116": "Community 116",
  119. "117": "pl_plan_list_attachments.py",
  120. "118": "Community 118",
  121. "119": "Community 119",
  122. "121": "_build_user_info_payload",
  123. "122": "post.py",
  124. "123": "customer_options",
  125. "124": "LocalStorage",
  126. "125": "ethnic.py",
  127. "126": "oper_log.py",
  128. "127": "Any",
  129. "128": "api_crypto.py",
  130. "129": "BaseStorage",
  131. "130": "_filter_export_rows_by_ids",
  132. "131": "resolve_crm_product",
  133. "132": ".to_list_kwargs",
  134. "133": "inventory_id.py",
  135. "134": "list_contacts",
  136. "135": "context.py",
  137. "136": "get_db_current_user_optional",
  138. "137": "iter_user_menu_perm_codes",
  139. "140": "crm_export_columns.py",
  140. "142": "clear_pl_plan_instance_data.py",
  141. "143": "create_from_quote",
  142. "144": "response.py",
  143. "145": "list_products",
  144. "146": "dict_data.py",
  145. "147": "Community 147",
  146. "148": "plan_has_incomplete_hazard_cert_exists",
  147. "149": ".to_tenant_user_dict",
  148. "150": "list_product_options",
  149. "152": "register_local_callback",
  150. "153": "web_login_rsa_public_key",
  151. "154": "redis_client.py",
  152. "155": "WechatMessageService",
  153. "156": "list_product_options",
  154. "157": "datetime_parse.py",
  155. "158": "create_from_quote",
  156. "159": "web_login_rsa_public_key",
  157. "160": "get_client_ip",
  158. "161": "context.py",
  159. "162": ".to_tenant_user_dict",
  160. "163": "MinIOStorage",
  161. "164": "storage.py",
  162. "165": "list_duty_staff_users",
  163. "166": "code:block1 (/iflytek/shanxia2.0/backend)",
  164. "167": "migrate_crm_product.py",
  165. "168": "run_auto_generate_monthly_plans",
  166. "169": "merge_duplicate_crm_customers.py",
  167. "170": "mp_webview_ticket.py",
  168. "171": "inventory.py",
  169. "172": "vehicle_maintenance.py",
  170. "173": "resolve_create_time_bounds",
  171. "174": "test_pl_vehicle_ops_list_filters.py",
  172. "175": "pl_ocr_service.py",
  173. "176": "invoice_list_filters.py",
  174. "178": "build_contract_template_column_filters",
  175. "179": "test_pl_vehicle_personnel_photo_schema.py",
  176. "182": "vehicle_recharge.py",
  177. "183": "resolve_name_pinyin_abbr",
  178. "184": "verify_plan_archive_zip_export.py",
  179. "185": "public_transport_site.py",
  180. "186": "BaseStorage",
  181. "187": "price_letter.py",
  182. "189": "build_customer_column_filters",
  183. "191": "pl_plan_cert_perm.py",
  184. "192": "assert_row_deletable_by_creator",
  185. "193": "CRUDBase",
  186. "194": "Settings",
  187. "195": "role.py",
  188. "196": "sample_code.py",
  189. "197": "start-prod.sh",
  190. "198": "login_crypto.py",
  191. "199": "WechatMessageService",
  192. "200": "quote_share_log.py",
  193. "202": "build_clue_column_filters",
  194. "203": "product_list_filters.py",
  195. "204": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  196. "206": "crm_quote_pdf.py",
  197. "207": "shanxia2.0 后端骨架(FastAPI)",
  198. "209": "storage.py",
  199. "210": "customer_pool.py",
  200. "212": "contract_list_filters.py",
  201. "213": "web_auth_roles.py",
  202. "214": "timedelta",
  203. "215": "Java: batchSubmitApproval",
  204. "216": "build_plan_column_filters",
  205. "217": "pl_plan_list_attachments.py",
  206. "219": "expense_item.py",
  207. "222": "start.sh",
  208. "223": "vehicle_recharge.py",
  209. "225": "FakeRedis",
  210. "226": "invoice.py",
  211. "227": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  212. "233": "code:block1 (backend/)",
  213. "235": "wx_qr_session.py",
  214. "238": "vehicle_urea.py",
  215. "239": "shanxia2.0 Backend 生产部署说明",
  216. "240": "reimburse.py",
  217. "241": "public_inventory.py",
  218. "242": "base.py",
  219. "243": "dashboard.py",
  220. "244": "workflow.py",
  221. "245": "vehicle_maintenance.py",
  222. "246": "db_collation.py",
  223. "248": "build_reimburse_column_filters",
  224. "249": "code:block1 (/iflytek/shanxia2.0/backend)",
  225. "250": "menu.py",
  226. "251": "dept.py",
  227. "253": "send_delivery_notice",
  228. "254": "Activate.ps1",
  229. "255": "vehicle_fuel.py",
  230. "256": "Java: createFromOpportunity — 返回合同 id",
  231. "257": "mini_auth.py",
  232. "259": "dict_type.py",
  233. "260": "tenant.py",
  234. "262": "Java Controller TODO — 保持 pending,记录备注",
  235. "263": "__init__.py",
  236. "266": "menu.py",
  237. "267": "post.py",
  238. "268": "leave.py",
  239. "269": "site.py",
  240. "272": "default_settlement_clause",
  241. "273": "storage.py",
  242. "274": "user.py",
  243. "275": "fix_pl_transport_db_link_stop_ids.py",
  244. "280": "resolve_wechat_login_user",
  245. "281": "apply_crm_owner_scope",
  246. "282": "crm_quote_pdf.py",
  247. "286": "shanxia2.0 后端骨架(FastAPI)",
  248. "287": "test_wx_qr_session.py",
  249. "290": "按入参整表覆盖合同扫描件;attachments=[] 表示清空。",
  250. "291": "Java: createFromQuote — 返回合同 id",
  251. "298": "collect_unique_delivery_date_strings",
  252. "301": "price_letter.py",
  253. "302": "clear_pl_plan_instance_data.py",
  254. "304": "__init__.py",
  255. "306": "__init__.py",
  256. "307": "__init__.py",
  257. "308": "__init__.py",
  258. "309": "__init__.py",
  259. "310": "__init__.py",
  260. "311": "__init__.py",
  261. "312": "__init__.py",
  262. "313": "DictLabelResolver",
  263. "314": "order_status_compat.py",
  264. "315": "base_data.py",
  265. "316": "get_active",
  266. "317": "shanxia2.0 Backend 生产部署说明",
  267. "323": "customer_stop_pref.py",
  268. "324": "db_collation.py",
  269. "325": "__init__.py",
  270. "326": "customer_pool.py",
  271. "327": "io_order.py",
  272. "328": "_plan_plate_match",
  273. "331": "common.py",
  274. "332": "_plan_product_name_exists",
  275. "336": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  276. "338": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  277. "344": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  278. "345": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  279. "346": "__init__.py",
  280. "347": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  281. "348": "Activate.ps1",
  282. "349": "__init__.py",
  283. "350": "statistics.py",
  284. "351": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  285. "352": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  286. "353": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  287. "354": "__init__.py",
  288. "355": "__init__.py",
  289. "356": "__init__.py",
  290. "358": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  291. "359": "创建运输计划(完整表单:供方/需方 + 产品库产品 + 可选预选车辆,不自动安排运输)",
  292. "360": "列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。",
  293. "361": "列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。",
  294. "362": "列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。",
  295. "363": "__init__.py",
  296. "364": "__init__.py",
  297. "365": "__init__.py",
  298. "366": "__init__.py",
  299. "367": "__init__.py",
  300. "368": "__init__.py",
  301. "369": "列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。",
  302. "371": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  303. "372": "列表展示用:优先 CRM 标准名(详情仍返回库内 product_name,以便编辑反推别名)。",
  304. "374": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  305. "375": "__init__.py",
  306. "376": "生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)",
  307. "377": "生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)",
  308. "378": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  309. "380": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  310. "382": "__init__.py",
  311. "383": "__init__.py",
  312. "384": "__init__.py",
  313. "385": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  314. "387": "返回全部审批动作,按时间正序排列,用于展示完整审批历史。",
  315. "389": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  316. "390": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  317. "391": "生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)",
  318. "395": "生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)",
  319. "396": "生成计划编号 POYYYYMMDD###(当日 3 位序号,每日重置)",
  320. "400": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  321. "401": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  322. "402": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  323. "403": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  324. "404": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  325. "405": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  326. "407": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  327. "408": "__init__.py",
  328. "409": "__init__.py",
  329. "410": "__init__.py",
  330. "411": "__init__.py",
  331. "412": "__init__.py",
  332. "413": "__init__.py",
  333. "414": "__init__.py",
  334. "415": "__init__.py",
  335. "416": "__init__.py",
  336. "417": "更新计划危化品产品证书(购买证/运输证/合法使用证明,不触发安排运输)",
  337. "419": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  338. "420": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  339. "421": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  340. "422": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  341. "423": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  342. "424": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  343. "425": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  344. "426": "获取计划已安排运输后的司机链接与地磅出入库关联(供查看弹窗复制简述/二维码)。",
  345. "428": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  346. "430": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  347. "431": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  348. "432": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  349. "433": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  350. "434": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  351. "435": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  352. "436": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  353. "437": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  354. "438": "将历史分装单号统一为 NO:SXFZYYYYMMDD-###",
  355. "440": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  356. "441": "将历史分装单号统一为 NO:SXFZYYYYMMDD-###",
  357. "442": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  358. "443": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  359. "445": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  360. "446": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  361. "447": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  362. "448": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  363. "449": "将历史分装单号统一为 NO:SXFZYYYYMMDD-###",
  364. "450": "作废运输计划:取消跟进状态、作废关联地磅出入库单、取消运输单。",
  365. "451": "将历史分装单号统一为 NO:SXFZYYYYMMDD-###",
  366. "452": "强制修改跟进状态(仅改字段,不作废联动、不补运输安排)。需权限 pl:plan:force-follow-status。",
  367. "454": "将历史分装单号统一为 NO:SXFZYYYYMMDD-###",
  368. "456": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  369. "457": "分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增)",
  370. "458": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  371. "459": "分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增)",
  372. "460": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  373. "462": "分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增)",
  374. "464": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  375. "465": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  376. "467": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  377. "469": "分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增)",
  378. "470": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  379. "471": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  380. "472": "分配分装单号 NO:SXFZYYYYMMDD-###(按租户每日递增)",
  381. "473": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  382. "474": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  383. "475": "按送货客户聚合送(提)货单打印数据;不传 customerId 时仅返回客户选项。",
  384. "476": "导出计划列表(当前筛选全量,或 ids 已选)。",
  385. "477": "导出计划列表(当前筛选全量,或 ids 已选)。",
  386. "478": "导出计划列表(当前筛选全量,或 ids 已选)。",
  387. "479": "导出计划列表(当前筛选全量,或 ids 已选)。",
  388. "480": "导出计划列表(当前筛选全量,或 ids 已选)。",
  389. "481": "导出计划列表(当前筛选全量,或 ids 已选)。",
  390. "482": "导出计划列表(当前筛选全量,或 ids 已选)。",
  391. "483": "导出计划列表(当前筛选全量,或 ids 已选)。",
  392. "484": "导出计划列表(当前筛选全量,或 ids 已选)。",
  393. "487": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  394. "488": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  395. "489": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  396. "490": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  397. "491": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  398. "493": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  399. "494": "表单可安排数量 + 问号弹窗:合同用量与已安排计划列表。",
  400. "495": "code:bash (cd /path/to/shanxia2.0)",
  401. "496": "code:bash (./start-prod.sh status # 查看状态)",
  402. "497": "code:bash (curl -s http://127.0.0.1:9111/health)",
  403. "498": "code:bash (cd /iflytek/shanxia2.0/backend)",
  404. "499": "code:bash (python -m venv venv)",
  405. "500": "code:bash (pip install -r requirements.txt)",
  406. "501": "code:env (# 数据库配置)",
  407. "502": "code:bash (uvicorn app.main:app --reload --port 8000)",
  408. "503": "BaseModel",
  409. "504": "PlanResourceSnapshotMixin",
  410. "505": "_format_plan_date",
  411. "506": "_resolve_plan_flags",
  412. "507": "transport.py",
  413. "509": "_transport_has_db_links",
  414. "511": "vehicle_urea.py",
  415. "512": "_avatar_url_field",
  416. "513": "_build_user_info_payload",
  417. "514": "_jwt_user_payload",
  418. "520": "与 web-admin 静态路由 meta.roles(admin/super_admin)对齐的单元素数组。",
  419. "521": "与 web-admin `userInfo` 字段约定一致。",
  420. "526": "_web_role_list",
  421. "527": "auth.py",
  422. "528": "__init__.py",
  423. "529": "send_delivery_warning",
  424. "530": "send_order_status",
  425. "531": "send_payment_success",
  426. "532": "send_refund_result",
  427. "533": "send_urge_notification",
  428. "534": "get",
  429. "535": "get_multi_with_filters",
  430. "536": "contract_approver_setting.py",
  431. "537": "contract.py",
  432. "538": "Java: deleteWithValidByIds — 软删除",
  433. "539": "Java: deleteWithValidByIds — 软删除",
  434. "541": "Java: deleteWithValidByIds — 软删除",
  435. "542": "Java: deleteWithValidByIds — 软删除",
  436. "543": "框架合同提交审批校验:仅要求有产品明细;调价区间为可选,不强制。",
  437. "544": "框架合同提交审批校验:仅要求有产品明细;调价区间为可选,不强制。",
  438. "546": "框架合同提交审批校验:仅要求有产品明细;调价区间为可选,不强制。",
  439. "547": "Java: deleteWithValidByIds — 软删除",
  440. "549": "框架合同提交审批校验:仅要求有产品明细;调价区间为可选,不强制。",
  441. "551": "Java: batchSubmitApproval",
  442. "554": "Java: batchSubmitApproval",
  443. "555": "Java: batchSubmitApproval",
  444. "556": "Java: withdrawApproval",
  445. "557": "Java: withdrawApproval",
  446. "559": "Java: batchSubmitApproval",
  447. "561": "Java: withdrawApproval",
  448. "562": "按入参整表覆盖合同扫描件;attachments=[] 表示清空。",
  449. "563": "按入参整表覆盖合同扫描件;attachments=[] 表示清空。",
  450. "564": "按入参整表覆盖合同扫描件;attachments=[] 表示清空。",
  451. "566": "按入参整表覆盖合同扫描件;attachments=[] 表示清空。",
  452. "568": "Java: createFromQuote — 返回合同 id",
  453. "571": "Java: createFromQuote — 返回合同 id",
  454. "572": "Java: createFromQuote — 返回合同 id",
  455. "573": "Java: createFromQuote — 返回合同 id",
  456. "575": "Java: renewContract — 基础续签",
  457. "576": "Java: renewContract — 基础续签",
  458. "577": "Java: renewContract — 基础续签",
  459. "578": "Java: renewContract — 基础续签",
  460. "581": "Java: renewContract — 基础续签",
  461. "582": "Java: queryList for export",
  462. "583": "Java: queryList for export",
  463. "584": "Java: queryList for export",
  464. "585": "Java: queryList for export",
  465. "586": "Java: queryList for export",
  466. "587": "Java: createFromOpportunity — 返回合同 id",
  467. "588": "Java: createFromOpportunity — 返回合同 id",
  468. "589": "Java: createFromOpportunity — 返回合同 id",
  469. "590": "Java: createFromOpportunity — 返回合同 id",
  470. "592": "Java: createFromOpportunity — 返回合同 id",
  471. "593": "Java: batchAssignOwner",
  472. "594": "Java: createFromOpportunity — 返回合同 id",
  473. "596": "Java: downloadContractPdf — 返回合同文件 URL/路径",
  474. "597": "Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}",
  475. "599": "Java: batchAssignOwner",
  476. "600": "Java: batchAssignOwner",
  477. "601": "Java: batchAssignOwner",
  478. "602": "Java: batchAssignOwner",
  479. "604": "Java: downloadContractPdf — 返回合同文件 URL/路径",
  480. "605": "Java: downloadContractPdf — 返回合同文件 URL/路径",
  481. "606": "Java: batchAssignOwner",
  482. "608": "Java: downloadContractPdf — 返回合同文件 URL/路径",
  483. "610": "Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}",
  484. "612": "Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}",
  485. "613": "Java: downloadContractPdf — 返回合同文件 URL/路径",
  486. "615": "Java: generateTemplateNo — TMPL{yyyyMMdd}{4位序号}",
  487. "616": "Java Controller TODO — 保持 pending,记录备注",
  488. "619": "Java Controller TODO — 保持 pending,记录备注",
  489. "620": "Java Controller TODO — 保持 pending,记录备注",
  490. "621": "Java Controller TODO — 保持 pending,记录备注",
  491. "622": "Java Controller TODO — 保持 pending,记录备注",
  492. "623": "Java Controller TODO — 保持 pending,记录备注",
  493. "626": "根据供需方面板与主数据生成/校正合同名称。",
  494. "627": "Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} 流水与撞号检测须含软删:uk_contr",
  495. "628": "Java: generateContractNo — {供方编码}/X-JT{yyyyMMdd}{3位序号} 流水与撞号检测须含软删:uk_contr",
  496. "631": "租户内合同编号是否已占用(含软删,保证全局唯一)。",
  497. "633": "标准编号替换日期段,保留序号;非标准返回 None。",
  498. "634": "租户内合同编号是否已占用(含软删,保证全局唯一)。",
  499. "639": "将标准合同编号日期段对齐签订日;撞号则序号顺延(含软删查重)。 非标准编号原样返回。无签订日则原样返回。",
  500. "640": "按面板单位全称精确匹配交易主体/客户主数据,取 shortName;对不上则用全称。",
  501. "642": "按面板单位全称精确匹配交易主体/客户主数据,取 shortName;对不上则用全称。",
  502. "644": "前端预览误用单位全称时,名称片段会等于面板/客户/开票全称。",
  503. "645": "按面板供方(partyA)-需方(partyB)生成:{供方简称}-{需方简称}({合同编号})。 - 名称为空:按主数据简称自动生成 - 名",
  504. "646": "前端预览误用单位全称时,名称片段会等于面板/客户/开票全称。",
  505. "650": "按面板供方(partyA)-需方(partyB)生成:{供方简称}-{需方简称}({合同编号})。 - 名称为空:按主数据简称自动生成 - 名",
  506. "651": "customer_follow.py",
  507. "652": "customer_pool.py",
  508. "653": "customer.py",
  509. "655": "invoice_info.py",
  510. "656": "pool_rule.py",
  511. "657": "price_letter.py",
  512. "658": "generate_auto_product_no",
  513. "659": "product.py",
  514. "660": "报价自动建档时生成产品编号(与产品管理新增规则一致)",
  515. "661": "Java: resolveProductIdForQuoteItem(CrmProduct 无 tax_rate,跳过税率匹配)",
  516. "662": "quote_approver_setting.py",
  517. "682": "statistics.py",
  518. "683": "supplier_info.py",
  519. "684": "__init__.py",
  520. "685": "leave.py",
  521. "686": "menu_favorite.py",
  522. "687": "base.py",
  523. "688": "__tablename__",
  524. "689": "__init__.py",
  525. "701": "attachment.py",
  526. "702": "auth.py",
  527. "703": "advance.py",
  528. "704": "validate_expense_item_id",
  529. "705": "attachment.py",
  530. "706": "validate_parent_id",
  531. "707": "__init__.py",
  532. "708": "invoice.py",
  533. "709": "coerce_attachment_id",
  534. "710": "details_must_not_be_empty",
  535. "711": "reimburse.py",
  536. "712": "validate_advance_id",
  537. "713": "validate_expense_item_id",
  538. "714": "validate_invoice_id",
  539. "715": "workflow.py",
  540. "716": "validate_approver_id",
  541. "717": "common.py",
  542. "718": "clue.py",
  543. "719": "contact.py",
  544. "720": "contract_approver_setting.py",
  545. "721": "contract.py",
  546. "732": "customer_follow.py",
  547. "733": "_forbid_legacy_invoice_fields",
  548. "734": "customer.py",
  549. "736": "invoice_info.py",
  550. "737": "opportunity.py",
  551. "738": "pool_rule.py",
  552. "739": "product.py",
  553. "740": "quote_approver_setting.py",
  554. "741": "quote.py",
  555. "742": "supplier_info.py",
  556. "743": "dashboard.py",
  557. "744": "__init__.py",
  558. "745": "plans.py",
  559. "746": "public_inventory.py",
  560. "747": "weighing.py",
  561. "748": "duty.py",
  562. "749": "_split_work_plans",
  563. "750": "__init__.py",
  564. "751": "leave.py",
  565. "752": "menu_favorite.py",
  566. "753": "menu.py",
  567. "754": "customer_stop_pref.py",
  568. "755": "check_ids",
  569. "756": "freight.py",
  570. "757": "__init__.py",
  571. "758": "io_order.py",
  572. "759": "plan.py",
  573. "762": "_coerce_resource_snapshot",
  574. "763": "transport_address.py",
  575. "764": "validate_coordinates",
  576. "765": "transport.py",
  577. "766": "validate_fuel_category",
  578. "767": "validate_fuel_liters",
  579. "768": "validate_odometer_km",
  580. "769": "validate_amount",
  581. "770": "validate_amount",
  582. "771": "validate_recharge_type",
  583. "772": "validate_amount",
  584. "773": "validate_apply_amount",
  585. "774": "validate_quantity",
  586. "775": "workflow.py",
  587. "776": "approve",
  588. "777": "create",
  589. "778": "finance_issue_stats",
  590. "779": "get_by_id",
  591. "780": "get_paged",
  592. "781": "global_status_counts",
  593. "782": "issue",
  594. "783": "_latest_approval_per_node",
  595. "784": "_my_apply_base",
  596. "785": "my_apply_stats",
  597. "786": "offset_amount_map",
  598. "787": "pending_approval_stats",
  599. "788": "advance.py",
  600. "789": "_query_approvals",
  601. "790": "同一节点多次审批时,取 approval_time 最新的一条作为当前节点状态。",
  602. "792": "reject",
  603. "793": "soft_delete",
  604. "794": "submit",
  605. "795": "_tenant_no",
  606. "796": "update",
  607. "797": "withdraw",
  608. "798": "_workflow_nodes",
  609. "799": "count_invoice_attach_by_biz_ids",
  610. "800": "create",
  611. "801": "get_by_biz",
  612. "802": "get_by_id",
  613. "803": "attachment.py",
  614. "804": "soft_delete",
  615. "805": "_tenant_no",
  616. "806": "get_by_id",
  617. "807": "get_paged",
  618. "808": "base.py",
  619. "809": "soft_delete",
  620. "810": "update",
  621. "811": "_build_tree",
  622. "812": "create",
  623. "813": "get_by_id",
  624. "814": "get_item_tree",
  625. "815": "expense_item.py",
  626. "816": "soft_delete",
  627. "817": "_tenant_no",
  628. "818": "update",
  629. "819": "can_query_others_wallet",
  630. "820": "_count_invoices",
  631. "821": "create",
  632. "822": "delete",
  633. "823": "get_mine_summary",
  634. "824": "is_wallet_admin",
  635. "825": "add_entry",
  636. "826": "assert_can_delete_invoice",
  637. "827": "calc_summary",
  638. "828": "debit_reimburse",
  639. "829": "list_entries",
  640. "830": "_lock_summary",
  641. "831": "refresh_summary",
  642. "832": "release_reimburse",
  643. "833": "list_ledgers",
  644. "834": "list_wallets",
  645. "835": "_lookup_user_name",
  646. "836": "out_rows_with_attachments",
  647. "837": "invoice.py",
  648. "840": "_require_wallet_admin",
  649. "841": "_resolve_owner",
  650. "842": "_resolve_owner_for_query",
  651. "843": "_summary_to_dict",
  652. "844": "_tenant_no",
  653. "845": "list_sort.py",
  654. "846": "_approval_record_dict",
  655. "847": "batch_offset",
  656. "848": "build_apply_out_with_details",
  657. "849": "build_expense_name_condition",
  658. "850": "can_change_applicant",
  659. "851": "detail_expense_keyword_match",
  660. "852": "finance_payment_stats",
  661. "853": "get_by_id",
  662. "854": "get_details",
  663. "855": "get_details_map_by_reimburse_ids",
  664. "856": "get_linked_invoice_ids",
  665. "857": "get_linked_invoice_ids_map",
  666. "858": "get_linked_invoices_brief",
  667. "859": "get_paged",
  668. "860": "global_status_counts",
  669. "861": "_has_debit_reimburse",
  670. "862": "_latest_approval_per_node",
  671. "863": "_my_apply_base",
  672. "864": "my_apply_stats",
  673. "865": "normalize_invoice_links",
  674. "866": "offset",
  675. "867": "out_one_with_attachment_counts",
  676. "868": "out_rows_with_attachment_counts",
  677. "869": "pay",
  678. "870": "reimburse.py",
  679. "871": "_query_approvals",
  680. "874": "reject",
  681. "875": "resolve_applicant",
  682. "876": "soft_delete",
  683. "877": "submit",
  684. "878": "sync_reimburse_invoices",
  685. "879": "_tenant_no",
  686. "880": "update_with_details",
  687. "881": "withdraw",
  688. "882": "_workflow_nodes",
  689. "883": "ensure_by_biz_type",
  690. "884": "get_by_biz_type",
  691. "885": "get_by_id",
  692. "886": "get_paged",
  693. "887": "workflow.py",
  694. "888": "save_nodes",
  695. "889": "soft_delete",
  696. "890": "_tenant_no",
  697. "891": "update",
  698. "892": "__init__.py",
  699. "893": "list_sort.py",
  700. "894": "list_sort.py",
  701. "895": "plan_list_filters.py",
  702. "898": "返回 productId -> 三数量字段。",
  703. "900": "按复合键匹配合同产品行;同键多行时 quantity 相加(防御)。",
  704. "907": "product_id -> {archivedQty, arrangedUnarchivedQty, arrangedTotalQty}",
  705. "915": "按段 upsert 地磅出入库与 link:新建 / 就地更新 / 取消勾选软删。 返回 (link_results, warnings)。已过磅取消",
  706. "919": "勾选「生成地磅单」:按产品生成/复用地磅计划,并创建关联出入库单。",
  707. "920": "未过磅且状态可作废时,可就地更新日期/往来/车牌/数量。",
  708. "923": "就地更新已有出入库可变字段;不可编辑时写 warnings,不抛错。",
  709. "925": "按装货/送货段勾选生成地磅计划与出入库单。",
  710. "935": "__init__.py",
  711. "936": "list_sort.py",
  712. "938": "构建归档导出数据行:每计划 × 每段次 × 每段产品一行。",
  713. "941": "单侧保存计划合同关联(旧计划级接口,兼容保留)。",
  714. "967": "_soft_delete_plan_stops",
  715. "971": "_resolve_plan_flags",
  716. "972": "_compare",
  717. "973": "_get_variable",
  718. "974": "_parse_node_config",
  719. "975": "_parse_variables",
  720. "976": "__init__.py",
  721. "977": "分配同租户、同报销日期下的标题序号(MAX+1)。 配合 uk_tenant_reimburse_date_title_seq 唯一约束,并发冲突时由上",
  722. "980": "code:bash (cd /path/to/shanxia2.0)",
  723. "981": "code:bash (./start-prod.sh status # 查看状态)",
  724. "982": "code:bash (curl -s http://127.0.0.1:9111/health)",
  725. "983": "code:bash (cd /iflytek/shanxia2.0/backend)",
  726. "984": "code:bash (python -m venv venv)",
  727. "985": "code:bash (pip install -r requirements.txt)",
  728. "986": "code:env (# 数据库配置)",
  729. "987": "code:bash (uvicorn app.main:app --reload --port 8000)",
  730. "988": "BaseModel",
  731. "989": "BxApplyListExportBody",
  732. "990": "BxExportBodyBase",
  733. "991": "CustomerColumnFilterMixin",
  734. "992": "PlanResourceSnapshotMixin",
  735. "993": "import_key",
  736. "994": ".getdel",
  737. "995": "test_consume_unknown_returns_none",
  738. "996": "test_consume_without_redis_raises",
  739. "997": "test_issue_and_consume_once",
  740. "998": "test_issue_without_redis_falls_back_to_signed",
  741. "999": "test_issue_without_redis_raises",
  742. "1000": "test_recharge_record_badge_counts_only_pending_etc"
  743. }