caoqianming
bf70b3f462
refactor(h5): H5 静态产物路径改为 backend/dist/h5/
...
与 PC 的 backend/dist/ 同目录复用,部署时手动把 frontend-h5/dist/* 拷进 backend/dist/h5/ 即可,
不需调整 settings.py 的现有 dist 路径。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 10:41:00 +08:00
caoqianming
ff3c0d8fea
feat(h5): runserver 同时托管 H5 SPA
...
- 新增 /m/ 路由:直出 frontend-h5/dist 下静态资源;不存在的路径回退到 dist/index.html
以支持 vue-router history 模式刷新/直链
- PC 通配路由排除 m/,避免被 PC 的 index.html 拦截
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 10:19:51 +08:00
caoqianming
d1201d6923
refactor(material): 改用显式失效缓存,移除 signals;TTL 30min → 5min
...
- 删除 signals.py,改在 approve / reject / perform_destroy / import_excel 四个会影响
已审核材料集合的入口显式调用 invalidate_category_tree_cache(),调用栈可见、易追踪
- reject 与 perform_destroy 仅当原状态为 approved 时才失效,避免无效缓存抖动
- TTL 由 30 分钟降为 5 分钟,作为兜底防止遗漏路径
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 09:36:11 +08:00
caoqianming
25587dce21
perf(h5): 合并为单次 category-tree 接口 + 后端缓存
...
- 后端新增 /material/category-tree/ 一次性聚合 (大类→种类→子类),使用 Django cache 全局缓存(30 分钟)
- Material post_save / post_delete 信号自动失效缓存,保证一致性
- H5 首页从 4 次并行请求降为 1 次;命中缓存时不打 DB
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-27 09:34:29 +08:00
caoqianming
815e8df10b
feat(material): 新增 H5 大类/种类聚合查询接口
...
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 15:51:17 +08:00
caoqianming
4db17db5e4
feat(material): 调整工具栏第一行筛选项
...
- 材料大类、材料种类(原"细分种类",改为下拉)上移第一行
- 品牌下移到高级筛选
- 列标题"细分种类"改为"材料种类"
- 后端 material_category 改为 exact 匹配(配合下拉)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 14:22:28 +08:00
caoqianming
99e6df0a57
feat(material): 列表序列化器与筛选扩展
...
- MaterialListSerializer 补全 A 组字段(规格/应用/优势/成本/星级/施工)
- 新增供应商扩展字段 factory_cooperation_mode/display/province/city
- MaterialSerializer 同步供应商扩展字段供详情使用
- 视图 queryset 增加 select_related('factory','brand')
- 新增筛选: stage / importance_level / factory / cooperation_mode /
landing_project / cost_compare 区间 / score_level>=N / contact_person / handler
- material_category 改为 icontains 模糊匹配
- choices 接口追加 cooperation_mode
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-24 14:11:35 +08:00
caoqianming
faff711915
feat: 供应商新增统一社会信用代码、合作模式、交互能力字段
...
- 模型加 unified_social_credit_code / cooperation_mode / interaction_capability,DB 均可空以兼容存量数据
- 序列化器显式 required=True 并做 18 位大写字母数字正则校验
- 列表页加「合作模式」列;新增/编辑表单加对应控件及校验规则
- 详情页展示三项新字段,交互能力保留换行
- 存量数据策略:DB 允许空、表单必填;旧数据首次编辑需补齐
2026-04-24 10:10:56 +08:00
caoqianming
1245fb3da8
fix: 材料"材料单位名称"文案统一改为"供应商"
...
- 模型 verbose_name、Excel 导入别名(兼容历史表头)、导出表头、
前端材料列表列和表单 label 一并同步
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 22:04:38 +08:00
caoqianming
85ed7a20c1
fix: 大屏统计按新品牌实体,材料种类统计改为细分种类并排除空值
...
- 材料种类卡片:从 material_subcategory 改为 material_category 去重计数,排除 null/空
- 材料子类分布图:排除 material_subcategory 为空的材料,避免出现 null 类目
- 品牌数卡片:从 Factory.count 改为 Brand.count
- 品牌材料分布图:按 material.brand.name 分组,排除无品牌材料;前端字段同步
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 22:01:59 +08:00
caoqianming
75dde5243e
feat: 新增品牌实体 + 材料关联品牌 + Factory.brand 改名 short_name
...
- 新增 brand app(Brand 模型/CRUD API,读认证用户、写管理员、PROTECT 删除)
- Material 新增 brand 外键(PROTECT,数据库可空,前端必填)
- Factory.brand 改名 short_name,并附带数据迁移从 factory.short_name
回填 Material.brand 实现历史数据一步到位
- 前端新增品牌库菜单/页面/API,材料管理加品牌列/筛选/表单下拉,
材料详情显示品牌,供应商页面文案同步改为"供应商简称"
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-23 21:54:09 +08:00
shijing
c1758ca649
fix:3.20日材料可导入,导入后导出系统存在字段导出,然后补充完善后再导入
2026-03-23 13:52:13 +08:00
shijing
da6cd31ce8
fix:联系方式宽度调整,导入时无账号的生成账号
2026-03-20 16:44:55 +08:00
shijing
9c894d2904
fix:excel导入的数据状态直接为已审核
2026-03-20 10:12:50 +08:00
shijing
c1d18c888c
fix:模板问题修改
2026-03-19 17:17:30 +08:00
shijing
e3c626aba2
fix:材料表导入
2026-03-19 11:14:57 +08:00
shijing
eb85d3a78a
fix:添加表格中新增的字段
2026-03-19 10:00:36 +08:00
shijing
a6456966b6
feat:材料添加“阶段”和“重要等级”两列,并且返回按createtime倒序
2026-03-18 16:39:15 +08:00
caoqianming
c6ba742f9d
feat: 省市区存储文字、工厂关联用户账号、大屏图表主题优化
...
- 省市区字段改为存储文字名称而非编码
- 工厂序列化器新增usernames字段,列表和详情页展示关联用户账号
- 地区分布统计改为仅按省份聚合
- 新增ECharts screen-dark主题,统一配色和字号
- 大屏卡片背景由纯黑改为深蓝渐变
Made-with: Cursor
2026-03-13 13:00:05 +08:00
caoqianming
2ce0d75c41
feat: 添加分页配置
2026-03-13 12:36:46 +08:00
caoqianming
b88510ca0a
feat: 工厂简称改为品牌(唯一)、材料/工厂/分类导入命令、Excel材料导入(模糊匹配+未识别品牌工厂)
...
Made-with: Cursor
2026-03-13 11:25:44 +08:00
caoqianming
b1c0e94ab1
feat: 图片上传功能
2026-03-13 10:56:12 +08:00
caoqianming
d873f3e016
fix: 修复分页排序警告,经销商设为非必填
...
- 为所有模型添加 Meta.ordering = ['id'],统一解决 UnorderedObjectListWarning
- 移除视图中冗余的 order_by
- Factory.dealer_name 设为可选,前端表单移除必填
Made-with: Cursor
2026-03-13 09:30:31 +08:00
caoqianming
f093ac7680
feat: add password change and reset
2026-03-11 16:06:14 +08:00
caoqianming
47d798e380
feat: restrict material edit/delete to draft for users
2026-03-11 12:07:33 +08:00
caoqianming
fc460d80a6
chore: serve built frontend from backend
2026-03-10 16:56:06 +08:00
caoqianming
1440767c69
feat: 后端跨域
2026-03-10 16:43:57 +08:00
caoqianming
80a8f69edf
feat: add material categories and polish UI
2026-03-10 16:40:21 +08:00
caoqianming
adedaecf29
feat: 项目初始化
2026-03-10 13:12:05 +08:00