63 lines
8.0 KiB
Markdown
63 lines
8.0 KiB
Markdown
# 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 名)。纯前端改动,无需重启。
|