Commit Graph

1042 Commits

Author SHA1 Message Date
mzl92 37e63637a4 feat: 合塑谷歌网站whatsapp询盘导入命令(截图传OSS+建档+分配+邮件)
新命令 inquiry:import-hesu-google-wa:
- 解析 WhatsApp 询盘 Excel(列头:WhatsApp号码/最后留言/截图文件名等)
- 号码归一化(去横线空格);contacts=号码、号码存 WhatsApp 字段、phone/email 空
- 按号码去重:对比库内 crm_customer 的 WhatsApp 与 phone 两列 + 文件内同号只留首条
- 截图按文件名从 --images-dir 找图传 OSS(OSS_MAIN_DIR/crm_whatsapp/),
  对象键写入 desc_collect;缺失/失败不阻断,dry-run 只报数量不上传
- 建档口径:corp_id=1、channel_id=4、type=2、grade=0、magnitude=2、created_at=当前
- --users 轮询分配;汇总邮件复用 InquiryDigestMail,manifest 防重发
- 支持 --dry-run / --no-notify / --notify-only / --only-user 分步执行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 16:26:31 +08:00
mzl92 3a3ed12fd5 feat: 合塑谷歌网站询盘导入命令(新询盘建档+分配+邮件)
新命令 inquiry:import-hesu-google,处理库外新询盘 Excel:
- 按表头名解析(客户姓名/电话WhatsApp合并列/邮箱/留言内容/产品页链接)
- 建档固定口径:corp_id=1(合塑)、channel_id=4(合塑谷歌)、type=2(导入)、
  grade=0、magnitude=2、created_at=当前时间、code 走模型钩子自动生成
- desc_collect=留言内容+产品页链接,intended_vehicles=从 URL 提取车型 slug
- 去重:电话或邮箱与现有未删除客户重复(含文件内重复)跳过并列清单
- 轮询分配 --users;汇总邮件复用 InquiryDigestMail,manifest 防重发
- 支持 --dry-run / --no-notify / --notify-only / --only-user 分步执行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-18 14:40:53 +08:00
mzl92 e096157063 feat: 备货单成交统计报告生成脚本(固定工具)
scripts/stock_deal_report.py:从 Navicat 全库 dump 流式解析 stock_orders/items,
按单据日期统计成交(有备货单即成交),支持单月/区间:
- 剔除草稿/拒绝/作废;初终版(object_id 互指)同月并存只计终版
- 新车/二手车按明细 mileage 判定;国家取清关目的国
- 输出 PDF 报告(月度分布/车型/国家/业务员/详单)+ 详单 CSV
- 每个 dump 自动建解析缓存,重跑秒级

用法:python3 scripts/stock_deal_report.py --year 2026 --month 7
      python3 scripts/stock_deal_report.py --frm 2026-01 --to 2026-06

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-14 09:49:25 +08:00
mzl92 06b0647fc4 feat: 备货单车辆明细支持 attachment 附件字段
按前端对接文档,stock_order_items 每辆车支持附件 [{url,original_name}]:
- 模型 StockOrderItems:fillable 增加 attachment,新增 $casts=['attachment'=>'array']
  (写自动 json_encode 落库、读自动 decode 回显)
- processVehicleItems:create 前归一化 attachment 为数组(store/update 共用此路径)
- generateVehicleUniqueId:排除 attachment,避免附件影响车辆去重/数量

show/detail 经模型 items 关系 + cast 自动回显 attachment;字段已由前端在库表就绪。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 15:01:03 +08:00
mzl92 6e2e8e1cc6 feat: 备货单列表支持 view_scope(all/self) 视图切换(仅 user_id=73)
在 /crm/stock/order/list 的 buildQueryConfig index 分支最前面短路:
- 仅当前用户 uid=73 且传 view_scope 时生效,最高优先级,覆盖角色范围逻辑
- all:自己和别人的单,排除草稿(approval_status>=1)
- self:只看自己(salesperson_id=73,含自己草稿)
- 非73用户或未传该参数:走原逻辑,向后兼容,无越权

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-06 11:49:28 +08:00
mzl92 b2684ecbb2 feat: 询盘批量分配接入事务写库与汇总邮件发送
- applyAssignments: 单事务更新 crm_customer.user_id + 写 crm_customer_his
- sendDigests: 按 user 表邮箱每人发一封汇总邮件,失败重试1次
- manifest: runtime 下 JSON 记录 emailed 状态,防重复发送
- 新增 --no-notify(只写库不发邮件),与 --notify-only 配合分步执行

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-17 15:09:52 +08:00
mzl92 61c34db99e feat: 新增询盘批量分配命令(骨架+Excel解析+code匹配+dry-run)
- InquiryDigestMail: 汇总邮件 HTML 模板
- InquiryBulkAssignCommand: assign 轮询、parseExcel、matchCustomers(code+排除软删除)、dry-run 报告、--self-test

写库/发邮件逻辑见后续提交。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-17 14:56:36 +08:00
mzl92 3d3caddc7d docs: 询盘批量分配+汇总邮件方案设计
崔琪2.xlsx 1427 条询盘按 Excel 行序轮询分配给 6 名业务员,
更新 crm_customer.user_id 并发每人一封汇总邮件。

Co-Authored-By: Claude <noreply@anthropic.com>
2026-07-17 14:46:04 +08:00
mzl92 b89ac48dd8 feat: 新增业务人员公共接口(role_id=2,全量返回)
- PublicApiController 新增 staffList():通过 user_roles 关联筛选业务人员
- 返回 id/name/sn/phone/email,支持 keyword 模糊匹配,不分页全量返回
- 路由组新增 /common/public/staff/list
- .gitignore 忽略 docs/*.sql(数据导出文件,不入库)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-18 13:37:48 +08:00
mzl92 71dca13119 fix: fb_leads 导入时对 full_name 增加 URL 过滤与长度截断
修复询盘自动导入因 full_name 含粘连 URL(如 "Saif Ullahhttps://...")
导致同步到 inquiry_log.contacts(varchar 255) 时超长报错、整批回滚卡死的问题。

- 新增 normalizeFullName():去掉粘连 URL + 截断到 255
- switch 新增 full_name 分支

Co-Authored-By: Claude <noreply@anthropic.com>
2026-06-16 16:47:42 +08:00
mzl92 35d98c16e9 feat: 新增备货单公共 API 接口(PI 号/VIN 号列表)
- 新增 ApiKeyAuth 中间件(hash_equals 防时序攻击)
- 新增 PublicApiController(piList/vinList 两个只读接口)
- 仅返回已审批通过(approval_status=2)的数据,支持分页和模糊搜索
- LIKE 通配符已转义,异常信息不暴露内部细节
- 附对接文档 docs/public-stock-api.md

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-02 17:44:53 +08:00
mzl92 929bae6f13 Finish Hotfix-1 2026-03-16 14:37:54 +08:00
mzl92 a72b30a699 调整合塑询单分配人 2026-03-16 14:37:39 +08:00
18338781771 75a59a7197 优化 2026-03-03 17:44:10 +08:00
18338781771 30f3e211af 抓取品牌 2026-02-05 09:16:24 +08:00
18338781771 eee09316df 抓取车型信息 2026-02-04 17:35:08 +08:00
mzl 2da3804953 Finish Hotfix-1 2026-02-03 11:15:03 +08:00
mzl eae699cd27 ts 2026-02-03 11:14:45 +08:00
18338781771 4ea4204ff4 渠道调整 2026-02-03 10:51:08 +08:00
18338781771 67a39917f0 过滤未提交的 2026-01-22 17:20:29 +08:00
mzl92 b6851cdef0 Finish Hotfix-1 2026-01-22 10:15:19 +08:00
mzl92 733996f346 修改询盘自动配置 2026-01-22 10:15:05 +08:00
18338781771 607de6c70a 超管 2026-01-20 15:41:24 +08:00
18338781771 e7c5e17592 内勤可以看自己组员的备货单 2026-01-20 15:30:24 +08:00
mzl92 2ec89a880a Finish Hotfix-1 2026-01-08 15:08:44 +08:00
mzl92 dffaac5b07 ts 2026-01-08 15:08:35 +08:00
mzl92 907be759a0 Finish Hotfix-1 2026-01-08 15:04:47 +08:00
mzl92 f7b94da39f ts 2026-01-08 15:04:39 +08:00
mzl92 c6fada47fc Finish Hotfix-1 2026-01-08 15:02:05 +08:00
mzl92 b09e695ca7 ts 2026-01-08 15:01:51 +08:00
mzl92 de39108efa Finish Hotfix-1 2026-01-08 14:49:54 +08:00
mzl92 7dceb4b828 ts 2026-01-08 14:49:44 +08:00
mzl92 d056ba5f6f Finish Hotfix-1 2026-01-08 09:14:34 +08:00
mzl92 99551bba7f 移除加纳询盘独立分配 2026-01-08 09:14:17 +08:00
18338781771 5e06b1737c Merge branch 'hotfix/email' 2026-01-05 09:44:33 +08:00
18338781771 b43335c0d9 邮件清洗查询状态过滤 2026-01-05 09:44:26 +08:00
18338781771 ac6bfcf16c Merge branch 'hotfix/email' 2026-01-04 16:13:55 +08:00
18338781771 9f74934f37 邮件 2026-01-04 16:13:21 +08:00
18338781771 9776df8289 Merge branch 'hotfix/email' 2026-01-04 15:50:50 +08:00
18338781771 6178084612 邮件 2026-01-04 15:50:43 +08:00
18338781771 d58c33e758 Merge branch 'hotfix/email' 2026-01-04 14:40:54 +08:00
18338781771 24e45f93db 邮件 2026-01-04 14:40:43 +08:00
18338781771 530d72071f Merge branch 'hotfix/email' 2026-01-04 13:39:59 +08:00
18338781771 8382a47a8c 邮件处理 2026-01-04 13:32:15 +08:00
18338781771 f83e578bed Merge branch 'hotfix/email' 2026-01-04 13:26:12 +08:00
18338781771 2c00a35b6a 发布人 2026-01-04 13:26:00 +08:00
18338781771 cd597b9605 Merge branch 'hotfix/email' 2026-01-04 11:46:28 +08:00
18338781771 259a7d2ae6 判断询盘 2026-01-04 11:46:04 +08:00
18338781771 10d3701ab0 Merge branch 'hotfix/email' 2026-01-04 11:02:59 +08:00
18338781771 279139e18f 1 2026-01-04 11:01:29 +08:00