# OPC Manager Version Log ## v1.1.0-beta — 2026-06-23 - **安全**:.env 环境变量管理(SECRET_KEY/DB)、debug=False、except 改 mysql.connector.Error + logging - **性能**:attach_common 批量 IN 查询消除 N+1、monthly_finance 预解析 budget_data - **XSS**:批量添加 esc() 转义 21 处用户可控字段 - **架构**:app.js 拆分为 7 个模块(utils/home/projects/proposals/products/finance/drawer)+ admin.js - **表单统一**:.form-ctrl 统一所有输入控件(替代 drawer-value/fin-input/inline-form 等) - **首页**:移除风险提醒卡片;财务趋势拆为 3 图(签约趋势/确收毛利/回款费用) - **业务方案**:标准资料库 + 其他资料双 Tab;标准 7 项自动初始化;标准资料支持评论 - **经营管理**: - 字段改名:客户名称→项目名称、销售人员→商务负责人 - 必填约束:项目名称/商务负责人/经营负责人/签约月份/签约金额>0 - 新增经营负责人字段;移除转移功能,新增删除项目 - 视图切换:确收/毛利 ↔ 回款/费用 - **重点工作与台账**: - 统计卡片样式与经营管理统一(无图标) - 视图切换 + 新增任务按钮移到卡片外右对齐 - 任务状态简化为 3 态(未开始/进行中/已结束) - 优先级点击切换、项目右键菜单(重命名/创建副本) - 新建任务绑定当前选中项目(修复新建到错误项目的 bug) - 任务详情抽屉改为创建到 document.body(避免 innerHTML 清除) - **用户体系**: - 新增工作台:MCN·无界、无界·无界 - 新增账号:mcn/mcn123、wuji/wuji123 - 账号管理后台(admin 限定):增删改查账号 + 工作台权限分配 - sidebar 顶部用户头像(首字母)+ 显示名,点击弹菜单(账号管理/退出) - sidebar sticky 定位,滚动时不消失 - **登录页**:参考 UOC 业务管理平台样式优化(图标 logo、密码显隐、loading 态、回车提交) - **初始化**:启动自动修正任务状态空值/done→进行中等非法值 ## v1.0.1-beta — 2026-06-22 - 数据库迁移:SQLite → MySQL 9.6,适配占位符/类型/游标 - 用户体系:管理员 + OPC负责人角色,工作台权限隔离,登录鉴权 - 经营管理:状态改为已签约/流程中/待签约三类,签约月份列可编辑,财务指标卡片(确收/毛利/回款/费用/现金流) - 重点工作与台账:阶段排序固定化+折叠分组,任务拖拽手柄与状态互换位置,关闭抽屉自动刷新,首次进入自动选第一个项目 - 产品迭代:统一表格(去平台tab),状态点击循环切换,日期改为 date 选择器,新增版本改用右侧抽屉 - 左侧工作台/顶部 tab 记忆恢复,跨工作台转移功能 - 近期动态修复 tenant 归属 ## v1.2.0 — 2026-06-15 - 业务机会 + 运营管理合并为「重点项目」Tab,统一表格展示 - 新增项目任务追踪:按阶段分组展示里程碑/执行项/负责人/截止日/卡点 - 新增 `project_tasks` 表,抽屉内展示项目时间线 ## v1.1.0 — 2026-06-15 - 首页指标升级:增加已签约合同总额、合同流程中金额、年度/Q2 累计确收、年度/Q2 累计毛利、已签约未执行 - 运营表格增加「金额」列 - 产品研发增加「平台」字段(真研/科普/关爱),支持平台筛选 ## v1.0.7 — 2026-06-04 - 修复新增表单 async 后 `event.currentTarget` 丢失导致页面不刷新(影响所有新增按钮) - `createResource` 改用预存 form 引用 + try/catch 错误提示 ## v1.0.6 — 2026-06-04 - 修复财务 Tab Chart 无限堆积:renderChartOn 缺少旧 chart 销毁 + state 跟踪 - 财务图表容器加固定高度(300px),避免 resize 循环 ## v1.0.5 — 2026-06-04 - "销售管理" Tab 改为"业务机会","目标客户"字段统一改为"业务机会" ## v1.0.4 — 2026-06-04 - CDN 全量本地化:Tailwind / Chart.js / Squire / Lucide 下载到 `static/vendor/`,不再依赖外部 CDN ## v1.0.3 — 2026-06-04 - CDN 脚本加 `defer` + `preconnect`:解决 Chart.js / Squire / Lucide 同步加载阻塞页面渲染 ## v1.0.2 — 2026-05-30 - 新增 Codex Skill:`opc-manager`,说"打开 OPC 工作台"即可在任意上下文启动 ## v1.0.1 — 2026-05-30 - 将 data/opc.sqlite 加入 .gitignore,避免运行时数据库被误提交 ## v1.0.0 — 2026-05-30 **首次正式发布** ### Features - 首页概览:7 项关键指标卡片(4 列自动换行)、财务趋势图、风险提醒、近期动态 - 销售管理:客户表格 + 抽屉详情(字段失焦自动保存) - 业务方案:版本表格 + 抽屉(文件上传/预览/下载/删除) - 运营管理:项目表格(业务机会/已签约执行分类筛选)+ 抽屉 - 产品研发:版本表格 + 抽屉 - 财务管理:月度收入/毛利/成本/净利曲线图 + 明细表 ### Interactions - 所有抽屉:Plane 风格紧凑布局(720px)、字段失焦自动保存、状态指示 - 评论区:Squire 富文本编辑器(加粗/斜体/下划线/删除线/无序列表/有序列表/引用/撤销/重做) - 评论支持删除,带确认弹窗 - 评论内容保留 HTML 格式(加粗、列表等) - 图标库:Lucide ### Tech Stack - Backend: Flask + SQLite - Frontend: Vanilla JS + Tailwind CSS CDN - Editor: Squire (Fastmail) - Charts: Chart.js - Icons: Lucide ### Fixes - 首页财务图表空白问题:固定容器高度 140px + maintainAspectRatio: false - 首页指标卡片布局:grid-cols-7 → grid-cols-4 自动换行 - 风险提醒文字竖排:grid-cols-2 等宽布局 + break-words - 评论区工具栏按钮无效:onclick → onmousedown 防止焦点丢失 - 格式 toggle 无效:hasFormat 检测 + removeBold/removeItalic - 列表按钮无效:Squire API 替代 Trix - 评论内容格式丢失:encodeURIComponent 编码 + decodeURIComponent 渲染 - 列表显示无标记:list-style: revert 覆盖 Tailwind reset