Files
server/operations-log.md
2025-11-24 15:01:03 +08:00

7.9 KiB
Raw Blame History

操作留痕Codex

  • 时间2025-11-01 19:35UTC+8

  • 动作:修改 Dockerfile 创建应用用户命令

  • 位置Dockerfile运行阶段“创建应用用户和目录”

  • 变更:将原使用 addgroup/adduser 的写法替换为兼容 Debian/Ubuntu 与 Alpine 的健壮分支逻辑(优先使用 groupadd/useradd,回退到 addgroup/adduser 并按是否支持 --gid 区分参数)。

  • 目的修复构建阶段报错“Option g is ambiguous (gecos, gid, group)”,避免不同基础镜像工具链参数差异导致失败。

  • 工具apply_patch补丁写入

  • 结果:补丁应用成功,建议以 docker build --no-cache 重新构建验证。

  • 时间2025-11-01 19:40UTC+8

  • 动作:修复部署脚本 archive-manager.sh 镜像检查逻辑

  • 位置archive-manager.shdeploy_app 函数)

  • 变更:新增 image_exists 检查,通过 docker image inspect 判断本地镜像是否存在;若不存在,deploy 流程自动调用 build_image 进行构建,避免 docker compose up 因尝试拉取远端镜像而失败(镜像找不到)。

  • 目的:解决部署时报“镜像找不到”的问题,提升一键部署体验。

  • 工具apply_patch补丁写入

  • 结果:补丁应用成功,可通过 ./archive-manager.sh deploy <目录> 直接部署,首次会自动构建镜像。

  • 时间2025-11-18 17:43UTC+8

  • 动作:按环境调整日志输出配置

  • 位置src/main/resources/logback-spring.xml

  • 变更:新增 springProfile 分支,开发环境仅输出控制台,生产环境写入与 Dockerfile 一致的 /app/logs 并保留分级 RollingFileAppender。

  • 目的:满足开发环境不落盘、生产环境落盘且目录对齐容器目录的需求。

  • 工具apply_patch重写配置文件

  • 结果:配置已更新,可通过启动 dev/prod Profile 验证控制台与落盘行为。

  • 时间2025-11-18 17:46UTC+8

  • 动作:修复 logback 配置解析错误

  • 位置src/main/resources/logback-spring.xml

  • 变更:将 springProfile 条件中的逻辑与符号转义为 &amp;,解决 XML 解析报错(“实体名称必须紧跟在 & 后面”)。

  • 目的:确保 logback-spring.xml 能被 Spring Boot 正常加载。

  • 工具apply_patch补丁写入

  • 结果:配置已更正,可再次启动验证。

  • 时间2025-11-18 18:00UTC+8

  • 动作:调整 OperatorTable 读取数据源方式

  • 位置src/main/java/com/point/strategy/table/OperatorTable.java

  • 变更:不再从固定 application.properties 读取数据源,改为注入 Spring Environment通过激活的 profile 动态获取 spring.datasource.*,并在未配置时抛出明确异常;保持现有静态方法接口,内部连接创建随当前 yml 生效。

  • 目的:保证建表 DDL 能使用当前激活配置的数据库连接,解决 dev/prod yml 下无法建表的问题。

  • 工具apply_patch补丁写入

  • 结果:已更新,可在激活对应 profile 后尝试新增门类触发表创建。

  • 时间2025-11-20 09:45UTC+8

  • 动作:定位 productSalesDocking 方法

  • 工具shellrg -n "productSalesDocking" src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:找到方法起始行 1136确认分析范围

  • 时间2025-11-20 09:45UTC+8

  • 动作:查看方法周边 1100-1400 行

  • 工具shellsed -n '1100,1400p' src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:截取方法上半段,记录日志与统计逻辑

  • 时间2025-11-20 09:46UTC+8

  • 动作:扩展读取 1170-1900 行

  • 工具shellsed -n '1170,1900p' src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:获取循环处理逻辑但输出较大被截断

  • 时间2025-11-20 09:46UTC+8

  • 动作:聚焦 1500-1700 行

  • 工具shellsed -n '1500,1700p' src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:查看 100 列组装逻辑

  • 时间2025-11-20 09:47UTC+8

  • 动作:尝试用 python 截取完整方法

  • 工具shellpython - <<'PY' ...

  • 输出:命令失败,提示 python: command not found

  • 时间2025-11-20 09:47UTC+8

  • 动作:使用 python3 重试提取方法

  • 工具shellpython3 - <<'PY' ...

  • 输出:成功导出方法文本,但因输出限制被截断

  • 时间2025-11-20 09:48UTC+8

  • 动作:定位 LIMIT 10 语句行号

  • 工具shellrg -n "LIMIT 10" src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:确认 1230/1232 行存在 LIMIT 10

  • 时间2025-11-20 09:49UTC+8

  • 动作:查看 LIMIT 相关代码行号

  • 工具shellnl -ba src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java | sed -n '1205,1245p'

  • 输出:确认 totalPending 统计与 LIMIT 10 取数位于 1206-1233 行

  • 时间2025-11-20 09:52UTC+8

  • 动作:移除 productSalesDocking 中的 LIMIT 10 限制

  • 工具apply_patch编辑 src/main/java/com/point/strategy/oaDocking/controller/ArchivesUploadController.java

  • 输出:删掉取数 SQL 的 LIMIT 10保留 biz_date 过滤与排序,确保一次性读取全部数据

  • 时间2025-11-20 09:42UTC+8

  • 动作:检查 .claude 目录

  • 工具shellls .claude

  • 输出:目录不存在,返回 "ls: .claude: No such file or directory"

  • 时间2025-11-20 09:43UTC+8

  • 动作:列出仓库根目录文件

  • 工具shellls

  • 输出:记录仓库根目录下的主要文件和目录

  • 时间2025-11-20 09:44UTC+8

  • 动作:查看 operations-log.md 内容

  • 工具shellcat operations-log.md

  • 输出:阅读历史留痕,确认记录格式

  • 时间2025-11-20 09:44UTC+8

  • 动作:查询当前系统时间

  • 工具shelldate '+%Y-%m-%d %H:%M:%S %Z'

  • 输出2025-11-20 09:44:48 CST

  • 时间2025-11-24 14:47UTC+8

  • 动作:确认 .claude 目录是否存在

  • 工具shellls .claude

  • 输出:目录不存在,命令返回 “No such file or directory”

  • 时间2025-11-24 14:48UTC+8

  • 动作:阅读 AnjuanAndJuanneiController.java 源码

  • 工具shellsed -n '1,960p' src/main/java/com/point/strategy/originBatchUpload/AnjuanAndJuanneiController.java

  • 输出:获取 uploadSimpleFilesAnjuan 及相关上传实现用于 OOM 分析

  • 时间2025-11-24 14:49UTC+8

  • 动作:查阅 PdfFileHelper.image2Pdf 实现

  • 工具shellsed -n '520,620p' src/main/java/com/point/strategy/common/PdfFileHelper.java

  • 输出:确认图片转 PDF 逻辑使用 ImageIO.read + iText Image 双重加载

  • 时间2025-11-24 14:50UTC+8

  • 动作:查询当前系统时间

  • 工具shelldate '+%Y-%m-%d %H:%M:%S %Z'

  • 输出2025-11-24 14:50:02 CST

  • 时间2025-11-24 14:55UTC+8

  • 动作为传统案卷上传OCR处理增加线程池限流

  • 位置src/main/java/com/point/strategy/originBatchUpload/AnjuanAndJuanneiController.java

  • 变更新增受控线程池替代每文件新建线程限制并发与队列避免多文件同时触发大量OCR线程造成内存峰值。

  • 工具apply_patch

  • 结果:代码已更新

  • 时间2025-11-24 14:56UTC+8

  • 动作优化图片转PDF内存占用

  • 位置src/main/java/com/point/strategy/common/PdfFileHelper.java

  • 变更:移除 ImageIO 双重加载大图,直接用 iText Image 尺寸设置页面,减少一次内存占用。

  • 工具apply_patch

  • 结果:代码已更新

  • 时间2025-11-24 14:59UTC+8

  • 动作对上传接口增加并发限流每次最多3个文件

  • 位置src/main/java/com/point/strategy/originBatchUpload/AnjuanAndJuanneiController.java

  • 变更:新增 Semaphore保证全局并行处理文件数不超过3同时将 OCR 线程池调为 1~3 线程并缩短队列,匹配限流策略。

  • 工具apply_patch

  • 结果:代码已更新