- 新增 UploadConfig 配置类统一管理上传路径 - 将硬编码的上传目录路径改为配置驱动 - 添加 EscapeCharacterUtils 工具类处理转义字符 - 修复 application-dev.yml 和 application-prod.yml 中的上传路径格式 - 在 SkillGenServiceImpl 中集成转义字符清理功能 - 更新 CommonController 使用配置类管理上传目录
71 lines
13 KiB
Java
71 lines
13 KiB
Java
package com.kexue.skills.utils;
|
||
|
||
import java.util.HashMap;
|
||
import java.util.Map;
|
||
|
||
/**
|
||
* 去除/还原字符串中转义字符的工具类
|
||
*/
|
||
public class EscapeCharacterUtils {
|
||
// 定义Java常见转义字符映射(键:转义符,值:原字符)
|
||
private static final Map<String, String> ESCAPE_MAP = new HashMap<>();
|
||
|
||
static {
|
||
// 基础转义字符
|
||
ESCAPE_MAP.put("\\n", "\n"); // 换行符
|
||
ESCAPE_MAP.put("\\t", "\t"); // 制表符
|
||
ESCAPE_MAP.put("\\r", "\r"); // 回车符
|
||
ESCAPE_MAP.put("\\\\", "\\"); // 反斜杠本身
|
||
ESCAPE_MAP.put("\\\"", "\""); // 双引号
|
||
ESCAPE_MAP.put("\\'", "'"); // 单引号
|
||
ESCAPE_MAP.put("\\b", "\b"); // 退格符
|
||
ESCAPE_MAP.put("\\f", "\f"); // 换页符
|
||
}
|
||
|
||
/**
|
||
* 去除/还原字符串中的转义字符
|
||
* @param input 包含转义字符的字符串
|
||
* @param removeMode true=直接删除转义符(如"\n"→""),false=还原为原字符(如"\n"→换行符)
|
||
* @return 处理后的字符串
|
||
*/
|
||
public static String removeEscapeCharacters(String input, boolean removeMode) {
|
||
// 空值校验
|
||
if (input == null || input.isEmpty()) {
|
||
return input;
|
||
}
|
||
|
||
String result = input;
|
||
// 遍历替换所有转义字符
|
||
for (Map.Entry<String, String> entry : ESCAPE_MAP.entrySet()) {
|
||
String escapeChar = entry.getKey();
|
||
String targetChar = removeMode ? "" : entry.getValue();
|
||
result = result.replace(escapeChar, targetChar);
|
||
}
|
||
|
||
return result;
|
||
}
|
||
|
||
// 重载方法:默认还原为原字符(非删除模式)
|
||
public static String removeEscapeCharacters(String input) {
|
||
return removeEscapeCharacters(input, false);
|
||
}
|
||
|
||
// 测试示例
|
||
public static void main(String[] args) {
|
||
// 测试字符串
|
||
String testStr = "```yaml\\ntype: directory\\nname: skills\\ncontent:\\n children:\\n - type: file\\n name: skills.md\\n content: |\\n # 智能工作总结\\n\\n ## 技能描述\\n 该技能能够根据用户输入的工作内容、项目成果、个人成长等信息,自动生成结构清晰、内容完整的工作总结报告。\\n\\n ## 技能标签\\n 办公演示,文档标准\\n\\n ## 技能摘要\\n 帮助用户快速、高效地完成工作总结的撰写,提升报告的专业性和规范性,节省大量时间和精力。\\n\\n ## 使用说明\\n 1. 用户提供详细的工作内容、项目成果、个人成长等信息。\\n 2. 技能将自动分析信息,提取关键点。\\n 3. 生成结构化的总结报告草稿。\\n 4. 用户可对草稿进行审阅和微调。\\n\\n ## 输入参数\\n - `work_content` (字符串): 详细描述日常工作职责与完成的任务。\\n - `project_achievements` (字符串): 描述参与的项目及其取得的成果、个人贡献。\\n - `personal_growth` (字符串): 描述在技能、知识、协作等方面的进步与收获。\\n - `period` (字符串,可选): 总结覆盖的时间段,如“2024年第一季度”。默认为“近期”。\\n - `report_style` (字符串,可选): 报告风格,可选“正式”、“简洁”、“详细”。默认为“正式”。\\n\\n ## 输出结果\\n 一个结构清晰、语言通顺的工作总结报告文本。\\n\\n ## 示例\\n **输入:**\\n - work_content: “负责客户需求分析,撰写产品需求文档;参与每周迭代评审会。”\\n - project_achievements: “主导了‘智能报表模块’的开发,使数据生成效率提升30%。”\\n - personal_growth: “深入学习了Python数据分析库Pandas,提升了团队协作效率。”\\n - period: “2024年第二季度”\\n - report_style: “正式”\\n\\n **输出(摘要):**\\n “2024年第二季度工作总结... 本季度,我主要负责客户需求分析与产品需求文档撰写... 在项目方面,我主导了‘智能报表模块’的开发,成功将数据生成效率提升30%... 个人在专业技能上,深入学习了Python Pandas库,并在团队协作中发挥了更积极的作用... 展望下一季度,我将...”\\n - type: directory\\n name: scripts\\n content:\\n children:\\n - type: file\\n name: generate_summary.py\\n content: |\\n #!/usr/bin/env python3\\n # -*- coding: utf-8 -*-\\n \\\"\\\"\\\"\\n 智能工作总结生成脚本。\\n 根据输入的工作内容、项目成果、个人成长等信息,生成结构化的工作总结报告。\\n \\\"\\\"\\\"\\n\\n import sys\\n import json\\n from datetime import datetime\\n\\n def generate_work_summary(work_content, project_achievements, personal_growth, period=\\\"近期\\\", report_style=\\\"正式\\\"):\\n \\\"\\\"\\\"\\n 生成工作总结报告的核心函数。\\n\\n Args:\\n work_content (str): 工作内容描述。\\n project_achievements (str): 项目成果描述。\\n personal_growth (str): 个人成长描述。\\n period (str, optional): 时间段。默认为“近期”。\\n report_style (str, optional): 报告风格。默认为“正式”。\\n\\n Returns:\\n str: 生成的工作总结报告文本。\\n \\\"\\\"\\\"\\n # 根据风格调整模板和措辞\\n style_map = {\\n \\\"正式\\\": {\\n \\\"template\\\": \\\"\\\"\\\"{period}工作总结\\n\\n 一、 主要工作内容\\n {work_content}\\n\\n 二、 项目成果与贡献\\n {project_achievements}\\n\\n 三、 个人成长与收获\\n {personal_growth}\\n\\n 四、 不足与反思\\n (请根据实际情况补充)\\n\\n 五、 未来工作计划\\n (请根据实际情况补充)\\n\\n 总结人:[请填写]\\n {date}\\\"\\\"\\\",\\n \\\"opening\\\": \\\"现将{period}的工作情况总结如下:\\\",\\n \\\"closing\\\": \\\"以上是我对{period}工作的总结,请审阅。\\\"\\n },\\n \\\"简洁\\\": {\\n \\\"template\\\": \\\"\\\"\\\"{period}工作要点\\n\\n • 工作内容:{work_content}\\n • 项目成果:{project_achievements}\\n • 个人成长:{personal_growth}\\n • 后续计划:(待补充)\\\"\\\"\\\",\\n \\\"opening\\\": \\\"{period}主要工作:\\\",\\n \\\"closing\\\": \\\"报告完毕。\\\"\\n },\\n \\\"详细\\\": {\\n \\\"template\\\": \\\"\\\"\\\"{period}详细工作总结报告\\n\\n 1. 工作职责与日常任务完成情况\\n 1.1 概述\\n {work_content}\\n\\n 2. 重点项目参与情况及成果\\n 2.1 项目概述与个人角色\\n {project_achievements}\\n\\n 3. 能力提升与自我学习\\n 3.1 技能提升\\n {personal_growth}\\n\\n 4. 遇到的问题与解决方案\\n (请详细描述)\\n\\n 5. 经验教训与反思\\n (请详细描述)\\n\\n 6. 下一阶段目标与行动计划\\n (请详细规划)\\n\\n 报告人:[请填写]\\n 日期:{date}\\\"\\\"\\\",\\n \\\"opening\\\": \\\"本报告旨在详细梳理{period}的工作表现、成果与成长。\\\",\\n \\\"closing\\\": \\\"此报告为{period}工作的全面回顾与展望。\\\"\\n }\\n }\\n\\n if report_style not in style_map:\\n report_style = \\\"正式\\\"\\n print(f\\\"警告:未识别的报告风格 '{report_style}',已使用默认风格‘正式’。\\\", file=sys.stderr)\\n\\n style_config = style_map[report_style]\\n current_date = datetime.now().strftime(\\\"%Y年%m月%d日\\\")\\n\\n # 构建报告\\n report = style_config['template'].format(\\n period=period,\\n work_content=work_content,\\n project_achievements=project_achievements,\\n personal_growth=personal_growth,\\n date=current_date\\n )\\n\\n # 可选的增强:在报告开头或结尾插入风格化的开场/结束语\\n # 例如:report = style_config['opening'].format(period=period) + \\\"\\\\n\\\\n\\\" + report\\n # 例如:report = report + \\\"\\\\n\\\\n\\\" + style_config['closing'].format(period=period)\\n\\n return report\\n\\n if __name__ == \\\"__main__\\\":\\n # 示例:从命令行参数或标准输入读取JSON数据\\n # 这里使用简单的示例输入\\n if len(sys.argv) > 1:\\n try:\\n input_data = json.loads(sys.argv[1])\\n except json.JSONDecodeError:\\n print(\\\"错误:输入参数不是有效的JSON格式。\\\", file=sys.stderr)\\n sys.exit(1)\\n else:\\n # 默认示例数据\\n input_data = {\\n \\\"work_content\\\": \\\"负责日常客户需求沟通与文档维护,参与产品功能设计讨论。\\\",\\n \\\"project_achievements\\\": \\\"作为核心成员完成‘数据可视化看板’项目,用户满意度调查得分提升25%。\\\",\\n \\\"personal_growth\\\": \\\"系统学习了前端框架Vue.js的基础知识,并成功应用于一个小型内部工具的开发。\\\",\\n \\\"period\\\": \\\"本季度\\\",\\n \\\"report_style\\\": \\\"正式\\\"\\n }\\n print(\\\"信息:使用内置示例数据。\\\", file=sys.stderr)\\n\\n # 提取参数,提供默认值\\n work_content = input_data.get(\\\"work_content\\\", \\\"\\\")\\n project_achievements = input_data.get(\\\"project_achievements\\\", \\\"\\\")\\n personal_growth = input_data.get(\\\"personal_growth\\\", \\\"\\\")\\n period = input_data.get(\\\"period\\\", \\\"近期\\\")\\n report_style = input_data.get(\\\"report_style\\\", \\\"正式\\\")\\n\\n if not work_content and not project_achievements and not personal_growth:\\n print(\\\"错误:工作内容、项目成果、个人成长至少需要提供一项信息。\\\", file=sys.stderr)\\n sys.exit(1)\\n\\n # 生成报告\\n summary_report = generate_work_summary(work_content, project_achievements, personal_growth, period, report_style)\\n print(summary_report)\\n - type: file\\n name: README.md\\n content: |\\n # 脚本目录说明\\n\\n 本目录包含“智能工作总结”技能的核心处理脚本。\\n\\n ## 文件列表\\n 1. `generate_summary.py`: 主生成脚本。根据输入参数,调用模板生成工作总结报告。\\n\\n ## 使用方式\\n ### 直接运行(示例)\\n ```bash\\n python generate_summary.py\\n ```\\n 将使用内置的示例数据生成一份报告。\\n\\n ### 通过JSON输入运行\\n ```bash\\n python generate_summary.py '{\\\"work_content\\\":\\\"...\\\", \\\"project_achievements\\\":\\\"...\\\", \\\"personal_growth\\\":\\\"...\\\", \\\"period\\\":\\\"本月\\\", \\\"report_style\\\":\\\"简洁\\\"}'\\n ```\\n\\n ### 作为模块导入\\n ```python\\n from generate_summary import generate_work_summary\\n report = generate_work_summary(work_content=\\\"...\\\", ...)\\n ```\\n\\n ## 依赖\\n 本脚本仅依赖Python标准库,无需额外安装包。\\n```";
|
||
|
||
// 模式1:还原为原字符
|
||
String result1 = removeEscapeCharacters(testStr);
|
||
System.out.println("还原模式结果:\n" + result1);
|
||
// 输出:
|
||
// Hello
|
||
// World "Java"\转义符(回车)
|
||
|
||
// 模式2:直接删除转义符
|
||
String result2 = removeEscapeCharacters(testStr, true);
|
||
System.out.println("\n删除模式结果:" + result2);
|
||
// 输出:HelloWorld"Java"转义符
|
||
}
|
||
}
|