v6ole
|
4afa796ddc
|
fix: 客户列表多 primary 经理时顿号连接显示(修复字典覆盖)
- mgr_map 由字典推导式改为按 customer_id 聚合 list,再用顿号连接
- 修复同一客户多个 primary 经理时,后写入覆盖先写入导致只显示一个名字
数据修复: 大化瑶族自治县公安局交通警察大队 移除韦柳柏的 primary 分配,唐晓静为唯一 primary
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 09:43:58 +08:00 |
|
v6ole
|
ab20bc5a1f
|
Merge branch 'main' into develop
# Conflicts:
# backend/app/api/key_visits.py
# backend/app/api/mini_business.py
# backend/app/api/visits.py
# backend/app/api/work_plans.py
# backend/app/main.py
# backend/app/models/__init__.py
# backend/app/schemas/key_visit.py
# backend/app/schemas/mini_business.py
# backend/app/schemas/work_plan.py
# backend/app/services/light_board.py
# frontend/src/components/DesktopLayout.vue
# frontend/src/stores/theme.ts
# frontend/src/views/desktop/ManagerWorkspace.vue
# frontend/src/views/desktop/WorkPlans.vue
# frontend/src/views/mobile/KeyVisitForm.vue
# frontend/src/views/mobile/LeaveForm.vue
# frontend/src/views/mobile/PlansList.vue
# frontend/src/views/mobile/VisitForm.vue
# frontend/src/views/mobile/WorkPlanForm.vue
|
2026-08-17 09:31:12 +08:00 |
|
v6ole
|
1ec20ee53e
|
chore: 保存进行中的未提交改动(企微定向推送+搜索筛选UI等)
保存合并前工作树中遗留的进行中改动,避免分支合并时丢失:
- scheduler: 填报汇总改为定向推送给支局长/领导(而非广播@all)
- router: JWT token 校验修复,bind token(UUID)不被误剥离
- 工作计划/计划列表: 搜索+筛选+分页 UI
- 各列表 API 增加 search 参数支持
- docker-compose.backend.yml + backend/.dockerignore 纳入版本管理
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 09:17:03 +08:00 |
|
v6ole
|
c9df6066f5
|
fix: 亮灯表重复卡片 — 修复同客户经理同日多条拜访导致的 fan-out
- 原查询用 outerjoin(Visit, visit_date == MAX(visit_date)) 获取拜访方式,
当同一天有多条拜访(协同拜访)时会扩展成多行,导致亮灯表同一客户显示多张卡片
- 改用 DISTINCT ON (manager_id, customer_id) 子查询,保证每对(经理,客户)
只取最新一条拜访,消除重复
- 移除不再使用的 func 导入
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-08-17 09:06:36 +08:00 |
|
v6ole
|
804812dd7e
|
feat: 企业微信OAuth静默登录
- 新增 GET /api/wecom/oauth-url 和 /api/wecom/oauth-callback
- OAuth回调返回HTML页面直接写localStorage(避坑企微webview 307重定向不可靠)
- 菜单URL改为OAuth静默授权链接(snsapi_base + agentid)
- redirect目标编码到state参数中(避坑redirect_uri不允许自定义query)
- wecom_userid大小写不敏感匹配
- 前端路由守卫处理 ?token= 自动登录(fallback)
- Login.vue企微环境检测自动跳OAuth
- setup-menu同步更新为OAuth链接
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-30 12:33:43 +08:00 |
|
v6ole
|
4139b54a57
|
docs: 企业微信OAuth静默登录踩坑记录
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-30 12:31:00 +08:00 |
|
v6ole
|
2187be7aeb
|
feat: 操作日志系统 + 日期修复 + 协同去重 + 主题持久化 + 计划自动完成
本次累积提交包含以下功能:
1. 修复:el-date-picker 缺失 value-format 导致日期保存偏移(8处)
2. 新增:协同拜访 visit_group_id 去重机制(完整副本 + 周报合并 + 亮灯去重)
3. 新增:计划自动完成(创建计划检测已有拜访 / 编辑拜访触发)
4. 新增:拜访表单选择客户后自动预填过期计划内容
5. 新增:移动端主题切换按钮 + 后端持久化
6. 新增:操作日志系统 (audit_logs),全覆盖 8 个模块 CRUD
7. 新增:PC端「我的数据」支局长/领导视角客户经理列
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-30 12:01:14 +08:00 |
|
v6ole
|
9b5805447e
|
docs: 协同拜访记录去重设计方案
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-30 09:55:08 +08:00 |
|
v6ole
|
80d2716b7c
|
deploy: manage backend with systemd
|
2026-07-28 17:38:45 +08:00 |
|
v6ole
|
c7bb49776c
|
fix(migrations): support virtualenv Alembic execution
|
2026-07-28 17:38:17 +08:00 |
|
v6ole
|
687d7cc131
|
ci(security): add SBOM scan and release evidence
|
2026-07-28 17:03:13 +08:00 |
|
v6ole
|
4bfe2900fb
|
build(security): add migration and CI security gates
|
2026-07-28 16:41:36 +08:00 |
|
v6ole
|
6b43b77c3b
|
fix(security): harden uploads and wecom binding
|
2026-07-28 12:18:45 +08:00 |
|
v6ole
|
29e4e4a804
|
fix(security): remediate telecom compliance findings
|
2026-07-28 11:33:05 +08:00 |
|
v6ole
|
7f87aa7353
|
fix: 请假表单日期序列化与错误消息格式化修复
- el-date-picker 添加 value-format="YYYY-MM-DD",确保日期以字符串格式发送而非 ISO datetime,修复后端 Pydantic date 校验 422 错误
- 错误处理中正确解析 FastAPI 422 返回的 detail 数组,提取 msg 字段拼接显示,修复 [object Object] 显示问题
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-28 11:02:26 +08:00 |
|
v6ole
|
ccb436664b
|
fix: Element Plus暗色CSS变量覆盖 + 设置页对经理开放(仅主题)
- App.vue: 新增 html.dark --el-* 变量全覆盖(30+变量),修复所有select/input/dropdown/table/pagination等组件暗色背景
- DesktopLayout: 设置页对所有角色开放,用户管理仍限支局长
- Settings: 经理只显示主题面板,其他6个管理模块仅支局长可见
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 08:42:29 +08:00 |
|
v6ole
|
af3d3bfc89
|
fix: 暗黑模式UI优化 — 导航栏/页面背景互换, Element Plus组件适配, 亮灯表卡片+仪表盘图标暗色适配
- 极简/科技深色: 导航栏和页面背景颜色互换(sidebar更亮,page更暗)
- 新增20+条 Element Plus 暗色全局覆盖(input/select/table/pagination/button/dialog/tabs/date-picker等)
- Dashboard: stat-glyph在暗色下移除背景色(参考本周请假), progress-row背景降低亮度
- LightBoard: 卡片文字固定深色(card背景是浅色), light-dot适配暗色背景
- 新增 --c-bg-light token 防止暗色下summary-bar回退到浅色
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 08:29:58 +08:00 |
|
v6ole
|
5b55029576
|
fix: 修复logout清除新主题偏好; 移除DesktopLayout未使用的themeLabels导入
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:51:17 +08:00 |
|
v6ole
|
e14308b757
|
feat: 新增 minimal-dark 和 tech-dark 两套暗色 CSS 变量
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:48:14 +08:00 |
|
v6ole
|
ce24937ba0
|
feat: 改造 theme store 支持暗黑模式双选架构
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:45:56 +08:00 |
|
v6ole
|
6fd9cfbff9
|
chore: 更新 components.d.ts 自动生成文件
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:34:03 +08:00 |
|
v6ole
|
ee3f76d960
|
docs: 更新 CLAUDE.md — 个人用户+移动端导航+我的数据优化决策
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:29:27 +08:00 |
|
v6ole
|
a9344eadae
|
fix: 日期选择框和搜索框统一宽度240px; 搜索按钮改为文字
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:27:55 +08:00 |
|
v6ole
|
392380ab51
|
fix: 日期选择合并为daterange; 搜索框+日期选择移至标题行
- 两个独立month picker合并为一个daterange选择器
- 日期选择+搜索框移至我的工作数据标题同行
- 搜索框增加搜索按钮
- 移除新建按钮
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:25:52 +08:00 |
|
v6ole
|
7699e88578
|
feat: 我的数据页面日期筛选改为月度选择器+新建按钮移至筛选栏
- 替换固定周期(本周/本月/本年)为 el-date-picker type=month
- 支持任意月份筛选,选完自动刷新
- 新建按钮移至筛选栏最右侧,与搜索框同行
- 各Tab内移除独立的创建按钮
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:12:05 +08:00 |
|
v6ole
|
f89638b3f0
|
feat: 桌面端工作计划/商机/要客列表新增搜索框
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:06:56 +08:00 |
|
v6ole
|
04f701b27c
|
fix: 移动端列表页搜索框和按钮去掉size=small,使用默认大小
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 01:02:35 +08:00 |
|
v6ole
|
07c6f65378
|
fix: 商机跟单/要客拜访搜索框漏传params参数
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:59:53 +08:00 |
|
v6ole
|
cdbe59e97f
|
feat: 5个列表API新增搜索参数支持
- visits: search沟通内容/客户需求/拜访人/客户名
- daily_notes: search内容
- work_plans: search计划内容/客户名
- mini_business: search产品/跟进/客户名
- key_visits: search描述/拜访人/客户名
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:55:43 +08:00 |
|
v6ole
|
e7125ff930
|
docs: 更新 CLAUDE.md — 个人用户决策
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:50:22 +08:00 |
|
v6ole
|
72d869bafb
|
feat: 移动端列表页支持搜索+分页(25条/页);历史移至请假后
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:49:43 +08:00 |
|
v6ole
|
3059f0e7e4
|
feat: 移动端工作中心新增历史拜访+历史纪要
- 工作中心新增两个卡片入口:历史拜访 / 历史纪要
- VisitsList.vue: 拜访历史记录列表,点击进入编辑
- NotesList.vue: 纪要历史记录列表,点击进入编辑
- 复用已有编辑表单(VisitForm/DailyNoteForm edit mode)
- 网格改为3列布局容纳6个卡片
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:32:16 +08:00 |
|
v6ole
|
d6dec7f9af
|
feat: 我的数据页面新增日期筛选+搜索+分页
- 本周/本月/本年/全部 四个时间范围筛选(默认本月)
- 关键词搜索所有内容
- el-pagination 分页(25/50/100条每页)
- 每个Tab独立分页状态
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:25:21 +08:00 |
|
v6ole
|
ff07e9c470
|
fix: 图片上传改用 POST + axios.put,与ManagerWorkspace一致
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:17:33 +08:00 |
|
v6ole
|
c55ea18aaf
|
feat: 个人用户拜访编辑新增照片查看/删除/上传功能
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:14:40 +08:00 |
|
v6ole
|
32ca029580
|
fix: 个人用户编辑弹窗与我的数据保持一致—补全四模块全部字段
- 拜访: 客户经理/日期/方式/时间/拜访人/电话/相关人员/内容/需求
- 计划: 客户经理/计划日期/内容/状态
- 商机: 客户经理/产品/金额/跟进/状态/预计列收(月选择器)
- 要客: 客户经理/紧急度/描述/进展/时间/拜访人/对象
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:12:09 +08:00 |
|
v6ole
|
ae29a17825
|
fix: 个人用户拜访编辑弹窗补全所有字段
客户经理/日期/方式/时间/拜访人/电话/沟通内容/客户需求
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:08:13 +08:00 |
|
v6ole
|
1fddc35119
|
feat: 个人用户视图表格新增编辑按钮+编辑弹窗
4个Tab的表格均添编辑按钮,点击弹窗可编辑关键字段并保存/删除
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:04:32 +08:00 |
|
v6ole
|
9a39b96316
|
fix: 客户类型Tab改为自定义按钮样式,匹配整体设计风格
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-13 00:01:02 +08:00 |
|
v6ole
|
83c87cad3d
|
fix: 个人用户Tab禁用新建客户按钮
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 23:58:38 +08:00 |
|
v6ole
|
9f3067b412
|
fix: 单位客户列表API请求加上 customer_type 筛选参数
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 23:52:26 +08:00 |
|
v6ole
|
7c75164323
|
feat: 个人用户拜访记录新增拜访人+客户经理列
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 22:19:14 +08:00 |
|
v6ole
|
6504a393e3
|
feat: 个人用户聚合视图 — 客户管理双Tab+四模块数据聚合
- customers 表新增 customer_type 列 (unit/individual)
- 客户管理页:单位客户 | 个人用户 Tab 切换
- 个人用户 Tab: 直接内嵌4 Tab 显示所有个人用户的聚合数据
- 个人用户通过业务模块快速新建产生 (customer_type=individual)
- 4个业务API新增 customer_type 筛选参数(JOIN customers)
- 客户列表排序: 个人用户置顶
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 22:14:44 +08:00 |
|
v6ole
|
835e5d38fd
|
Revert "feat: 客户管理新增个人用户类型,双Tab分离管理"
This reverts commit 03198557f7.
|
2026-07-12 21:45:23 +08:00 |
|
v6ole
|
03198557f7
|
feat: 客户管理新增个人用户类型,双Tab分离管理
- customers 表新增 customer_type 列 (unit/individual)
- 列表按个人优先排序,支持 customer_type 筛选
- PC端 el-radio-group 切换:单位客户 | 个人用户
- 个人用户表单: 仅姓名+备注,隐藏行业/地址/业务/月费/客户经理/联系人
- 所有业务模块客户搜索下拉中个人用户置顶
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 21:43:08 +08:00 |
|
v6ole
|
98a0d4f7c8
|
fix: 客户详情顶部信息区用卡片样式区分Tab区域
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 21:09:58 +08:00 |
|
v6ole
|
05d33d518f
|
feat: 客户详情弹窗新增拜访/计划/商机/要客四个关联数据Tab
点击客户名 → 800px 弹窗,顶部显示基本信息,下方 el-tabs 切换:
- 拜访记录 / 工作计划 / 商机跟单 / 要客拜访
- 各 Tab 并行加载对应 customer_id 筛选数据
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 21:03:10 +08:00 |
|
v6ole
|
9354752b89
|
fix: 商机改为已流失时前端自动清空列收时间再提交
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 20:56:03 +08:00 |
|
v6ole
|
82755e14a1
|
fix: 桌面端支局长/领导新建记录时客户经理栏显示UUID
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 20:50:07 +08:00 |
|
v6ole
|
20f5b01987
|
feat: 商机跟单默认筛选跟进中 + 已流失置底 + 清空列收
- 后端: 状态改为已流失时自动清空 expected_revenue_date
- PC端: 默认筛选跟进中,排序 跟进中→已签约→已流失
- 移动端: 列表自动排序,已流失在最底部
Co-Authored-By: Claude <noreply@anthropic.com>
|
2026-07-12 20:49:01 +08:00 |
|