feat(open-api): 新增对外开放接口及项目日报同步功能

- 新增项目日报表及其防重唯一索引,支持外部系统同步日报数据
- 添加项目日报实体类及对应 Mapper 和 XML 配置
- 新增对外开放接口控制器 OpenApiController,实现项目列表查询及日报同步接口
- 实现 OpenApiService 服务及其实现类,包含用户项目查询和日报防重同步逻辑
- 扩展 ProjectMapper,支持根据用户名查询用户关联项目列表
- 配置 SaToken 过滤白名单,放行 /api/open/** 路径无登录验证
- 引入 spring-boot-starter-validation 依赖,支持请求参数校验
- 创建数据传输对象 DailyReportSyncDTO,带参数校验注解
- 日志记录和异常处理增强,保证数据同步和查询的健壮性
This commit is contained in:
2026-03-31 15:45:36 +08:00
parent 135e723c64
commit 88c9fe5e06
13 changed files with 541 additions and 1 deletions

View File

@@ -1337,4 +1337,30 @@ INSERT INTO sys_config (config_key, config_value, config_type, description) VALU
('ai.embedding.model', 'text-embedding-v4', 'ai', '向量嵌入模型'),
('ai.embedding.dimension', '1024', 'ai', '向量维度'),
('ai.rag.top_k', '5', 'ai', 'RAG检索返回数量'),
('ai.rag.similarity_threshold', '0.7', 'ai', 'RAG相似度阈');
('ai.rag.similarity_threshold', '0.7', 'ai', 'RAG相似度阈');
-- =====================================================
-- 项目日报表(供外部系统同步日报数据)
-- 防重键: (project_id, report_date, submitter_username)
-- =====================================================
CREATE TABLE IF NOT EXISTS project_daily_report (
id BIGSERIAL PRIMARY KEY,
project_id BIGINT NOT NULL,
submitter_username VARCHAR(100) NOT NULL,
submitter_id BIGINT,
report_date DATE NOT NULL,
work_content TEXT,
tomorrow_plan TEXT,
work_intensity INTEGER CHECK (work_intensity BETWEEN 1 AND 5),
need_help BOOLEAN DEFAULT FALSE,
help_content TEXT,
create_time TIMESTAMP DEFAULT NOW(),
update_time TIMESTAMP DEFAULT NOW(),
deleted INTEGER DEFAULT 0,
CONSTRAINT uq_daily_report UNIQUE (project_id, report_date, submitter_username)
);
COMMENT ON TABLE project_daily_report IS '项目日报(外部同步)';
COMMENT ON COLUMN project_daily_report.submitter_username IS '提交人用户名 (对应 sys_user.username)';
COMMENT ON COLUMN project_daily_report.work_intensity IS '工作强度: 1-轻松 2-较轻 3-适中 4-繁忙 5-非常繁忙';