8.0 KiB
8.0 KiB
2026-09-20
修正「本季度验收」统计口径 → 按「验收时间」
用户反馈本季度验收数据不对,要求按「验收时间」统计;并启动服务。
- 启动:uvicorn 之前已停;重新用
<PY> -m uvicorn app.main:app --host 127.0.0.1 --port 8770启动,/healthok。前端 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.jsrenderCustomList,静态文件):验收统计改为按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 名)。纯前端改动,无需重启。