unis_manager/.workbuddy/memory/2026-09-20.md

8.0 KiB
Raw Blame History

2026-09-20

修正「本季度验收」统计口径 → 按「验收时间」

用户反馈本季度验收数据不对,要求按「验收时间」统计;并启动服务。

  • 启动:uvicorn 之前已停;重新用 <PY> -m uvicorn app.main:app --host 127.0.0.1 --port 8770 启动,/health ok。前端 static 无需重启。
  • 排查:已验收 共 64 条,全部带「验收时间」accept_date(季度文本):Q1=8 / Q2=35 / Q3=21。旧统计用 accept_date_real(真实日期),而 4 条 Q3 行(id 43 宜章县智慧城市、44 广安武胜智慧停车场、104 陕西-神木能源朱盖塔煤矿二期、120 解放碑地下环道AI智能视频巡检)accept_date_real 为空 → 本季度只算出 17,比实际 21 少 4。
  • 修正(web/app.js renderCustomList,静态文件):验收统计改为按 accept_date(Q1~Q4):
    • 本季度验收 = accept_date == 当前季度(Q3)→ 21
    • 本年验收 = 有「验收时间」的全部(Q1/Q2/Q3)→ 64
    • 不再依赖 accept_date_real;新增 qOf() 归一化(trim + 大写 + ^Q[1-4]$)。
  • 现值(2026-09-20,全部 120 个项目):项目数量/合同额 120 / 本季度下单 12 / 本年下单 32 / 本季度验收 21 / 本年验收 64。
  • 备注:4 条 Q3 行的 accept_date_real(验收日期)仍为空,统计已不受影响;如需可补 2026-09-30。

定开项目 5 项新需求(进度 / 提前交付 / 归属筛选 / 下单口径 / 本周进展 tab)

  • 进度字段:custom_projects.progress(Float, NOT NULL, 默认 0)复用,编辑/新建表单加「进度(%)」输入(cdProgress/ncProgress,提交 progress);表格加「进度」列,仅当 状态=交付中 或 progress>0 时显示 N%,否则「—」。
  • 项目归属新增「提前交付」:统一常量 CUSTOM_ORIGINS = [新签订单, 存量项目, 汇智直签, 提前交付, 其他];新建/编辑下拉都用它。
  • 项目归属筛选:工具栏加 #cOrigin(state.customOrigin,客户端过滤);导出也带 origin 参数(后端 export_custom 新增 origin)。
  • 下单口径:CUSTOM_PLACED = [新签订单, 存量项目, 汇智直签](isPlaced())。第 1 张统计卡改名「已下单项目 / 合同额」,「本季度下单 / 本年下单」也只统计已下单(提前交付不计入下单)。验收仍看 accept_date。
  • 新增「本周进展」tab:定开现在两个 tab —— 项目明细 / 本周进展(state.customTab)。renderCustomWeekly():按 update_date 落在本周(周一~周日)筛项目,统计 本周更新项目 / 验收情况 / 下单情况 / 提前交付情况 / 进行中项目情况(各自数量+金额;进行中=待开发/交付中/交付完成),下面用表格列出本周项目。
  • 重构:抽出 customTableHtml(view) 供两个 tab 共用(表格新增「进度」列);renderCustom 工具栏按 tab 切换(明细显示搜索/筛选/导出/新建,进展只显示周期)。
  • 清理:删掉 openCustomDrawer 里 baseSec 的死 edit 分支(重复 id:cdName/cdAmount/cdProgress/cdRemark 等)与不再用的 stageOpts。
  • 现值(120 个项目,origin 分布:新签订单 83 / 存量项目 27 / 汇智直签 10,暂无提前交付);本周更新 5 个(id 23/43/44/104/120,均 已验收)。
  • 后端改了 export.py → 重启 uvicorn;node --check / ast.parse / health / 导出(origin) / PATCH progress 均通过。

「本周进展」tab 二次调整(同日稍后)

  • 去掉「本周更新项目」汇总卡(不再统计本周更新的数量/金额),只保留 验收 / 下单 / 提前交付 / 进行中 四张。
  • 本周项目列表去掉「操作」列:customTableHtml(view, withOps) 加开关,本周进展传 false;改数据靠点项目名称打开详情。
  • 「下单情况」改为「本周新增下单」:按「下单时间」sign_date 落在本周统计(signedWeek),不再用「本周更新 ∩ 已下单」。其余三类(验收/提前交付/进行中)仍按「更新时间」在本周归属。
  • 纯前端改动(web/app.js),无需重启;当前 09-14~09-20 本周新增下单 0 个。

「本周进展」tab 三次调整(同日再稍后)

  • 「下单情况」→ 「本周新增项目」:统计 本周更新 ∩(已下单 或 提前交付)——isPlaced(p) || p.origin === "提前交付"。
  • 去掉「提前交付情况」卡(提前交付并入「本周新增项目」,不再单独统计)。
  • 「进行中项目情况」→ 「交付中项目」:只统计 project_status === "交付中"(不再含 待开发/交付完成)。
  • 现在本周进展只有 3 张卡:验收情况 / 本周新增项目 / 交付中项目。纯前端改动,无需重启。

修正「本周新增项目」口径(关键)

  • 用户指出:「本周新增项目」应按「下单时间」sign_date 统计(本周新下单 / 提前交付的项目),不能按「更新时间」的本周更新集。
  • 最终实现:newDeal = allRows.filter(p => inWeek(p.sign_date) && (isPlaced(p) || p.origin === "提前交付"))。
  • 「验收情况」「交付中项目」仍按「更新时间」在本周的项目统计(用户此次未要求改)。
  • 数据:2026-09-20 有 1 条 sign_date=2026-09-20(18,000 元)→ 本周新增项目 = 1。

「交付中项目」→「交付项目」

  • 卡片改名 「交付项目」:统计本周更新的项目里 项目状态 ∈ {交付中, 交付完成} 的。
  • 最终本周进展 3 张卡:验收情况(本周更新 ∩ 已验收)/ 本周新增项目(按下单时间 sign_date 在本周 ∩ 已下单或提前交付)/ 交付项目(本周更新 ∩ 交付中+交付完成)。纯前端改动,无需重启。

新增「年度任务」tab(数据源《年度任务.xlsx》)

  • 用户提供 C:/Users/Administrator/Desktop/年度任务.xlsx,要求定开加一个 tab 展示年度任务,并按「验收/下单时间」回填。
  • Excel 结构(Sheet1,A1:G6):列 = 季度 / 计收目标(万元)/ 计收项目数量 / 计收项目金额(万元) / 计收完成率 / 新增签单项目数量 / 新增签单项目数量金额(万元);行 = Q1~Q4 + 合计。目标值 Q1 35 / Q2 225 / Q3 160 / Q4 260(合计 680)万元。
  • 读取方式:tencent-docs-routing → tencent-docs-sheetagent(skill 不存在)→ tencent-local-office-edit(edsdk.py 可用,open_file 成功)但 sheet_* 一律报 No workbook open;按 skill 降级规则改用 openpyxl 直接读(已告知用户)。
  • 实现(纯前端 web/app.js):
    • 新增常量 CUSTOM_ANNUAL_TARGETS = {1:35,2:225,3:160,4:260}(万元)。
    • 定开第三个 tab 「年度任务」(state.customTab === "annual");renderCustomAnnual(allRows) 输出与原表同列的表格 + 合计行。
    • 计收项目 = accept_date(验收时间,季度文本)== Qn;新增签单 = isPlaced 且 sign_date 落在本年度该季度;金额 元→万元;计收完成率 = 计收金额 ÷ 目标。
  • 回填现值(2026):Q1 计收 8个/92.64万(264.7%)、签单 8个/33.06万;Q2 计收 35个/190.09万(84.5%)、签单 12个/79.65万;Q3 计收 21个/88.68万(55.4%)、签单 12个/39.75万;Q4 全 0;合计 计收 64个/371.41万(54.6%)、签单 32个/152.47万。
  • 纯前端改动,无需重启;node --check 通过。

tab 改名 + 列序调整

  • 定开第一个 tab 「项目明细」→「项目总览」(chip 与卡片标题「定开项目总览」都改)。
  • customTableHtml 列序:把**「项目归属」移到「下单时间」之后**(新序:项目名称 / 项目ID / 下单时间 / 项目归属 / 办事处 / …)。项目总览与本周进展两个 tab 共用,故同时生效。
  • 后端导出标题仍是「定开项目明细」(未改,用户只说 tab 名)。纯前端改动,无需重启。