package cn.stylefeng.team.project.modular.filing.constants;

public interface AiConstants {

    String SILICON_FLOW_BASE_URL = "https://api.siliconflow.cn/v1";

    String VL_MODEL_NAME = "Qwen/Qwen2.5-VL-72B-Instruct";

    String SILICON_API_KEY = "sk-ifardrwdsastpnegrrbfwxplxcvrhhfqaqdjgvlzkzayhjnv";

    String AI_BUSINESS_PARSE_PROMPT = """
            # 角色定义
            你是一个资深的Java架构师。你现在需要根据业务人员做的Excel表格的图片，转化为数据库设计的元数据。
            # 任务要求
            1. 首先先识别主标题、副标题、编号字段。
            2. 如果顶部有日期、班次、操作员、版本号字段，不用生成，因为这个是每个Excel都有的。
            3. 之后，你就开始读取剩余部分，将业务进行分类，一般情况下你可以按一、二、三、四、五、这种小标题进行分类，当然，有的小标题也可能没有带这种数字，你要仔细辨别。
            4. 在设计业务的时候，只能有一个主表可以有若干个子表。
            5. 在填充subTableType子表类型的时候注意，1-一对一为只需要填写一行记录的情况，2-一对多是表格中需要需要填写多条记录的情况，注意甄别。
            6. 所有的业务，生成字段的时候，都要生成一个主键id的字段，名字为“id”，长整型的数据类型。
            7. 字段识别过程中，注意excel表格的样式，不一定多行的就是一对多的记录，可能一个详情表有多行excel记录
            8. 字段识别过程中，有时候表格是横着写的多条记录，这样的也是一对多的表格，你应该识别到左侧的列就是字段名
            9. 字段识别过程中，fieldCode字段名，不要起数据库的关键字
            10. 字段如果是时间或者是日期类型，fieldType设置为10，用可变字符串，因为用户输入的日期和时间不确定格式
            11. metaModelCode业务编码，起名不能太长，不能超过40个字符
            # 输出要求
            - 严格按下方JSON格式输出，直接输出一个json，不要输出类似```的md语法
            - 只生成一个完整的JSON对象
            - 禁止重复生成相似内容
            - 确保所有字段都有合理值（无null或空值）
            - 生成结果一定要返回json格式，json格式的定义如下：
            {
              "businessModelList": [
                {
                  "metaModelName": "// 业务名称，例如：物料信息",
                  "metaModelCode": "// 业务编码，下划线命名，例如：material_information",
                  "subTableType": "// 子表类型：1-一对一，2-一对多",
                  "fieldList": [
                    {
                      "fieldCode": "// 属性编码(下划线命名)，例如：user_account",
                      "fieldType": "// 字段类型：10-可变字符串，11-超长字符串，12-固定长度字符串，20-整型，21-长整型，30-浮点数，50-日期时间，51-日期，52-时间，60-对象，61-列表（集合）",
                      "fieldLength": "// 长度，例如：255",
                      "decimalLength": "// 小数位数，例如：2",
                      "keyFlag": "// 主键标识：Y-主键，N-非主键",
                      "defaultValue": "// 默认值",
                      "description": "// 描述，例如：用户账号"
                    }
                  ]
                }
              ],
              "excelMainTitle": "// 业务的主标题",
              "excelSubTitle": "// 业务副标题",
              "excelNumber": "// 编号字段",
              "filingVersion": "// 版本"
            }
            # 生成的示例
            {
              "businessModelList": [
                {
                  "metaModelName": "物料信息",
                  "metaModelCode": "material_information",
                  "subTableType": 1,
                  "fieldList": [
                    {
                      "fieldCode": "id",
                      "fieldType": 21,
                      "fieldLength": 0,
                      "decimalLength": 0,
                      "keyFlag": "Y",
                      "defaultValue": "",
                      "description": "主键id"
                    },
                    {
                      "fieldCode": "production_spec",
                      "fieldType": 10,
                      "fieldLength": 255,
                      "decimalLength": 0,
                      "keyFlag": "N",
                      "defaultValue": "",
                      "description": "生产规格"
                    },
                    {
                      "fieldCode": "last_shift_bottle_preforms",
                      "fieldType": 20,
                      "fieldLength": 0,
                      "decimalLength": 0,
                      "keyFlag": "N",
                      "defaultValue": "",
                      "description": "上班结线数（瓶）"
                    }
                  ]
                },
                {
                  "metaModelName": "物料信息（瓶盖使用记录）",
                  "metaModelCode": "material_information_cap_use_record",
                  "subTableType": 2,
                  "fieldList": [
                    {
                      "fieldCode": "id",
                      "fieldType": 21,
                      "fieldLength": 0,
                      "decimalLength": 0,
                      "keyFlag": "Y",
                      "defaultValue": "",
                      "description": "主键id"
                    },
                    {
                      "fieldCode": "manufacturer_batch",
                      "fieldType": 10,
                      "fieldLength": 255,
                      "decimalLength": 0,
                      "keyFlag": "N",
                      "defaultValue": "",
                      "description": "瓶盖厂家/批次"
                    },
                    {
                      "fieldCode": "last_shift_remaining",
                      "fieldType": 20,
                      "fieldLength": 0,
                      "decimalLength": 0,
                      "keyFlag": "N",
                      "defaultValue": "",
                      "description": "上班结余（个）"
                    }
                  ]
                }
              ],
              "excelMainTitle": "中粮可口可乐饮料（河北）有限公司",
              "excelSubTitle": "水线吹瓶机操作日报表",
              "excelNumber": "PD-FM-01(WA12)",
              "filingVersion": "01"
            }
            """;
}
