35 Commits

Author SHA1 Message Date
freedakgmail 37cd5ae7e1 feat: 店长工作台新增人力排班Tab及概览折叠功能
- 后端新增 /api/stores/:code/staffing 路由,返回人工成本概览、按星期/餐段排班建议、日营收明细、综合诊断
- 前端 StorePage 新增 staffing Tab,展示 MetricCard 概览、优化建议、排班图表、诊断算法说明
- 修复公司均值人工率被异常门店污染问题(过滤 wage_rate_pct > 100)
- 诊断逻辑改为与公司均值动态比较,建议人工率改为动态计算
- 增强任务反馈表单(执行证据、未完成原因、下一步计划)
- 点击非概览Tab时自动折叠上方概况区域
2026-08-04 08:19:20 +08:00
freedakgmail 6bc2f43da7 feat: 新增本月经营态势弹窗+千问TTS语音播报
- 新增 BusinessReportDialog 组件,展示整体经营/成本费用/风险态势/利润机会四部分文字报告
- BossPage 标题栏新增「本月经营态势」按钮
- 后端新增 /api/tts 路由,调用千问 CosyVoice TTS API 合成语音
- 前端按句分段合成、逐句顺序播放,边播边合成
- 报告含待确认门店数量
2026-08-03 22:55:50 +08:00
freedakgmail a011729fc9 fix: 角色权限与数据范围修复
- 添加 RoleRoute 路由守卫组件,防止越权访问页面
- 菜单配置:区域经理加'区域对比',店长加'态势感知'
- database.ts: scope注入时检测主表别名避免store_code歧义
- analytics-enhanced.ts: KPI region模式手动注入scope过滤
- situational-awareness.ts: health-score手动注入scope,alerts加skipScope
- smart-scheduling.ts: position-salary-compare店长角色降低HAVING阈值
2026-08-02 21:28:25 +08:00
freedakgmail cfa12c9b7f feat: 多租户数据权限 + 数据库连接修正
- adminPool 连服务器本地 5432 sbrain_admin (SCRAM 认证)
- tenantPool/pool 连 FRP 隧道 15432 bill_query (trust 认证)
- query() 自动注入 store_code 数据权限 (store/regional 角色)
- 区域经理 region 字段存储逗号分隔的 store_code 列表
- /overview 和 /overview/daily 对 scoped 用户从 bill_fact 聚合
- tenant_users.region 扩展为 VARCHAR(500)
- deploy.sh .env 增加 ADMIN_DB_* 配置
- run.md 更新数据库连接架构说明
- 新增海淀区区域经理用户 (21 家海淀区门店)
2026-08-02 20:10:42 +08:00
freedakgmail 271ad8041d feat: 全页面增加营业收入/优惠指标 + 修复趋势预测空数据 + 区域对比口径统一 + StorePage最新经营日概览
- 后端: 所有API的discount改为从bill_fact累计discount_total
- 后端: revenue/daily-summary增加consumption字段
- 后端: situational-awareness/forecast修复c175字符串比较为timestamp
- 后端: region/comparison去掉未知区域排除,统一口径
- 后端: daily-card增加营业收入/优惠指标,返回target_date/baseline_date
- 前端: BossPage/DashboardPage/BankPage/StorePage/ExpenseOverviewTab/RegionalPage/RegionComparisonPage/RevenuePage 均增加营业收入和优惠指标卡
- 前端: StorePage日均经营概览改为最新经营日概览,显示具体对比日期
- 前端: 日期格式统一截取YYYY-MM-DD显示
2026-08-02 14:56:00 +08:00
freedakgmail a1a8b7ee5e feat: 连锁餐饮数字本体与AI经营智脑 - 新增分析页面、ETL脚本、总结文档 2026-08-02 10:54:48 +08:00
freedakgmail 73f12f40d1 feat: 配送物化视图优化查询性能 + 饼图统一处理 + SKU长尾治理明细 + 地图初始聚焦北京 2026-08-02 08:53:21 +08:00
freedakgmail ed7beb7e47 feat: 统一SearchSelect下拉组件 + 修复营销方案数据 + 平台经济性增强
- 创建SearchSelect搜索下拉组件,选项≤8自动隐藏搜索框
- 全站替换原生select为SearchSelect(13处下拉)
- 修复/revenue/store-ranking优惠率字段名不匹配(discount_rate_pct→avg_discount_rate_pct)
- RevenuePage门店营收明细改用FilterableTable支持筛选排序分页
- 修复/marketing/plans按门店分组改为按marketing_plan分组
- 营销方案分析补充消费额、优惠额列和Top5概览卡片
- PlatformPage门店平台经济性增加门店搜索、经济性优列(平台分色)
- 平台成本率算法说明显示在标题下方
2026-08-01 23:08:34 +08:00
freedakgmail d724a565f5 风险与内控管理优化: 异常账单服务端分页/筛选/收银员搜索/合计, 收银员TOP15按异常账单数排序, 双击跳转明细, MonthPicker靠右, 侧边栏底部间距 2026-08-01 21:28:15 +08:00
freedakgmail 0f6ff59d7d feat: 态势感知健康度评分明细弹窗(雷达图+8维度得分) 2026-08-01 15:14:13 +08:00
freedakgmail 122290e3b0 perf: Phase 12 — 物化剩余9个慢函数,全量API优化完成
新增物化视图:
- mv_store_action_priority_deep_monthly (10.7s→3ms)
- mv_inventory_cost_classified_monthly (37ms→3ms, 消除重复调用)
- mv_dish_pair_summary_monthly (171s→3ms)
- mv_store_area_efficiency_monthly (10.1s→3ms)
- mv_store_site_profile_monthly (9.3s→3ms)
- mv_site_segment_benchmark_monthly (12s→3ms)
- mv_store_site_replication_monthly (12.6s→3ms)
- mv_store_overlap_risk_monthly (88s→3ms)
- mv_district_site_benchmark_monthly (56s→3ms)

后端: 所有 fn_ 函数调用替换为物化视图查询
前端: BossPage 添加 MonthPicker 组件并传递 month 参数
修复: cost/category-benchmark 排序列名 store_code→sales_store_code
总计: 21个物化视图, 全部API响应<1.7秒
2026-08-01 14:51:24 +08:00
freedakgmail 25db0f3854 perf: 全量物化视图优化 — 按月预计算所有慢函数,API响应从106秒降至0.09秒
- 创建12个按月物化视图替代实时函数调用
- phase10: mv_dish_sku_summary_monthly, mv_dish_sku_abc_monthly
- phase11: mv_store_risk_rating/platform_economics/category_mix/member_opportunity/benchmark_composite/deep_diagnosis/dish_basket/dish_store_summary/theoretical_actual_cost (全部_monthly)
- 后端所有路由从 fn_xxx() 改为 mv_xxx_monthly WHERE month_start =
- 新增 analytics.refresh_all_monthly_views() 刷新函数
- 优化 fn_dish_sku_summary: CTE物化避免重复调用
- 优化 fn_dish_sku_abc: CTE物化 fn_dish_sku_summary 只调用一次
- 优化 fn_dish_sales: 添加 dish_name IS NOT NULL 提前过滤
2026-08-01 14:05:12 +08:00
freedakgmail dab06ba109 feat: 月度模式全面参数化 - 移除硬编码日期,前后端按月动态查询 2026-08-01 13:10:22 +08:00
freedakgmail 1a4aca28c0 feat: 新增银行授信数据报告页面 - 可配置评分规则+5大分析模块 2026-07-30 16:58:32 +08:00
freedakgmail 1664247882 feat: 整合菜单7组 + 新增营收分析页面(渠道/时段/门店排名/日度趋势) 2026-07-30 15:01:49 +08:00
freedakgmail 42e4287473 fix: 老板驾驶舱统一全口径数据源 - 实收/客单价/账单数/风险占比均取自store-expense/overview,与利润瀑布一致 2026-07-30 14:42:40 +08:00
freedakgmail 2df4f0799b feat: 老板驾驶舱增加门店利润排名 - TOP5赚钱/BOTTOM5亏损,可点击跳转门店详情 2026-07-30 14:37:38 +08:00
freedakgmail 22d711fb73 feat: 新增老板驾驶舱页面 - 利润瀑布/风险态势/成本异常/营收排名/日度趋势 2026-07-30 14:24:17 +08:00
freedakgmail 6c5d8ed5d3 fix: 利润成本费用改为全口径 - 以91家门店为基数LEFT JOIN费用表,缺费用门店营收也纳入 2026-07-30 10:17:54 +08:00
freedakgmail 90be14a5d6 feat: 总部驾驶舱增加理论/实际净利润、净利率、食材成本率指标 2026-07-30 10:02:06 +08:00
freedakgmail 93198d7ad5 perf: 复购率视图也转物化视图,健康分API加速到0.3秒 2026-07-30 09:51:44 +08:00
freedakgmail d1ea57872a perf: 物化视图加速门店详情和健康分API - 29秒降到毫秒级 2026-07-30 09:49:40 +08:00
freedakgmail 5a1b21104d fix: 经营象限阈值用中位数(营收18642/毛利率70%),增加行动建议展示 2026-07-30 09:18:55 +08:00
freedakgmail e946cdefef feat: 门店详情增加风险等级和经营象限详细说明+修复后端不存在的视图引用 2026-07-30 09:16:42 +08:00
freedakgmail a6d83be0ad fix: 门店成本分析Tab - 用v_inventory_cost_classified_april替代不存在的v_store_category_cost_benchmark_april 2026-07-30 09:09:34 +08:00
freedakgmail efb27127e2 fix: 优化门店健康分评分公式 - 正态分布(均值63, 标准差9) 2026-07-30 09:07:16 +08:00
freedakgmail 268e085ffa feat: 态势感知模块 - 实时监控面板+后端API 2026-07-30 09:01:01 +08:00
freedakgmail 6bab0ad84a feat: 客流热力图增加在岗人员行+规则引擎面板+菜单名称调整
- 热力图每门店增加在岗人员行(前厅/后厨/管理/其他),从考勤打卡记录解析
- 新增traffic-heatmap-staffing API,解析考勤打卡时间计算每小时在岗人数
- 人员预测tab新增可折叠规则引擎面板,展示全部规则和触发条件
- 后端API返回ruleEngine字段(动态标准+优化规则+招聘规则+决策逻辑)
- R9/R11/R12/R13增加占比超配约束,过滤不合理招聘建议
- 菜单项'菜品成本分析'→'菜品成本','门店费用分析'→'门店费用'
- 热力图横向滚动条始终可见
2026-07-30 00:04:54 +08:00
freedakgmail 75a483bfdb feat: 智能排班人员预测系统
- 新增人员预测tab,基于多维度产能指标生成招聘/优化建议
- 规则引擎:7条优化规则 + 7条招聘规则 + 4步决策逻辑
- 动态标准值:基于全部门店中位数计算,替代硬编码阈值
- 互斥逻辑:有优化信号时抑制所有招聘信号
- 占比超配时不触发招聘信号(R9/R11/R12/R13)
- 离职缺口需出勤不足才触发招聘(R10)
- 管理岗满编时不触发出勤不足招聘(R9)
- 前端可折叠规则引擎面板,展示全部规则和触发条件
- 产能指标对比展示实际值 vs 中位数标准
2026-07-29 23:41:56 +08:00
freedakgmail 42e83696a0 feat: 门店费用分析模块 + 成本分析筛选排序功能
- 新增门店费用分析模块(9个Tab组件 + 后端路由)
  - 门店贡献利润、房租租约风险、外卖佣金分析、人效坪效
  - 固定/变动费用、盈亏平衡分析、亏损门店诊断
  - 关停/续租/改造评估、门店排名
- 门店费用分析9个Tab均支持筛选、排序、正倒序
- 成本分析8个Tab添加筛选、排序、正倒序功能
  - 后端10个端点添加filter/sort/order参数支持
  - 前端8个组件添加UI控件
- 修复门店评估分类逻辑和日期格式化
- 修复盈亏平衡销售额计算(贡献毛利率≤0时设为NULL)
2026-07-29 08:22:09 +08:00
freedakgmail 3d89baf65d feat: 菜品成本分析模块 - 10个Tab + 31个分析API + 7个调整管理API
- 后端: 新增 cost-analysis.ts 路由,含31个分析端点和7个调整管理端点
- 前端: 新增 CostAnalysisPage 主页面 + 10个Tab组件
  - Tab1-9: 成本总览/菜品盈利/原料差异/BOM配方/供应链/包装耗材/数据质量/门店成本/可视化探索
  - Tab10: 调整管理(诊断快照+调整记录+效果验证)
- 修复: 毛利率和损耗率从简单平均改为加权计算
- 新增: Tabs组件、侧边栏菜单项、路由注册
- 新增: 3张数据库表(诊断快照/调整记录/验证结果)
2026-07-28 16:56:45 +08:00
freedakgmail f5fa9ace88 feat: 部署前端到dm.all8ai.top + 性能优化 + 登录页密码验证
- 前端构建部署到152.136.182.184服务器,nginx反向代理
- SSH反向隧道(13333端口)连接服务器到本地后端
- SSL证书自动配置(Let's Encrypt)
- API baseURL支持环境变量VITE_API_BASE_URL
- 后端端口改为3333,CORS允许所有来源
- 物化6个慢视图(overview/risk/loop_health/benchmark/region/followup)
- 登录页保留密码输入框,必须输入密码才能登录
- run.md添加登录账号信息
2026-07-27 09:44:21 +08:00
freedakgmail 6e0c1bd7a4 feat: 新增门店选址分析功能
- 创建选址分析7个SQL视图+5张物化表(38s→33ms)
- 后端新增5个选址API端点
- 前端新增SiteSelectionPage页面(散点图+4Tab)
- 侧边栏新增门店选址导航入口
- 修复SQL列引用错误(d.→a.,去掉重复列)
- 创建v_store_action_priority_deep_april和v_store_area_efficiency_april基础视图
2026-07-27 08:33:42 +08:00
freedakgmail 521ba88937 Phase 6-11: 驾驶舱图表/区域经理基准对比+周检录入/店长SKU备货+指标进度/门店详情7Tab/月度验收7Tab/区域汇总
- Phase 6: 驾驶舱新增象限散点图、P0/P1实收覆盖瀑布图、平台成本率TOP15柱状图
- Phase 7: 区域经理页面新增同类门店基准对比表、周检录入弹窗
- Phase 8: 店长页面新增核心SKU备货提醒、本周指标进度条,经营概览与进度并排
- Phase 9: 门店详情页7Tab(概览/餐段/品类/成本/会员/异常/任务),5个新API
- Phase 10: 月度验收7Tab(验收汇总/升降级/完成率/活动清单/SKU治理/经验标准化/复盘优化),4个新API+阈值调整API
- Phase 11: 前后端编译通过,API测试通过,浏览器验证0 error
- 门店区域划分:从store_location_master填充dim_store.region(87家),v_region_summary视图+API+前端表格
- MetricCard增加text格式支持
2026-07-26 23:16:52 +08:00
freedakgmail a7874d79b5 初始化:连锁餐饮数字化运营管理平台 2026-07-26 22:48:08 +08:00