13 KiB
13 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 名)。纯前端改动,无需重启。
推送到 develop-chezhiqi
- 仓库此前未配置 git 身份(唯一提交
e9854eb作者是 mula.liu mula.liu@163.com)。按用户选择,设本仓库user.name=chezhiqi/user.email=chezhiqi@unissense.tech(邮箱取远端域名 unissense.tech,如不对可 amend)。 - 提交
a77cd7b「定开项目:台账化改造 + 统计/导出/搜索调整,新增本周进展与年度任务 tab」,包含 app/、web/、scripts/**(新增import_custom_ledger.py)、README.md、run.sh、data/board.db、.workbuddy/memory/**(含被 git 跟踪的__pycache__/*.pyc)。 - 已 push 到
origin/develop-chezhiqi(e9854eb..a77cd7b),本地与远端一致(远端还提示可发 PR main...develop-chezhiqi)。 - 有意未提交:
data/board.db.bak-*4 个本地备份(保持 untracked)。
「项目归属」新签订单 → 华智下单
- 前端
web/app.js:CUSTOM_ORIGINS/CUSTOM_PLACED里新签订单→华智下单(连同新建对话框默认值、统计说明文案,全文替换 6 处,现 app.js 内已无「新签订单」)。 - 数据迁移:
UPDATE custom_projects SET origin='华智下单' WHERE origin='新签订单'(83 行);备份data/board.db.bak-before-origin-rename-20260920_213304。现 origin 分布:华智下单 83 / 存量项目 27 / 汇智直签 10 / 提前交付 2。 scripts/import_custom_ledger.py:读入行时把新签订单归一化为华智下单(防再导入回退),并更新文档注释;app/models.py注释同步。- 纯前端 + 数据 + 脚本改动,无需重启(models.py 仅注释)。本次未 push(用户本轮只要求改名)。
三项改名/调整(项目状态 / 本周卡片 / 归属选项)
- 项目状态「交付中」→「进行中」(全量改名):
web/app.js全文交付中→进行中(共 12 处:状态色映射、STATUS_OPTIONS、进度列判定、本周「交付项目」= 进行中+交付完成、新建/编辑 statusOpts、placeholder、注释)。- 数据迁移
UPDATE custom_projects SET project_status='进行中' WHERE project_status='交付中'(10 行);备份data/board.db.bak-before-status-rename-20260920_213707。现状态:已验收 64 / 待开发 29 / 交付完成 17 / 进行中 10 / 退单 2。 import_custom_ledger.py读入时交付中→进行中归一化;models.py注释同步。
- 本周进展卡片「本周新增项目」→「新增项目」(
web/app.js卡片标题 + 说明文案)。 - 项目归属去掉「其他」选项:
CUSTOM_ORIGINS = [华智下单, 存量项目, 汇智直签, 提前交付](新建/筛选下拉都不再有「其他」);models.py/ 导入脚本文档注释同步。数据中本来就没有 origin=其他 的行。
- 纯前端 + 数据 + 脚本改动,无需重启;
node --check/ast.parse通过。本轮未 push。
本周卡片改名 + 清空历史「更新时间」
- 本周进展卡片「交付项目」→「进行中项目」(
web/app.js卡片标题/说明/标题栏摘要;口径未变,仍是 本周更新 ∩ 进行中+交付完成)。 - 清空早于 2026-09-18 的「更新时间」:
UPDATE custom_projects SET update_date=NULL WHERE update_date IS NOT NULL AND update_date!='' AND update_date < '2026-09-18'→ 清空 111 行;保留 11 行(均为 2026-09-18 及以后编辑的,含 "YYYY-MM-DD HH:MM" 提交时间)。备份data/board.db.bak-before-clearing-updatedate-20260920_214254。- 影响:
update_date仅剩 11 行有值;「删除本周更新」现在只会命中这 11 行(都在本周)。后续「修改/新建」会按提交时间重新写入。
- 影响:
表格排序 + 计划筛选 + 列序/按钮调整
- 列序:
customTableHtml里把「备注」与「更新时间」对调(… 风险值 / 更新时间 / 备注 / 操作)。 - 去掉「删除本周更新」按钮:删除
renderCustomList卡片头里的按钮、bindCustomList里的绑定与整个purgeWeek()函数(后端/custom/weekly-preview、/custom/purge-week接口保留未删)。 - 表头排序:
下单时间(sign_date) /订单金额(amount, 数值) /更新时间(update_date) 三个表头可点击排序,state.customSort = {key, dir};点不同列默认「降序」,再点同列切换升/降;表头显示 ▲/▼,卡片副标题显示当前排序。 - 新增「推动验收计划」筛选:工具栏加
#cAcceptPlan(state.customAcceptPlan),选项取数据中实际出现过的值(Q3/Q4/27年/-- 等);导出也带accept_plan参数(后端export_custom新增accept_plan)。
state新增customAcceptPlan/customSort,均加入UI_FIELDS持久化。- 后端
export.py改动 → 重启 uvicorn(PID 23436);node --check/ast.parse通过。实测导出accept_plan=Q3生效。本轮未 push。