feat: implement task queue statistics and add UI templates for job management and visualization.
This commit is contained in:
@@ -13,6 +13,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
md "github.com/JohannesKaufmann/html-to-markdown/v2"
|
||||
"github.com/hireme/hireme/internal/crawler"
|
||||
"golang.org/x/net/html"
|
||||
)
|
||||
@@ -130,17 +131,27 @@ func (g *GoogleCrawler) FetchJobDetail(ctx context.Context, applyURL string) (*c
|
||||
location = "See Job Posting"
|
||||
}
|
||||
|
||||
// Raw content: render the <main> container HTML
|
||||
var buf bytes.Buffer
|
||||
// Raw content: extract <main> HTML, convert to Markdown for LLM efficiency
|
||||
var rawMarkdown string
|
||||
doc, parseErr := html.Parse(strings.NewReader(htmlContent))
|
||||
if parseErr == nil {
|
||||
if main := findElement(doc, "main"); main != nil {
|
||||
_ = html.Render(&buf, main)
|
||||
if mainEl := findElement(doc, "main"); mainEl != nil {
|
||||
var buf bytes.Buffer
|
||||
_ = html.Render(&buf, mainEl)
|
||||
converted, convErr := md.ConvertString(buf.String())
|
||||
if convErr == nil && len(converted) > 50 {
|
||||
rawMarkdown = converted
|
||||
}
|
||||
}
|
||||
}
|
||||
if buf.Len() < 100 {
|
||||
buf.Reset()
|
||||
buf.WriteString(htmlContent)
|
||||
if rawMarkdown == "" {
|
||||
// Fallback: convert the whole page
|
||||
converted, convErr := md.ConvertString(htmlContent)
|
||||
if convErr == nil {
|
||||
rawMarkdown = converted
|
||||
} else {
|
||||
rawMarkdown = htmlContent
|
||||
}
|
||||
}
|
||||
|
||||
return &crawler.ExtractedJob{
|
||||
@@ -149,7 +160,7 @@ func (g *GoogleCrawler) FetchJobDetail(ctx context.Context, applyURL string) (*c
|
||||
Company: company,
|
||||
Location: location,
|
||||
ApplyURL: applyURL,
|
||||
RawContent: buf.String(),
|
||||
RawContent: rawMarkdown,
|
||||
}, nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user