feat(asset-ai): add contextual analysis and unmet-demand feedback

This commit is contained in:
shishengliang
2026-09-23 16:01:10 +08:00
parent 0a32392215
commit 7e9760f5db
23 changed files with 5160 additions and 835 deletions
+281
View File
@@ -1287,3 +1287,284 @@
.aq-shell {
z-index: 110 !important;
}
/* Analysis controls are scoped to the assistant; the classic asset page is unchanged. */
.aq-breadcrumbs,
.aq-analysis-controls,
.aq-exceptions {
display: flex;
gap: 8px;
flex-wrap: wrap;
margin: 12px 0;
align-items: center;
}
.aq-breadcrumbs button,
.aq-analysis-controls select,
.aq-analysis-controls > button,
.aq-gap-panel button,
.aq-gap-panel select {
border: 1px solid var(--aq-line);
border-radius: 8px;
padding: 7px 10px;
background: var(--aq-bg);
color: var(--aq-ink);
font-size: 12px;
max-width: 100%;
}
.aq-breadcrumbs button {
max-width: 260px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.aq-analysis-controls {
padding: 0 18px;
}
.aq-analysis-controls label {
display: flex;
gap: 6px;
align-items: center;
font-size: 12px;
color: var(--aq-muted);
}
.aq-result-filters {
padding: 0 18px;
flex-wrap: wrap;
}
.aq-insights {
padding: 12px 20px 12px 36px;
margin: 0;
font-size: 13px;
line-height: 1.9;
color: var(--aq-ink);
}
.aq-exceptions {
padding: 0 18px;
}
.aq-exceptions button {
border: 1px solid var(--aq-line);
background: var(--aq-bg);
border-radius: 8px;
padding: 10px;
color: var(--aq-muted);
font-size: 12px;
}
.aq-exceptions strong {
display: block;
color: var(--aq-ink);
margin-top: 5px;
font-size: 17px;
}
.aq-result-active > .aq-result-card {
border-color: #668874;
}
.aq-gap-panel {
padding: 24px;
max-width: 960px;
margin: auto;
color: var(--aq-ink);
}
.aq-gap-panel p {
font-size: 12px;
line-height: 1.8;
color: var(--aq-muted);
}
.aq-gap-item {
border: 1px solid var(--aq-line);
padding: 16px;
border-radius: 12px;
margin: 12px 0;
overflow-wrap: anywhere;
}
.aq-gap-item strong {
font-size: 14px;
font-weight: 500;
}
.aq-gap-item label {
font-size: 12px;
}
.aq-shell button:disabled {
cursor: default;
opacity: 0.55;
}
.aq-gap-panel .aq-card-top {
padding: 0;
gap: 12px;
}
@media (max-width: 760px) {
.aq-analysis-controls {
padding: 0 12px;
align-items: stretch;
}
.aq-analysis-controls label {
flex: 1 1 45%;
flex-direction: column;
align-items: stretch;
}
.aq-breadcrumbs button {
max-width: 180px;
}
.aq-gap-panel {
padding: 16px;
}
.aq-exceptions {
padding: 0 12px;
}
.aq-exceptions button {
flex: 1;
}
.aq-card-foot {
flex-wrap: wrap;
}
}
.aq-exceptions button {
flex-direction: column;
align-items: flex-start;
line-height: 1.5;
min-width: 0;
}
.aq-exceptions strong {
white-space: nowrap;
}
/* Keep the current answer readable as the conversation grows. */
.aq-collapsed-answer {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
padding: 12px 14px;
border: 1px solid var(--aq-line);
border-radius: 12px;
background: var(--aq-inset);
color: var(--aq-muted);
text-align: left;
}
.aq-collapsed-answer > span {
flex: 1;
min-width: 0;
}
.aq-collapsed-answer strong {
display: block;
color: var(--aq-ink);
font-size: 13px;
margin-bottom: 4px;
}
.aq-collapsed-answer > span > span {
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
font-size: 12px;
line-height: 1.7;
}
.aq-collapsed-answer > svg {
flex-shrink: 0;
}
.aq-collapse-link {
margin-left: auto;
color: var(--aq-muted);
font-size: 11px;
padding: 4px;
}
.aq-advanced-controls {
border-top: 1px solid var(--aq-line);
padding-top: 10px;
}
.aq-advanced-controls > summary {
margin: 0 18px;
color: var(--aq-muted);
font-size: 12px;
cursor: pointer;
padding: 4px 0;
}
.aq-interpretation {
font-size: 12px;
color: var(--aq-muted);
margin: 8px 0;
}
.aq-interpretation > summary {
cursor: pointer;
}
.aq-interpretation p {
padding: 6px 0;
line-height: 1.8;
}
.aq-gap-note,
.aq-context-note {
color: var(--aq-muted);
font-size: 12px;
line-height: 1.8;
margin: 8px 0;
}
.aq-answer {
white-space: pre-wrap;
}
.aq-followups {
margin-top: 14px;
}
.aq-context {
flex-wrap: wrap;
}
.aq-filter-chip,
.aq-topic-button {
display: inline-flex;
gap: 5px;
align-items: center;
border: 1px solid var(--aq-line);
border-radius: 6px;
background: var(--aq-inset);
color: var(--aq-muted);
padding: 3px 6px;
font-size: 11px;
max-width: 100%;
overflow-wrap: anywhere;
}
.aq-filter-chip > svg,
.aq-topic-button > svg {
flex-shrink: 0;
}
.aq-topic-button {
margin-left: auto;
border-color: transparent;
background: none;
}
.aq-topic-notice {
display: flex;
gap: 6px;
align-items: center;
color: var(--aq-muted);
font-size: 11px;
margin: 0 0 8px;
}
.aq-context > span {
overflow-wrap: anywhere;
}
.aq-model {
white-space: nowrap;
}
@media (max-width: 600px) {
.aq-conversation {
scroll-padding-top: 8px;
}
.aq-collapsed-answer {
padding: 10px;
}
.aq-topic-button {
margin-left: 0;
}
.aq-context {
max-height: 90px;
overflow-y: auto;
}
.aq-followups > button {
white-space: normal;
text-align: left;
line-height: 1.5;
}
}
.aq-error.aq-stopped {
color: var(--aq-muted);
border-color: var(--aq-line);
background: var(--aq-inset);
}